学習のために、私は独自のキャッシュ 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 も公開されておらず、安定していません。