設定:
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に置き換えることはオプションではありません。
私が使用したリソース(より多くのリソースがありますが関連性があります):
ベストアンサー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