web-dev-qa-db-ja.com

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

学ぶために、私は独自のキャッシング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するだけです。これは私がそれをすることになっている方法ですか、それともより良い方法がありますか?

1
Luc

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

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

最後に、独自のDNSプラグインを作成できます。ただし、ソースからNMを再構築する必要があり、プラグインAPIもパブリック/安定ではありません。

4
thaller