2つのネームサーバーを/etc/resolv.conf
に追加するVPNクライアントを使用しています。すべての接続はネットワークマネージャーによって管理されます。
仕事用のVPNにはこのVPNクライアントを使用する必要がありますが、Ubuntuが16.10でsystemd-resolved
に移動した後、接続とDNSに問題があります。何らかの理由でsystemd-resolved
が/etc/resolv.conf
をデフォルトのネームサーバーに戻すと、内部ページが解決されないようです。私はこれをさらに調べて、resolvconf
をopenresolv
に置き換えました。これは大いに役立ちましたが、VPNがしばらく稼働した後でも、systemd-resolved
は/etc/resolv.conf
をリセットします。
接続が確立された直後か数分後に、またはまったく接続されない場合があります。次に、systemd-resolved
とsystemd resolvconf.service
を無効にして、openresolv
のみを実行しました。それはすべてうまくいくようです。
ただし、これは非常に複雑です。 systemd-resolved
を他のいずれかと使用する理由はありますか? Ubuntu 16.10で有効になったため、理由があるに違いないと思ったが、/etc/resolv.conf
をめぐる戦いを引き起こしているようだ。
operesolv
を実行して、これを説明していただければ幸いです。かなり読みましたが、/etc/resolv.conf
がそのように管理されている理由がまだわかりません。そのためにsystemd
を使用すると、VPNクライアントを使用できません。
UbuntuのOpenVPNでこれらの構成アイテムを処理するスクリプトを変更することができました(18.04でテスト済み)。そのためのパッチを次に示します。
--- /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
OpenVPN構成ファイルに次の項目を追加する必要があります。
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
どのVPNクライアントを使用していますか? OpenVPNで問題がありましたが、NMバージョンのクライアントをインストールすると問題が解決しました。まあ、それらのほとんどは、ルートがプッシュされるのを防ぐことができませんでしたが、それは完全に異なる問題です。
ポイントは、VPNクライアントhas DNSサービスを管理する方法についてsystemdのアイデアと対話する方法を知ることです。これはお勧めしませんが、resolvdサービス(systemctl disable systemd-resolved.service
)を無効にして、改善されるかどうかを確認することもできますが、最終的にはsystemdのcapricesに送信する方法を理解しているクライアントを取得する必要があります:)
(systemd船はかなり前に出航しました。いくつかのことが行われた理由についての議論を開かないようにしましょう。)
私が使用したVPNクライアントの更新は、問題を解決しました(意図した)。 Fortinet VPNのOpenFortiGuiクライアントでした。