OpenVPNクライアントそしてシステムソリューション。
OpenVPNクライアントを実行すると、接続してターゲットリソースを正しくロードできます。初回起動中のみ、再起動後。以降のすべての起動では、まだ「初期化順序の完了」にリンクされますが、リソースはロードされません。
数回の試行錯誤の後、これがDNS関連の問題であることがわかりました。
sudo resolvectl status
===>
# 1st launch
Link 6 (tun0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.1.1.7
DNS Servers: 10.1.1.7
DNS Domain: aaa.xyz
# all other ones
Link 6 (tun0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
DNS Domain: aaa.xyz
私は治療法を見つけました:
sudo systemd-resolve -i tun0 \
--set-dns=10.1.1.7 \
--set-domain=aaa.xyz \
--set-dnssec=off
実行する必要があるOpenVPNが再起動するたびに。
自動的に実行するにはどうすればよいですか?
それともむしろ - なぜこれが起こるのですか? OpenVPNの設定方法正しいDNS自動的に?
コンピュータの再起動後に初めてのみ正しく設定されるのはなぜですか?
答え1
ただし、OpenVPNがDNSを設定できるようにフックを追加できますsystemd-resolved
。
~からhttps://github.com/jonathanio/update-systemd-resolved、update-systemd-resolved
スクリプトをつかみ、実行可能としてマークします。
$ sudo wget -O /usr/local/bin/update-systemd-resolved \
https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved \
&& sudo chmod +x /usr/local/bin/update-systemd-resolved
次に、OpenVPN クライアント構成に以下を追加します。
# /etc/openvpn/client/<your config file>.conf
...
script-security 2
setenv PATH /usr/bin
up /usr/local/bin/update-systemd-resolved
down /usr/local/bin/update-systemd-resolved
down-pre
OpenVPNがroot以外のユーザーとして実行されている場合(デフォルトではtrue)、OpenVPNがDBusと対話できるようにするPolicyKitルールを追加する必要があります。
# /etc/polkit-1/rules.d/00-openvpn-resolved.rules
polkit.addRule(function(action, subject) {
if (action.id == 'org.freedesktop.resolve1.set-dns-servers' ||
action.id == 'org.freedesktop.resolve1.set-domains' ||
action.id == 'org.freedesktop.resolve1.set-dnssec') {
if (subject.user == 'openvpn') {
return polkit.Result.YES;
}
}
});
OpenVPNインスタンスが最初の実行でDNSを構成し、後続の実行でDNSを構成できないには、いくつかの理由があります。真実を明らかにするためには、より多くの調査が必要です。