在 Linux Mint 上,當我查看該/etc/resolv.conf
文件時,第一個註釋指出該/etc/resolv.conf
文件是由resolvconf(8)
.
~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
解釋一下resolvconf(8)
手冊頁:
resolvconf 程式由 dhclient 等 DHCP 用戶端執行
我跑dhclient wlan0
。
~ $ dhclient wlan0
Dhclient 應導致resolvconf
程式更新/etc/resolv.conf
。該/var/lib/dhcp/dhclient.leases
文件驗證我是否能夠租用名稱伺服器的 IP 位址 (192.168.0.6)。
~ $ cat /var/lib/dhcp/dhclient.leases
lease {
interface "wlan0";
. . .
option domain-name-servers 192.168.0.6;
. . .
}
但是,該/etc/resolv.conf
文件未更新。該/etc/resolv.conf
檔案的名稱伺服器為 127.0.1.1。
~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search software.eng.apl
中沒有列出名稱伺服器/etc/network/interfaces
。
~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
我不確定我在這裡缺少什麼來/etc/resolv.conf
使用從 DHCP 伺服器租用的名稱伺服器來更新檔案。 DHCP 伺服器是使用 DHCPD 的 Linux CentOS 電腦。
答案1
Mint 和其他現代發行版mdns
預設附帶,它使用本地「去中心化」包裝器包裝常規公共 DNS,從而為本地網路提供零配置支援。基本上,本地 DNS 伺服器解析它發現的本地網路中的名稱,然後回退到(現在代理的)公共 DNS 進行公共 Internet 解析,即本地網路之外的名稱。
總而言之,您的方法resolv.conf
是正確的並且適合這種情況,如果mdns
訪問您的 ISP 的名稱伺服器時出現問題,您應該查看內部它是配置 - 當然,如果您不關心 Zeroconf 支持,停用mdns
(然後可能還有 Avahi)可以讓您resolv.conf
以傳統方式進行管理。
答案2
您可以/etc/dhcp/dhclient.conf
透過取消註解來編輯該行#prepend domain-name-server
答案3
我遇到了與OP中描述的相同的問題,但以前的答案都不適合我。我正在運行 Linux Mint 18,當我嘗試在 docker 容器內使用網路功能時發現了這個問題。 Docker 期望從/etc/resolv.conf
.但由於列出的唯一名稱伺服器是 127.0.1.1,因此 docker 網路不成功。
我發現另一種解決方案對我有用的askubuntu。我將其發佈在這裡作為交叉引用,以防它對某人有所幫助。
NetworkManager 是(透過 resolvconf 實用程式)將位址 127.0.1.1 插入 resolv.conf 的程式。當且僅當 NetworkManager 設定為啟動 dnsmasq 程式的執行個體以充當本機轉送名稱伺服器時,NetworkManager 才會插入該位址。此 dnsmasq 實例偵聽位址 127.0.1.1 的查詢。
如果您不想使用本機轉送名稱伺服器,則將 NetworkManager 設定為不啟動 dnsmasq 實例,也不插入該位址。註解掉/etc/NetworkManager/NetworkManager.conf
該行dns=dnsmasq
sudo vim /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
並重新啟動 NetworkManager 服務。
sudo service network-manager restart
在此模式下,NetworkManager 更新 /etc/resolv.conf(仍透過 resolvconf)以包含 NetworkManager 用於活動連線的名稱伺服器位址。
如果您想要停用 resolvconf 更新 resolv.conf 的機制並僅使用靜態 resolv.conf 文件,請執行下列操作。
sudo rm -f /etc/resolv.conf # Delete the symbolic link
sudo vim /etc/resolv.conf # Create static file