我给大家讲一下我的一个小故事:
现在,我在实验室中使用 Ubuntu 16.04 LTS 发行版。安装 Ubuntu 后,我尝试通过谷歌搜索检查我的互联网访问。但这是不可能的。所以我首先尝试 ping 谷歌的服务器:
ping 8.8.8.8
第一次 ping 成功了。因此,我第二次尝试 ping 雅虎网站:
ping yahoo.com
答案是名称未知,因此我决定检查 /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.0.1
search <www.some-sites>
问题在于名称服务器。我的同事告诉我,他们在 /etc/resolvconf/resolv.config.d/base 中复制了一些行:
domain bla.bla
search <www.some-sites>
nameserver 111.222.3333.4444
nameserver 555.666.7777.8888
他们建议我重新启动或者直接运行以下命令
resolvconf --enable-updates
resolvconf -u
当我检查 /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 <www.some-sites>
那么我该如何输入域名和两个新的特定名称服务器呢?我真的不知道如何配置接口以及是否可行。我也无法理解为什么会发生这种情况,因为 base 是一个应该复制到 resolv.conf 文件中的文件。你能解释一下为什么会发生这个错误吗?
谢谢
答案1
NetworkManager 是一个程序,它(通过 resolvconf 实用程序)将地址插入127.0.1.1
。resolv.conf
只有当 NM 配置为启动 dnsmasq 程序实例以充当本地转发名称服务器时,它才会插入该地址。该 dnsmasq 实例侦听地址 127.0.1.1 上的查询。
如果你想查看DNS
你当前使用的类型命令
nmcli device show <interfacename> | grep IP4.DNS
您可以DNS
为每个连接设置不同的参数
如果您不想使用本地转发名称服务器,则配置 NetworkManager 不启动 dnsmasq 实例,也不插入该地址。注释掉/etc/NetworkManager/NetworkManager.conf
以下行dns=dnsmasq
sudo nano /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
并重新启动 NetworkManager 服务。
sudo systemctl restart network-manager
在这种模式下,NetworkManager 会进行更新/etc/resolv.conf
(仍通过 resolvconf)以包含 NetworkManager 用于活动连接的名称服务器地址。
如果您想禁用 resolvconf 机制来更新 resolv.conf 并仅使用静态 resolv.conf 文件,请执行以下操作。
sudo rm -f /etc/resolv.conf # Delete the symbolic link
sudo nano /etc/resolv.conf # Create static file
# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8