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

相关内容