先来说问题

我的YxVM VPS型号是Hong Kong Eco Beta,节点是HK-01,近日上去更新下服务,突然发现速度很慢,问了下熟悉的朋友,有些节点是HK-02也有同样的情况


排查过程和结果

正常情况

执行以下命令后马上就会有反应

  • curl -4 域名 速度正常
  • ping IPv4 地址 速度正常
  • ping IPv6 地址 速度正常
  • dig A 域名 解析速度正常
  • dig AAAA 域名 解析速度正常
  • ping DNS 地址(如 1.1.1.18.8.8.89.9.9.9)延时均正常

异常情况

执行以下命令后会卡差不多10秒才会出结果,就和下图一样

  • apt update 默认状态下速度不正常(但是去掉IPv6后速度恢复正常)
  • curl -6 域名 速度不正常
  • curl 域名 速度不正常(即便禁用 IPv6 也不正常)
  • ping 域名 速度不正常(即便禁用 IPv6 也不正常)
  • curl 各种一键脚本 速度均不正常

尝试过的排查手段

  • 修改/etc/gai.conf文件,设置为 IPv4 优先,无效果
  • 禁用 IPv6 后,apt update 恢复正常,但其他如 curlping 域名 等仍不正常
  • 更换过多个 DNS 地址,如 1.1.1.18.8.8.89.9.9.9,无效果
  • 网络中 IPv6 地址 ping 正常,说明 IPv6 本身连通性无问题

我的疑惑

  • 症状看着像是DNS问题,但是更换了各个DNS都没用,并且是用nslookup 域名速度正常,解析结果正常,直接ping解析出来的IP地址也正常
  • IPv6 的存在影响了一部分网络行为,但即使完全禁用 IPv6,也只有执行apt命令的恢复正常,其他依旧是有问题

问题解决办法

由于一切症状都指向了DNS,因此我尝试从DNS入手去解决这个问题,因此又做了以下尝试:

  • 安装商家的Debian11镜像,依旧很卡

  • 安装商家的Debian12镜像,curl不卡了,但是ping依旧卡

我对比了下两个镜像对于DNS的区别,Debian11是最原始的方式,通过/etc/resolve.conf进行DNS的管理,而Debian12是通过systemd-resolved来进行DNS的管理。

顺着这个思路,我在Eco实例上使用了bin456789的脚本DD了Debian12(因为这个脚本DD的Debian12系统默认就是使用/etc/resolve.conf方式管理DNS的),随后安装了systemd-resolved,设置完成后,和商家Debian12的现象表现就一致了。

但是使用systemd-resolved还未解决ping慢的问题,因而我通过进一步尝试,将systemd-resolved替换为了dnsmasq,再进行测试,各种网络卡顿的问题彻底解决了。

后记

虽然到最后,还是不明白商家做了什么设置,导致出现这种情况,但是好歹是治标了,目前这个问题我只在YxVM的HK Eco Beta实例上碰到过,在其他服务器上(包括其他厂商以及YxVM自己的SG区域VPS)使用原始DNS管理方式均没有问题,如果碰到类似问题的,可以参照下我的方法,看看能不能解决吧!