先来说问题
我的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.1
、8.8.8.8
、9.9.9.9
)延时均正常
异常情况
执行以下命令后会卡差不多10秒才会出结果,就和下图一样
apt update
默认状态下速度不正常(但是去掉IPv6后速度恢复正常)curl -6 域名
速度不正常curl 域名
速度不正常(即便禁用 IPv6 也不正常)ping 域名
速度不正常(即便禁用 IPv6 也不正常)curl 各种一键脚本
速度均不正常
尝试过的排查手段
- 修改
/etc/gai.conf
文件,设置为 IPv4 优先,无效果 - 禁用 IPv6 后,
apt update
恢复正常,但其他如curl
、ping 域名
等仍不正常 - 更换过多个 DNS 地址,如
1.1.1.1
、8.8.8.8
、9.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管理方式均没有问题,如果碰到类似问题的,可以参照下我的方法,看看能不能解决吧!