DHCP (NetworkManager 経由) から取得したネームサーバーはどこにありますか?

DHCP (NetworkManager 経由) から取得したネームサーバーはどこにありますか?

学習のために、私は独自のキャッシュ DNS サーバーを作成しています (dnsmasq に似ていますが、Python で作成しています)。NetworkManager は DHCP から上流のネームサーバーを取得し、 に配置します/etc/resolv.conf。私のシステムは、/etc/resolv.confクエリするネームサーバーを見つけるために も参照します。

システムがクエリを実行するように独自の DNS サーバー ( 127.0.0.1)を に配置する必要がありますが、NetworkManager によってファイルが上書きされます。 を上書きしないように NetworkManager を禁止または構成すると、NetworkManager がそこに書き込まないため、DNS サーバーはキャッシュ ネームサーバーを見つけることができません。/etc/resolv.conf/etc/resolv.conf

/etc/resolv.confは へのシンボリックリンクのようです/var/run/NetworkManager/resolv.confので、DNS サーバーに上流サーバーをそこで見つけさせるようにすればいいのではないでしょうか。NetworkManagerchattr -i /etc/resolv.confがそれを上書きしないようにしたいだけです。これが正しいやり方でしょうか、それとももっと良い方法があるでしょうか?

答え1

chattr は機能します。これは NM に resolv.conf をそのままにしておくように指示します。または、 を参照してrc-managerくださいman NetworkManager.conf

NM は常に var/run 内の内部 resolv.conf に書き込むため、それをスクレイピングすることができます。または、 を使用するnmcli -f all device showか、ディスパッチャ スクリプト ( man NetworkManager) を使用します。

最後に、独自の DNS プラグインを作成することもできます。ただし、そのためには NM をソースから再構築する必要があり、プラグイン API も公開されておらず、安定していません。

関連情報