2021.03.15更新:客服回复已新增PVE补丁修复,已有VPS先在后台停止,然后重启即可,新购买节点不会再有此问题

DMIT服务器问题

今天在 DMIT 新购了一台sPro套餐的服务器,一段时间后遇到一个严重问题:无法访问 raw.githubusercontent.com 的资源。进一步测试,发现竟然无法连接到国内的百度www.baidu.com、微博www.weibo.com等网站。

使用curl调试,请求卡在了Server hello

DMIT服务器无法连接到百度
DMIT服务器无法连接到百度

奇怪的是,只有少部分网站才有这个问题,Google、Github、Youtube、QQ等绝大多数网站都能正常打开。

转载请注明本文链接:https://tlanyan.pp.ua/dmit-network-problem-and-solution/

DMIT服务器问题原因和解决办法

原因

遇到这个问题,首先想到的是IP曾经被滥用过,导致IP被拉黑了,于是发工单要求更换IP。

等待客服回复期间又觉得有点不对劲:IP被Google等网站拉黑是正常的,为什么国内的百度、微博这些网站也打不开呢?

于是尝试找出原因和解决办法。首先最有用的提示信息是curl的报错:

curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.baidu.com:443

根据这个线索,在StackExchange上找到一个类似的帖子:curl hangs after client hello。根据回复,有可能是MTU的问题。

使用ping命令测试不同MTU下的结果,发现MTU超过1372时百度服务器无法正常回复:

ping测试MTU大小
ping测试MTU大小

接着用ip命令查看网卡配置,默认MTU是1500:

ip查看网卡MTU
ip查看网卡MTU

到此问题原因似乎找到了:网卡的MTU过大,导致ip包不能正确传输。

解决办法

先尝试将MTU改成能正常ping百度的1372:ip link set eth0 mtu 1372(eth0是网卡名称)。

接着使用curl测试, raw.githubusercontent.com、www.baidu.com、www.weibo.com等网站均可以正常访问了。

于是我们可以得出结果:DMIT服务器不能访问一些网站的原因是没有正确设置MTU,而不是IP被这些网站拉黑了。

Linux永久设置MTU

ip设置的MTU会在系统重启后失效,永久设置的方法是编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,在文件最后加上一行:

MTU=1372

延伸阅读

1. 一些VPS商家整理

2. curl hangs after client hello

3. How to get maximum supported MTU size for interface?

4. How to change MTU setting permanently

5. DMIT圣诞新品sPro套餐测评