You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04环境下网络接口关联的DNS解析器相关疑问

Ubuntu 20.04环境下网络接口关联的DNS解析器相关疑问

嗨,我来帮你理清楚Ubuntu 20.04里这两个DNS地址的区别和关联~

1. 先搞懂/etc/resolv.conf里的127.0.0.53是什么

Ubuntu 20.04默认采用systemd-resolved作为系统的DNS管理服务,127.0.0.53是它提供的本地DNS缓存解析器。实际上/etc/resolv.conf是一个软链接,指向了systemd-resolved生成的配置文件(比如/run/systemd/resolve/stub-resolv.conf)。这个本地缓存的作用是:让系统先查询本地缓存过的域名记录,提升解析速度,同时减少对上游DNS服务器的请求次数。

2. resolvectl status里的172.31.0.2是什么

这个地址是你的eth0网卡通过DHCP协议动态获取到的上游DNS服务器。systemd-resolved会把这个地址作为实际对外查询的目标——当本地缓存里没有你要查询的域名记录时,它就会向这个上游DNS服务器发起请求,获取真实的IP地址。

3. 为什么两个输出不同?二者有什么关联?

这是典型的DNS分层代理模式:

  • 系统里的应用程序会优先读取/etc/resolv.conf,向127.0.0.53发起DNS查询;
  • systemd-resolved作为中间代理,先检查自己的本地缓存,如果有记录直接返回;
  • 如果缓存里没有,就会使用resolvectl status里显示的172.31.0.2这个上游DNS去实际查询外网域名。

简单说,二者是协作关系,不是冲突——127.0.0.53是本地缓存入口,172.31.0.2是实际对外查询的服务器。

4. 关于DHCP分配DNS的确认

你猜的没错,172.31.0.2就是DHCP动态分配给eth0的DNS服务器。如果想要直接查看DHCP下发的DNS信息,你可以试试这些方法:

  • 执行sudo dhclient -v eth0,在输出里查找包含DNS Servers的字段,就能看到DHCP服务器下发的地址;
  • 查看DHCP租约文件:cat /var/lib/dhcp/dhclient.leases,文件里会记录每次DHCP获取到的完整配置,包括DNS服务器地址;
  • 再次执行resolvectl status eth0,其中的DNS Servers字段就是DHCP给eth0分配的DNS地址,和你之前看到的结果一致。

备注:内容来源于stack exchange,提问作者Alakananda S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:48:02