Dns

在哪裡可以找到從 DHCP 獲得的名稱伺服器(通過 NetworkManager)?

  • April 11, 2017

為了學習,我正在編寫自己的記憶體 DNS 伺服器(à la dnsmasq,但用 Python 代替)。NetworkManager 從 DHCP 獲取上游名稱伺服器並將它們放在/etc/resolv.conf. 我的系統還查找/etc/resolv.conf要查詢的名稱伺服器。

我需要放置我自己的 DNS 伺服器 ( 127.0.0.1),/etc/resolv.conf以便我的系統會查詢它,但 NetworkManager 會覆蓋該文件。如果我禁止/配置 NetworkManager 不覆蓋/etc/resolv.conf,我的 DNS 伺服器將無法找到記憶體名稱伺服器,因為 NetworkManager 不會將它們寫入那裡。

似乎/etc/resolv.conf符號連結到/var/run/NetworkManager/resolv.conf,所以我想我可以讓我的 DNS 伺服器在那裡找到上游伺服器?我只是chattr -i /etc/resolv.conf為了防止 NetworkManager 覆蓋它。這是我應該這樣做的方式,還是有更好的方法?

chattr 將工作。它告訴 NM 不理會 resolv.conf。或者,請rc-manager參見man NetworkManager.conf

NM 將始終在 var/run 中寫入它的內部 resolv.conf,因此您可以將其刮掉。或者您使用nmcli -f all device show或使用調度程序腳本 ( man NetworkManager)。

最後,您可以編寫自己的 DNS 外掛。但這需要您從原始碼重建 NM,並且外掛 API 也不是公共/穩定的。

引用自:https://unix.stackexchange.com/questions/358413