為什麼 resolv.conf 不記得 dns 位址?

為什麼 resolv.conf 不記得 dns 位址?

我已經安裝dnsmasq並添加nameserver 127.0.0.1到該resolv.conf文件中,以便我可以在我的 apache 配置中使用通配符。但每次我重新啟動電腦或更改 Wi-Fi 連線時,我都必須重新添加它才能正常工作。

為什麼會發生這種情況以及我怎麼能讓它發揮作用?

答案1

如果您執行的是 12.04 之前的 Ubuntu 系統,且尚未升級到 12.04 或更高版本,或者您已刪除 resolvconf 軟體包,請安裝 resolvconf 軟體包。

sudo apt-get install resolvconf

如果已安裝 resolvconf,請確保 /etc/resolv.conf 是指向 ../run/resolvconf/resolv.conf 的符號連結。

sudo dpkg-reconfigure resolvconf

安裝 dnsmasq 軟體套件(不要與 dnsmasq-base 軟體包混淆)後,您不需要編輯 /etc/resolv.conf。當 dnsmasq 啟動時,dnsmasq 初始化腳本會(透過 resolvconf)將「127.0.0.1」加到 resolv.conf,前提是未在 /etc/default/dnsmasq 中IGNORE_RESOLVCONF設定的值。yes

懷疑者請閱讀/etc/init.d/dnsmasq。

PS 在 Ubuntu 12.04 中存在著一個複雜的因素。 NetworkManager 預設啟動一個 dnsmasq 進程,專門偵聽 127.0.0.1。這與「獨立」dnsmasq 進程衝突;兩者中只有一個可以啟動。這是一個已知錯誤 #959037,已在 Ubuntu 12.10 中修復(透過將 NM-dnsmasq 的監聽位址移至 127.0.1.1)。如果您仍在執行 Ubuntu 12.04 並且想要執行獨立 dnsmasq,那麼您應該停用 NetworkManager 控制的 dnsmasq(透過在 /etc/NetworkManager/NetworkManager.conf 中註解掉「dns=dnsmasq」)或將獨立 dnsmasq 配置為不執行在127.0.0.1 收聽。

答案2

您需要在網路管理員中指定您的首選 DNS 伺服器。否則,它將繼續覆蓋設定檔。看更改 DNS IP 的正確方法是什麼?

答案3

建立在埃吉爾的回答。如果是網路管理員破壞了文件,則有人在ubuntu論壇透過刪除 resolvconf 套件解決了這個問題。由於線程有點舊,這可能仍然有效,也可能不再有效。

相關內容