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

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

為了學習,我正在編寫自己的快取 DNS 伺服器(類似於 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 覆蓋它。這是我應該這樣做的方式,還是有更好的方法?

答案1

chattr 會起作用。它告訴 NM 不去管 resolv.conf。或者,請參閱rc-managerman NetworkManager.conf

NM 總是會寫入 var/run 中的內部 resolv.conf,所以你可以抓取它。或您使用nmcli -f all device show,或使用排程器腳本 ( man NetworkManager)。

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

相關內容