reinicio de systemd-resolve después de despertar de la suspensión

reinicio de systemd-resolve después de despertar de la suspensión

Estoy usando el cliente Wireguard con el siguiente script PostUp:

PostUp = systemd-resolve -i %i --set-dns=x.x.x.x --set-domain=~.

systemd-resolveconfiguré la configuración DNS correctamente y 127.0.0.53pude resolver el dominio.

$ 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: ~.

Pero la configuración de DNS se restablece después de la reactivación de la suspensión:

$ 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

Encontre unpregunta similar, pero se trata de hacer que la configuración persista durante la suspensión, no durante el reinicio. En mi caso, la configuración de DNS persiste durante el reinicio.

Estoy usando wireguard de Ubuntu, no 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: el mismo problema con la versión de 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]

Probé varias soluciones, ninguna funcionó.

  1. /etc/systemd/network/wireguard.network
[Match]
Name=wg1

[Network]
DNS=x.x.x.x
Domains=~.

Si bien este enfoque configuró el DNS para la interfaz Wireguard, el sistema resolvió el respaldo al DNS de eth0 después de la reactivación.

$ 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
  1. Ejecute un script después de despertar de la suspensión,/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 solución no funcionó, la configuración de DNS aún se restablece después de la reactivación. Verifiqué que el script se ejecutó (probé con echo "script executed" > /home/user/output, el archivo estaba allí con el texto), pero de alguna manera no tuvo ningún efecto.

Un script similar /usr/lib/pm-utils/sleep.dsolo funcionó durante unos segundos (después de despertar), luego la configuración se restableció y volvió al DNS de eth0.

#!/bin/sh

case $1 in 
        thaw|resume)
                systemd-resolve -i wg1 --set-dns=x.x.x.x --set-domain=~.
        ;;
esac
  1. Intenté con otro script para reactivar desde la suspensión, con el mismo resultado que el no. 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: el mismo problema en una instalación nueva.

Editar: también afecta a 19.04, probado en una instalación nueva.

información relacionada