Používám klienta VPN, který přidává dva jmenné servery do /etc/resolv.conf
. Všechna moje připojení spravuje Network-Manager.
Musím používat tohoto VPN klienta pro svou pracovní VPN, ale poté, co Ubuntu přešlo na systemd-resolved
v 16.10 mám problémy s připojením a DNS. Vypadá to jako systemd-resolved
změny /etc/resolv.conf
zpět na výchozí jmenné servery z nějakého důvodu, kvůli kterému se interní stránky nevyřeší. Podíval jsem se na to více a skončil jsem nahrazením resolvconf
pomocí openresolv
. To hodně pomohlo, ale stále systemd-resolved
resetuje /etc/resolv.conf
poté, co byla VPN nějakou dobu v provozu.
Mohlo by to být právě ve chvíli, kdy je připojení aktivní nebo po několika minutách nebo někdy vůbec. Poté jsem zakázal systemd-resolved
a systemd resolvconf.service
a spusťte pouze openresolv
. Zdá se, že vše funguje dobře.
To vše je však velmi matoucí. Existuje důvod pro použití systemd-resolved
s jedním z ostatních? Bylo to povoleno v Ubuntu 16.10, takže jsem si myslel, že pro to musí být důvod, ale zdá se, že to způsobuje boj o /etc/resolv.conf
.
Bylo by skvělé, kdybych mohl spustit operesolv
a nechat si to vysvětlit. Načetl jsem o tom docela dost, ale stále nechápu, proč /etc/resolv.conf
je spravován tak, jak je, pouze když používám systemd
kvůli tomu nemohu použít svého klienta VPN.
Přijatá odpověď:
Podařilo se mi změnit skript, který zpracovává tyto konfigurační položky v OpenVPN v Ubuntu (testováno 18.04). Zde je záplata:
--- /etc/openvpn/update-resolv-conf.orig 2019-03-13 19:14:16.163914424 +0400
+++ /etc/openvpn/update-resolv-conf 2019-03-13 19:29:30.380420708 +0400
@@ -15,7 +15,7 @@
# foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
#
-[ -x /sbin/resolvconf ] || exit 0
+[ -x /usr/bin/systemd-resolve ] || exit 0
[ "$script_type" ] || exit 0
[ "$dev" ] || exit 0
@@ -43,16 +43,16 @@
fi
done
R=""
- [ "$SRCHS" ] && R="search $SRCHS
-"
+ for SRCH in $SRCHS ; do
+ R="${R}--set-domain=$SRCH "
+ done
for NS in $NMSRVRS ; do
- R="${R}nameserver $NS
-"
+ R="${R}--set-dns=$NS "
done
- echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
+ /usr/bin/systemd-resolve -i ${dev} ${R}
;;
down)
- /sbin/resolvconf -d "${dev}.openvpn"
+ echo "Doing nothing, interface disappears."
;;
esac
Do konfiguračního souboru OpenVPN budete muset přidat následující položky:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf