学ぶために、私は独自のキャッシュDNSサーバーを作成しています(dnsmasqに似ていますが、代わりにPythonで)。 NetworkManagerはDHCPからアップストリームネームサーバーを取得し、それをデプロイします。私のシステムは、照会するネームサーバー/etc/resolv.conf
も探します。/etc/resolv.conf
システムがクエリできるように独自のDNSサーバー(127.0.0.1
)を配置する必要がありますが、NetworkManagerはファイルを上書きします。/etc/resolv.conf
上書きせずにNetworkManagerを無効/構成すると、/etc/resolv.conf
NetworkManagerはキャッシュされたネームサーバーをそこに記録しないため、DNSサーバーはキャッシュされたネームサーバーを見つけることができません。
/etc/resolv.conf
そこへのシンボリックリンクがあるようですので、/var/run/NetworkManager/resolv.conf
私のDNSサーバーにそこからアップストリームサーバーを見つけることができますか?chattr -i /etc/resolv.conf
NetworkManagerが上書きされないようにしたいと思います。この方法で行う必要がありますか、それとも良い方法がありますか?
答え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はパブリック/安定ではありません。