学ぶために、私は独自のキャッシングDNSサーバーを作成しています(àladnsmasqですが、代わりにPython)です。DHCPから、NetworkManagerはアップストリームネームサーバーを取得し、それらを/etc/resolv.conf
に配置します。私のシステムまた、/etc/resolv.conf
を調べて、クエリするネームサーバーを見つけます。
自分のDNSサーバー(127.0.0.1
)を/etc/resolv.conf
に配置して、システムがクエリを実行するようにする必要がありますが、NetworkManagerがファイルを上書きします。 NetworkManagerが/etc/resolv.conf
を上書きしないように許可/設定しないと、NetworkManagerがキャッシュネームサーバーを書き込まないため、DNSサーバーはキャッシュネームサーバーを見つけることができません。
/etc/resolv.conf
は/var/run/NetworkManager/resolv.conf
にシンボリックリンクしているようです。そのため、DNSサーバーにアップストリームサーバーを見つけてもらうことができると思いますか? NetworkManagerが上書きしないようにchattr -i /etc/resolv.conf
するだけです。これは私がそれをすることになっている方法ですか、それともより良い方法がありますか?
chattrは機能します。 NM resolv.confをそのままにしておくように指示します。または、rc-manager
のman NetworkManager.conf
を参照してください。
NMは常にvar/runの内部resolv.confに書き込むので、それをスクレイプすることができます。または、nmcli -f all device show
を使用するか、ディスパッチャスクリプト(man NetworkManager
)を使用します。
最後に、独自のDNSプラグインを作成できます。ただし、ソースからNMを再構築する必要があり、プラグインAPIもパブリック/安定ではありません。