내 Wireguard 연결을 확인하는 스크립트를 실행하는 시스템 서비스가 있습니다. 서비스 파일은 다음과 같습니다.
[Unit]
Description=Check the wg status and restart it if necessary
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/home/checkwg.sh
[Install]
WantedBy=multi-user.target
스크립트는 checkwg.sh
다음과 같습니다.
#!/bin/bash
wgout=$(wg show)
if [[ ! -n $wgout ]] # check to see if there is an active wg connection
then
echo "wg appears down, reactivating..."
wg-quick up myvpn # This line throws "Temporary failure in name resolution"
else
echo "wg is up"
fi
wg가 시작되었는지 확인하는 if 문이 있습니다. 시작되지 않으면 실행됩니다 wg-quick up myvpn
.
스크립트는 루트로 실행할 때 작동합니다(저는 Dietpi를 사용하고 있으므로 사용자 루트는 하나만 있습니다). 출력은 다음과 같습니다.
./checkwg.sh
wg appears down, reactivating...
[#] ip link add myvpn type wireguard
[#] wg setconf myvpn /dev/fd/63
[#] ip address add 10.0.4.54 dev myvpn
[#] ip link set mtu 1420 up dev myvpn
[#] ip route add 10.0.0.1/32 dev myvpn
[#] wg set myvpn fwmark 51820
checkwg.service
하지만 ( running 을 통해 ) 실행하려고 하면 다음과 같은 결과 systemctl restart checkwg
가 나타납니다.
systemctl restart checkwg
journalctl -fu checkwg.service
May 17 10:22:30 camera systemd[1]: Started Check the wg status and restart it if necessary.
May 17 10:22:30 camera checkwg.sh[23181]: wg appears down, reactivating...
May 17 10:22:31 camera checkwg.sh[23181]: [#] ip link add myvpn type wireguard
May 17 10:22:31 camera checkwg.sh[23181]: [#] wg setconf myvpn /dev/fd/63
May 17 10:22:31 camera checkwg.sh[23181]: Temporary failure in name resolution: `myvpn.myhost.com:5555'. Trying again in 1.50 seconds...
May 17 10:22:32 camera checkwg.sh[23181]: Temporary failure in name resolution: `myvpn.myhost.com:5555'. Trying again in 2.25 seconds...
May 17 10:22:34 camera checkwg.sh[23181]: Temporary failure in name resolution: `myvpn.myhost.com:5555'. Trying again in 3.38 seconds...
시스템에서는 내 호스트를 확인할 수 없는데 루트에서는 해결할 수 있는 이유는 무엇입니까? 나는 wg-quick up myvpn
이것을 다음과 같이 교체할 때 ping google.com
동일한 오류가 발생하기 때문에 이것이 와이어가드 문제가 아니라고 확신합니다 .Temporary failure in name resolution
답변1
시스템을 Fedora 38로 업그레이드한 후에도 동일한 문제가 발생했습니다. 다음을 추가하여 문제를 해결했습니다.
LoadCredential=network.dns
해당 [Service]
섹션 아래에 있습니다.
건배, 제인.