Estou usando o cliente wireguard com o seguinte script PostUp:
PostUp = systemd-resolve -i %i --set-dns=x.x.x.x --set-domain=~.
systemd-resolve
configurou a configuração de DNS corretamente e 127.0.0.53
conseguiu resolver o domínio.
$ resolvectl status
Link 5 (wg1)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: yes
DNSSEC supported: yes
Current DNS Server: x.x.x.x
DNS Servers: x.x.x.x
DNS Domain: ~.
Mas a configuração de DNS foi redefinida após a suspensão:
$ resolvectl status
Link 5 (wg1)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: yes
DNSSEC supported: yes
Achei umpergunta semelhante, mas trata-se de fazer com que a configuração persista durante a suspensão, não na reinicialização. No meu caso, a configuração de DNS persiste durante a reinicialização.
Estou usando o wireguard do Ubuntu, não o ppa.
$ apt search wireguard
wireguard/eoan,eoan,now 0.0.20190913-1ubuntu1 all [installed]
wireguard-dkms/eoan,eoan,now 0.0.20190913-1ubuntu1 all [installed,automatic]
wireguard-tools/eoan,now 0.0.20190913-1ubuntu1 amd64 [installed,automatic]
Editar: mesmo problema com a versão do launchpad.
wireguard/eoan,eoan,now 0.0.20191012-wg1~eoan all [installed]
wireguard-dkms/eoan,eoan,now 0.0.20191012-wg1~eoan all [installed,automatic]
wireguard-tools/eoan,now 0.0.20191012-wg1~eoan amd64 [installed,automatic]
Tentei várias soluções alternativas, nenhuma delas funcionou.
/etc/systemd/network/wireguard.network
[Match]
Name=wg1
[Network]
DNS=x.x.x.x
Domains=~.
Embora essa abordagem tenha definido o DNS para a interface wireguard, o sistema resolveu o fallback para o DNS da eth0 após a ativação.
$ resolvectl status
Link 5 (wg1)
Current Scopes: none
Current DNS Server: x.x.x.x
DNS Servers: x.x.x.x
Link 2 (eth0)
Current Scopes: DNS
Current DNS Server: y.y.y.y
DNS Servers: y.y.y.y
- Execute um script após ativar a suspensão,
/lib/systemd/system-sleep/wireguard-dns
#!/bin/sh
case $1/$2 in
pre/*)
exit 0
;;
post/*)
# Place your post suspend (resume) commands here
systemd-resolve -i wg1 --set-dns=x.x.x.x --set-domain=~.
;;
esac
Esta solução alternativa não funcionou, a configuração do DNS ainda foi redefinida após a ativação. Verifiquei se o script foi executado (testei com echo "script executed" > /home/user/output
o arquivo estava lá com o texto), mas de alguma forma não teve efeito.
Script semelhante /usr/lib/pm-utils/sleep.d
funcionou apenas por alguns segundos (após a ativação), depois a configuração foi redefinida e o fallback para o DNS da eth0.
#!/bin/sh
case $1 in
thaw|resume)
systemd-resolve -i wg1 --set-dns=x.x.x.x --set-domain=~.
;;
esac
- Tentei outro script de ativação da suspensão, mesmo resultado que não. 1.
#!/bin/sh
if [ "$1" = "pre" ] && [ "$2" = "suspend" ]; then
wg-quick down wg1
elif [ "$1" = "post" ] && [ "$2" = "suspend" ]; then
wg-quick up wg1
fi
Editar: mesmo problema na nova instalação.
Editar: Também afeta 19.04, testado em uma nova instalação.