systemd-resolve сбрасывается после выхода из спящего режима

systemd-resolve сбрасывается после выхода из спящего режима

Я использую клиент Wireguard со следующим скриптом PostUp:

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

systemd-resolveправильно установил настройки DNS и 127.0.0.53смог разрешить домен.

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

Но настройки DNS сбрасываются после выхода из спящего режима:

$ 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

Я нашеланалогичный вопрос, но это касается сохранения конфигурации при приостановке, а не перезагрузке. В моем случае настройка DNS сохраняется при перезагрузке.

Я использую Wireguard от Ubuntu, а не 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]

Редактировать: Та же проблема с версией 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]

Я перепробовал несколько вариантов решения проблемы, но ни один из них не сработал.

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

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

Хотя этот подход и устанавливал DNS для интерфейса Wireguard, systemd разрешал откат к DNS eth0 после пробуждения.

$ 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. Запустить скрипт после выхода из спящего режима,/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

Этот обходной путь не сработал, конфигурация DNS все равно сбрасывается после пробуждения. Я проверил, что скрипт действительно выполняется (я проверил с помощью echo "script executed" > /home/user/output, файл был там с текстом), но каким-то образом это не имело никакого эффекта.

Подобный скрипт /usr/lib/pm-utils/sleep.dработал всего несколько секунд (после пробуждения), затем конфигурация сбрасывалась и происходил возврат к DNS eth0.

#!/bin/sh

case $1 in 
        thaw|resume)
                systemd-resolve -i wg1 --set-dns=x.x.x.x --set-domain=~.
        ;;
esac
  1. Попробовал другой сценарий выхода из спящего режима, результат тот же, что и в варианте № 1.
#!/bin/sh

if [ "$1" = "pre" ] && [ "$2" = "suspend" ]; then
    wg-quick down wg1
elif [ "$1" = "post" ] && [ "$2" = "suspend" ]; then
    wg-quick up wg1
fi

Редактировать: Та же проблема при новой установке.

Редактировать: Также касается 19.04, проверено на новой установке.

Связанный контент