最近发现手上一台搬瓦工 MegaBoxPro 延迟莫名偏高,折腾了一圈发现是 DNS 的问题。记录一下排查过程和解决方案,不一定适用所有人,仅供参考~

一、现象与判断标准

问题机器默认 DNS 走 172.31.255.2(搬瓦工自带)和 8.8.8.8,通过 ping 谷歌域名可以判断是否异常:

ping -c 5 google.com

延迟参考:

  • 1ms 左右 → 正常

  • 40~50ms 或更高 → DNS 路径可能有问题,换 DNS 往往立竿见影

不是所有 MegaBoxPro 都会触发这个问题。我三台机器里只有一台有这个现象,另外两台用 8.8.8.8 和 1.1.1.1 都完全正常。另外一开始以为是 172.31.255.2 的问题,但删掉之后问题依然存在,所以问题出在 8.8.8.8 这边。

查看当前 DNS:

cat /etc/resolv.conf

二、原因分析

8.8.8.8、1.1.1.1 这类公共 DNS 都是 Anycast 地址——同一个 IP 会被路由到全球不同的实际节点。不同 VPS 的上游 BGP 路径不同,可能导致某台机器被导向更远、更绕或更拥堵的 DNS 节点,从而造成域名解析耗时异常。换一个解析器后路径更优,延迟就恢复正常了。

三、解决方案 A:从 DHCP 源头修改

把 DNS 写进 dhclient 配置,让 DHCP 分配时直接使用指定的 DNS:

echo "supersede domain-name-servers 1.1.1.1,1.0.0.1;" >> /etc/dhcp/dhclient.conf

然后重新让 DHCP 生效(网卡名按实际替换,一般是 eth0):

dhclient -r eth0
dhclient eth0
cat /etc/resolv.conf

四、解决方案 B:锁定 /etc/resolv.conf

直接写入 DNS 并用 chattr 锁文件,防止 DHCP 或系统重启后覆盖:

# 1. 先解锁(如果之前锁过)
chattr -i /etc/resolv.conf 2>/dev/null || true

# 2. 写入 DNS(Cloudflare 主+备)
printf "nameserver 1.1.1.1\nnameserver 1.0.0.1\n" > /etc/resolv.conf

# 3. 锁定
chattr +i /etc/resolv.conf

# 4. 验证,看到 i 标志就是彻底固定了
cat /etc/resolv.conf
lsattr /etc/resolv.conf

五、效果对比

修改前后 ping 谷歌域名的延迟对比:

DNS修改前后延迟对比

如果你的机器也有类似现象,换个 DNS 试试,说不定一行命令就解决了。