일시 정지 상태에서 깨어난 후 systemd-resolve 재설정

일시 정지 상태에서 깨어난 후 systemd-resolve 재설정

다음 PostUp 스크립트와 함께 Wireguard 클라이언트를 사용하고 있습니다.

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

systemd-resolveDNS 설정을 올바르게 설정했고 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 설정이 유지됩니다.

나는 ppa가 아닌 Ubuntu의 와이어 가드를 사용하고 있습니다.

$ 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에도 영향을 미치며 새로 설치해 보았습니다.

관련 정보