Dhclient 未更新 /etc/resolv.conf

Dhclient 未更新 /etc/resolv.conf

在 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以傳統方式進行管理。

另請參見例如https://help.ubuntu.com/community/HowToZeroconf

答案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

相關內容