當我使用外部 DNS 時,為什麼 dig 將 dns 伺服器報告為 127.0.0.1?
我使用 unbound,通常使用 openDNS 作為我的 DNS 伺服器。
當我跑的時候
dig google.com
說我得到了SERVER: 127.0.0.1#53(127.0.0.1)
。這個東西到底在監聽 #53 埠是什麼?這是未綁定的還是與dnsmasq有關(我什至安裝了dnsmasq,因為dnsmasq.conf
似乎沒有安裝/etc
?)在 resolv.conf 中,
nameserver 127.0.0.1
但在網路管理器中,我將 DNS 伺服器指向了兩個 openDNS 地址。那麼這裡發生了什麼?本地名稱伺服器是否指向 dnsmasq,然後使用網路管理器中的值?還是它實際上在聽是不受約束的?
預設情況下,NetworkManager 使用 Dnsmasq 作為 DNS 解析器(如果已安裝)。這是基於 Debian 的系統上的預設設置,因此 Dnsmasq 在預設配置中執行,它僅根據命令行選項指定的上游伺服器解析名稱(加上 的內容
/etc/hosts
)。您沒有/etc/dnsmasq.conf
,因為該文件僅存在於可選包dnsmasq中。要查看您的系統目前是使用 Dnsmasq 還是 Unbound 進行 DNS 查詢,請執行
netstat -ulnp | grep ":53 "
.在 Ubuntu 12.04 中,NetworkManager 不能很好地與其他 DNS 解析器配合使用(請參閱錯誤 959037 — Thomas Hood 的摘要幾乎涵蓋了所有內容)。要繼續與 NetworkManager 一起執行 Unbound,最好的辦法是告訴 NetworkManager 不要執行 Dnsmasq(除了 Unbound,您不需要它,除非您使用的是 NetworkManager 不使用的 Dnsmasq 功能)。要做到這一點:
- 編輯
/etc/NetworkManager/NetworkManager.conf
以註釋掉包含的行(在該行的開頭dns=dnsmasq
添加一個)。#
- 重新啟動 NetworkManager
service network-manager restart
。