连接多个网络,如何选择哪个DNS服务器?

连接多个网络,如何选择哪个DNS服务器?

我有一台运行 Ubuntu 16.04 的笔记本电脑,连接到两个不同的网络(事实上,我有 5 种不同的笔记本电脑型号,都遇到了这个问题)。一个是无线网络,另一个不是。在这两个网络上,我有不同的 DNS 服务器。

我经常遇到这样的情况:当尝试 ping 或与已知主机建立 ssh 连接时,我会收到“未知主机”错误,我可以在一秒钟内运行五个 ping 命令,有时所有五个命令都能通过,有时只有一个或两个(或一个都没有)。当我在主机名上使用“nslookup”时,我也会遇到同样的情况。当使用带有 IP 地址的 SSH 时,我从未收到任何错误。这让我相信 Ubuntu 会随机选择要使用哪个网络的 DNS 服务器。

那么有没有办法选择应该使用哪个网络的 DNS 服务器,或者让 Ubuntu 询问它们两个,前提是其中一个不知道主机?

“ip route list”列出了网络的不同指标,其中一个设置为 100,另一个设置为 600。

如果有任何其他可能相关的信息,请告诉我。

/etc/resolv.conf的内容:

由 resolvconf(8) 生成的 glibc resolver(3) 的动态 resolv.conf(5) 文件请勿手动编辑此文件 - 您的更改将被覆盖
nameserver 127.0.1.1
search xx.yy.zz

ip 路由列表的输出

默认通过 10.80.0.1 dev enp0s25 proto static metric 100
默认通过 10.125.64.1 dev wlo1 proto static metric 600
10.80.0.0/24 dev enp0s25 proto 内核范围链接源 10.80.0.54 metric 100 10.125.64.0/19
dev wlo1 proto 内核范围链接源 10.125.83.244 metric 600
10.220.2.16 通过 10.80.0.1 dev enp0s25 proto dhcp metric 100
169.254.0.0/16 dev enp0s25 范围链接metric 1000
192.0.2.1 通过 10.125.64.1 dev wlo1 proto dhcp公制 600

user@host:~$ nmcli dev show enp0s25 | grep DNS
IP4.DNS[1]:                             10.220.2.5

user@host:~$ nmcli dev show wlo1 | grep DNS
IP4.DNS[1]:                             10.220.2.24

答案1

Ubuntu 本身始终使用其所有 DNS。如果在第一个 DNS 上找不到地址,它将尝试第二个可用的地址。

所以您的解决方案是,因为我们看到您的/etc/resolv.conf是空的 - 但是您提供的信息表明您有一个由 dhcp 正确分配的 DNS 服务器。

现在,您可以禁用 NetworkManager 并仅使用可以立即解决问题的接口,或者查看/etc/NetworkManager/NetworkManager.conf并查找该行dns=XXXXXX并删除该行或注释掉该行。

重新启动 NetworkManager sudo systemctl restart NetworkManager.service,现在你的 DNS 应该设置为/etc/resolv.conf

相关内容