在 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