systemd-resolved、resolvconf.service、resolvconf、openresolv。なぜ、どのように、そしてどのように?


12

2つのネームサーバーをに追加するVPNクライアントを使用しています/etc/resolv.conf。すべての接続はNetwork-Managerによって管理されています。

私は仕事用のVPNにこのVPNクライアントを使用する必要がありますが、Ubuntuがsystemd-resolved16.10に移行した後、接続と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クライアントを使用できないだけです。


FWIW resolvconf.serviceは、systemdがresolvconfを操作する方法です。どのVPNクライアントを使用していますか?systemd-resolvedを使用した場合、resolv.confはプライベート/run/systemd/resolve/resolv.confファイルへのシンボリックリンクになります。systemd-networkdに接続を管理させることもできます。
pbhj 2017年

回答:


1

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

0

どのVPNクライアントを使用していますか?私はまっすぐなOpenVPNで問題を抱えていましたが、クライアントのNMバージョンをインストールすると問題が解決しました。まあ、それらのほとんどは、ルートがプッシュされるのを防ぐことはできませんでしたが、それはまったく別の問題です。

ポイントは、VPNクライアント、systemdのDNSサービスの管理方法のアイデアと対話する方法を知っている必要があることです。これはお勧めしませんが、解決されたサービス(systemctl disable systemd-resolved.service)を無効にして改善されるかどうかを確認することはできますが、最終的にはsystemdのcapricesに送信する方法を理解しているクライアントを取得する必要があります:)

(systemd船はずっと前に出航しました。なぜいくつかのことが行われたのかについての議論を開かないでください。)


この問題は、VPNクライアントのアップデートで解決されました。それは私の仕事Fortinet VPNのOpenFortiGuiクライアントでした。クライアントはsystemdを習得しました!:)
クリスチャン

0

私が使用したVPNクライアントへのアップデートは、問題を解決しました(意図的に)。これは、Fortinet VPNのOpenFortiGuiクライアントでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.