将我的 16.04 安装升级到 16.10 后,DNS 出现问题。
首先,我在连接到 WiFi 时遇到了几次问题,而它在以太网上工作。现在它似乎也适用于 WiFi。不知道为什么,如果它与我现在面临的问题有任何关系:
当使用Cisco Anyconnect VPN连接到 VPN 主机时,它会在 '/etc/resolv.conf' 中添加一行。我知道 Ubuntu 现在正在使用systemd-resolve,并且手册页说有三种不同的模式来处理 /etc/resolv.conf。我的 /etc/resolv.conf 不是符号链接,也没有将 127.0.0.53 列为 DNS 服务器,所以据我所知 systemd-resolved 应该“读取它以获取 DNS 配置数据”。不过,它似乎并不在意。
奇怪的事情(对我来说)是dig host.customer.tld,返回一个很好的答案,其中包含一个显示所请求主机的 ip 的 ANSWER SECTION,它指的是由 vpn 客户端添加到 /etc/resolv.conf 的 dns 服务器作为服务器。当 vpn 连接被禁用时,我没有得到答复。即dig 读取 /etc/resolv.conf。
另一方面,浏览器无法访问 /etc/resolv.conf,并且无法解析主机名。顺便说一下,ping/curl 也不是。
我找到了一个相关的帖子,并尝试运行
nmcli device show <interfacename> | grep IP4.DNS
Run Code Online (Sandbox Code Playgroud)
但它没有列出 cscotun0 设备的 dns。(不过,它在 16.04 中也没有。)此外,nmcli 将我的 dhcp …
我们曾经通过以下方式获取当前的 DNS 设置:
cat /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
但是 Ubuntu 12.04 已经改为使用 resolvconf 框架。上面的共同点只会给我这个:
# 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
Run Code Online (Sandbox Code Playgroud)
这不是我机器的当前 DNS 设置。
那么,有没有我可以参考的文件或命令?
我的/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
# OpenDNS Fallback (configured by Linux Mint in /etc/resolvconf/resolv.conf.d/tail).
nameserver 208.67.222.222
nameserver 208.67.220.220
Run Code Online (Sandbox Code Playgroud)
当我使用nslookup时,我似乎使用了127.0.1.1:
moose@pc08 ~ $ nslookup www.google.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: www.google.com
Address: 173.194.44.17
Name: www.google.com
Address: 173.194.44.16
Name: www.google.com
Address: 173.194.44.19
Name: www.google.com
Address: 173.194.44.18
Name: www.google.com
Address: 173.194.44.20
Run Code Online (Sandbox Code Playgroud)
但是当我右键单击网络管理器并单击“连接信息”时,我得到:

whois 217.0.43.129 表明这属于我的 ISP Deutsche …
(对 12.04 类似问题的跟进。)
在 Ubuntu 12.04 之前,您可能会在/etc/resolv.conf. 在 Ubuntu 12.04 中,NetworkManager 不再处理该文件。您必须直接咨询命令行工具nm-tool。
有趣的是,nm-tool在 14.04 及更高版本中不再默认安装。尽管您仍然apt-get install可以通过 安装,但您不能假设所有 Ubuntu 都是开箱即用的。
所以问题仍然存在。在默认安装情况下,您如何知道您通过命令行使用的 DNS?
有一个简单的命令找出哪个DNS服务器我使用的是现在?最好不诉诸tcpdump或解析日志文件?
我发现了很多关于nm-cli和其他 nm-tools的东西,但这不适用于服务器......
我有时会使用任务栏中的 NetworkManager 指示器切换 DNS 服务器;这适用于以前的版本,实际上也适用于 12.04,除了一件事:我使用 Conky 显示一些系统信息,包括 DNS 地址,我注意到它现在总是显示127.0.0.1.
我查看了resolv.conf,这是它获取此地址的地方,果然,它总是这么说。我有一行,警告不要手动编辑文件:
nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我现在知道检查 DNS 服务器地址的唯一方法是打开网络管理器 GUI 来检查信息页面。那么,这些信息现在存储在哪里?
Ubuntu 16.04、宏碁 i5、6GB、256GB-SSD。
您好,我在 Pi 上安装了 pi-hole,并将路由器 DNS 设置为指向其 IP 地址,如 pi-hole 安装内容所述。
互联网访问似乎工作正常,但是,从我的 Ubuntu 中,我想查看Pi之外正在使用哪个 DNS 服务器。当我设置 pi-hole 时,我选择 DNSWatch 作为默认下游(或上游),但希望看到它正在被使用。
另外,我想看看当 pi-hole 关闭时正在使用什么 DNS。大约有 5 秒的延迟,然后我的 Acer/路由器找到要使用的 DNS 服务器。
我可以在我的 dd-wrt 路由器中添加 2 个 DNS 服务器,因此考虑添加 OpenDNS 作为 pi-hole 故障时的后备方案。
有没有办法查询 Pi 或我的 Ubuntu 来获取外部 DNS?
dns ×8
networking ×4
server ×3
resolv.conf ×2
12.04 ×1
16.04 ×1
16.10 ×1
22.04 ×1
command-line ×1
dnsmasq ×1
opendns ×1
systemd ×1