從掛起喚醒後 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 設定在重新啟動後仍然保留。

我使用的是Ubuntu的wireguard,而不是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]

編輯:與啟動板版本相同的問題。

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=~.

雖然這種方法確實為wireguard介面設定了DNS,但係統解析後在喚醒後回退到eth0的DNS。

$ 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僅工作幾秒鐘(喚醒後),然後配置重置並回退到 eth0 的 DNS。

#!/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,嘗試全新安裝。

相關內容