NetworkManagerを介してDHCPから取得したネームサーバーはどこにありますか?

NetworkManagerを介してDHCPから取得したネームサーバーはどこにありますか?

学ぶために、私は独自のキャッシュDNSサーバーを作成しています(dnsmasqに似ていますが、代わりにPythonで)。 NetworkManagerはDHCPからアップストリームネームサーバーを取得し、それをデプロイします。私のシステムは、照会するネームサーバー/etc/resolv.confも探します。/etc/resolv.conf

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

/etc/resolv.confそこへのシンボリックリンクがあるようですので、/var/run/NetworkManager/resolv.conf私のDNSサーバーにそこからアップストリームサーバーを見つけることができますか?chattr -i /etc/resolv.confNetworkManagerが上書きされないようにしたいと思います。この方法で行う必要がありますか、それとも良い方法がありますか?

答え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はパブリック/安定ではありません。

関連情報