分析する

分析する

設定:

Debian jessie デバイスは ppp 経由でインターネットに接続されます。

私たちはsystemd-networkingを使用し、/etc/network/interfaceをまったく使用しません。

systemd-resolved は DNS に使用されます。

バージョン:

systemctl --version
systemd 230
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
armv7l GNU/Linux
kernel 4.4.14-v7+

(バージョンはjessie-backportsのバージョンです)

これはイーサネット+ W-Lanではうまく機能しますが、pppでは失敗します。

理由:カスタム接続スクリプト

0000usepeerdns 000resolvconf

systemd-resolvedが提供するdbusサーバーに接続するのではなく、/etc/resolv.confに書き続けています。

だから私はPPPインターフェースを使ってDNS解決をしようとしています。これは、私が読んだものからDBUSを介してSetLinkDNSを呼び出すことで可能です(リンクは終わり)

インターフェイスIDを取得します(この場合は5)。

ip l
..
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 700 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 3                                                         
link/ppp    
..

リンクインタフェース5の現在の状態を読む

busctl introspect org.freedesktop.resolve1 /org/freedesktop/resolve1/link/_35 |grep DNS 
.DNS                                property  a(iay)    0                 -

インターフェイス5で1つのIPV4アドレスを使用してDNSを設定します。 (google DNSを例にしてみましょう。)(3番目の整数の解釈は何ですか?)

busctl call org.freedesktop.resolve1 /org/freedesktop/resolve1 org.freedesktop.resolve1.Manager SetLinkDNS 'ia(iay)' 5 1 2 4 8 8 8 8
Link ppp0 is managed.

値が読み取られてまだ空であるため、値を挿入できません。

busctl introspect org.freedesktop.resolve1 /org/freedesktop/resolve1/link/_35 |grep DNS 
.DNS                                property  a(iay)    0  

それでは、最終的に動作させるには、どのように追加のデバッグを行うことができますか?

/etc/network/interfacesまたは「通常」/etc/resolv.confに置き換えることはオプションではありません。

私が使用したリソース(より多くのリソースがありますが関連性があります):

systemd Github問題トラッカー

freedesktop wikiネットワーク管理者

Jonathan NeoVPN DNS問題トラッカー

jonathanioのVPN DNS変更スクリプト

ベストアンサー1

この問題は、ネットワークがすでに systemd によって管理されているために発生します。

その /etc/systemd/network/ ファイルで systemd-resolved 管理を無効にします。

デーモンを再ロードして再起動すると、 systemctl daemon-reload systemctl restart systemd-resolved エラーメッセージがLink ppp0 is managed消えました。

私はより多くの内容を読んで、freenode #systemd ircチャンネルに質問し、そこからポインタヘルプを取得し、ソースコードを読んで答えを見つけました。

以下は、インターフェース5のDNSをgoogle DNSに設定します。

busctl call org.freedesktop.resolve1 /org/freedesktop/resolve1 org.freedesktop.resolve1.Manager SetLinkDNS 'ia(iay)' 5 1 2 4 8 8 8 8

おすすめ記事