Dns
在哪裡可以找到從 DHCP 獲得的名稱伺服器(通過 NetworkManager)?
為了學習,我正在編寫自己的記憶體 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 也不是公共/穩定的。