我已将路由器的 DNS 地址设置为 CloudFlare 的1.1.1.1
和1.0.0.1
.当我在 Linux 上启动时,它不只显示那些 DNS 127.0.0.1
。 Cloudflare 的 DNS 在 Android 和 Windows 10 上显示,但在 Ubuntu 16.04 上不显示。
答案1
Ubuntu 可能预装了缓存 DNS 解析器,如 dnsmasq 或 systemd-resolver 。您可以使用以下命令检查是否有任何本地 DNS 解析器正在侦听端口 53
netstat -plntu
这将显示侦听所有 TCP 和 UDP 端口的所有程序。如果有,则必须停止该服务或将 1.1.1.1 配置为缓存 DNS 服务器的上游 DNS
答案2
如果/etc/resolv.conf
设置nameserver
为 127.0.0.1,则可能意味着您安装了本地缓存 DNS 解析器甚至本地名称服务器。
通常,在本地缓存/服务器没有答案的情况下,DHCP 指定的名称服务器将用作 DNS 查询转发的目标。您可能会在 或特定于缓存/服务器的类似配置文件中找到/etc/resolv.dnsmasq
它们/run/named/named.forwarders
。
基本上,大多数程序都会读取/etc/resolv.conf
.它指示程序使用本地缓存/服务器,该缓存/服务器将有自己的 DHCP 管理的配置文件。然后,本地缓存/服务器将使用 DHCP 指定的服务器作为上游 DNS 源。
2023 年更新:如果您的系统运行systemd-resolved
,则可以使用该resolvectl status
命令找到真正的 DNS 解析器设置,而不是查看/etc/resolv.conf
。
在这种情况下,/etc/resolv.conf
通常会包含nameserver 127.0.0.53
: 如果您看到这一行,则表明真正的 DNS 解析器设置应由该resolvectl
命令管理。