用Ubuntu的时候,你是不是被127.0.0.53困扰好久了?来看看怎么修改DNS设置

[复制链接]
发表于 2026-10-5 19:56:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

用 Ubuntu 的静态 IP 机器,最让人挠头的一个现象是:域名突然解析不了,一看 /etc/resolv.conf,nameserver 变成了 127.0.0.53。按 CentOS 的习惯配置静态 IP 十几年没出过问题,到 Ubuntu 18.04 / 20.04 / 22.04 / 24.04 的服务器版上却各有各的怪状——桌面版走自动获取 IP 反而正常,服务器版基本都不通。本文把原因和一套稳定的改法讲清楚。

一、现象:DNS 被写成了回环地址

Ubuntu 的 DNS 设置保存在 /etc/resolv.conf。域名解析失败时先看这个文件,十有八九 nameserver 已经是 127.0.0.53 了。

临时改法很简单,把 nameserver 换成可用的公共 DNS(比如 223.5.5.5)就能解析:

sudo vim /etc/resolv.conf

把 nameserver 那一行改成 nameserver 223.5.5.5,保存后立刻生效。

二、痛点:重启之后又变回去了

问题是重启网卡或重启虚拟机之后,/etc/resolv.conf 里的地址又被刷回 127.0.0.53,域名又解不了。手工改这个文件属于治标。

三、根因:systemd-resolved 与那个"影子文件"

看 /etc/resolv.conf 顶部的说明会提到一个影子文件:/run/systemd/resolve/stub-resolv.conf。这两个文件都由 systemd-resolved 服务管理。

官方的意思是不要直接改 /etc/resolv.conf:它是个动态文件,作用是把本地客户端连接到 systemd-resolved 的内部 DNS 存根解析器(stub resolver),里面列出的是所有已配置的 DNS 服务器。

禁用 systemd-resolved 当次能解,但挡不住刷新——重启之后连 /etc/resolv.conf 这个文件都会消失,得重启服务才会重新生成,而生成的 DNS 服务器依旧是 127.0.0.53。

四、先看清楚当前用的是哪个上行 DNS

resolvectl status

这条命令能看到当前实际使用的上行 DNS 服务器信息,比盯着文件猜要准。

五、正解:改 systemd-resolved 自己的配置

先说清一个变化:以 Ubuntu 24.10 为例,连 /etc/network/interfaces 都没有了,/etc/network 路径下一个网卡地址都不存。网卡配置现在写在 YAML 文件里——可以用 netplan 生成或直接手写 /etc/netplan/*.yaml。

但即便在网卡的 YAML 里写了 DNS,这个设置照样会被 systemd-resolved 覆盖,写在那里并不生效。

真正的配置文件是 /etc/systemd/resolved.conf。安装时设的 DNS,装完还得回来改它:

sudo vim /etc/systemd/resolved.conf

在 [Resolve] 段里指定 DNS:

[Resolve]
DNS=223.5.5.5

然后重启服务让配置生效:

sudo systemctl restart systemd-resolved

之后 /etc/resolv.conf 里 reflects 出来的才是你设的地址,重启也不会被冲掉。这条路是官方推荐的做法,代价是要理解 systemd-resolved 这一层抽象——静态 IP 与 DNS 在 Ubuntu 上不是"同一个文件里写完就完事"。

六、顺带处理 IPv6 优先问题

如果还遇到解析慢、连接超时,多半是 IPv6 优先导致先去连不存在的 v6 地址。一条命令就能关掉:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1

这个改动是运行时的,重启会失效。要永久生效可以写进 /etc/sysctl.d/ 下的自定义文件,或者把 net.ipv6.conf.all.disable_ipv6 直接写进 /etc/sysctl.conf。

七、排查顺序建议

  1. resolvectl status 看当前上行 DNS 是谁。
  2. cat /etc/resolv.conf 确认是不是 127.0.0.53。
  3. 查 /etc/systemd/resolved.conf 里 DNS 段配了什么。
  4. 重启 systemd-resolved 后再看 resolvectl status 是否刷成你配的地址。
  5. 还不行再查 netplan YAML 里的网卡定义与 systemd-networkd 状态。

按这个顺序走,比一次改一个文件乱试快得多。说到底这不是 Ubuntu 坏了,而是从 CentOS 那套 /etc/resolv.conf 直管模型的迁移成本:理解 systemd-resolved 这层拦在中间,剩下的就是改对文件。

qidao123.com企服评测-应用市场 编辑提示

本文从 127.0.0.53 这个回环 DNS 现象出发,说明 /etc/resolv.conf 与 /run/systemd/resolve/stub-resolv.conf 的影子文件关系、systemd-resolved 服务的覆盖机制、resolvectl status 的查看方式、/etc/systemd/resolved.conf 中 DNS 段的正解配置与重启服务步骤,并补充 IPv6 优先导致解析慢的临时与永久两种关闭方法。修改 netplan YAML 与系统服务配置前请先备份原文件,并在维护窗口内操作,避免影响已在运行的业务。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表