2021.03.15更新:客服回复已新增PVE补丁修复,已有VPS先在后台停止,然后重启即可,新购买节点不会再有此问题
DMIT服务器问题
今天在 DMIT 新购了一台sPro套餐的服务器,一段时间后遇到一个严重问题:无法访问 raw.githubusercontent.com 的资源。进一步测试,发现竟然无法连接到国内的百度www.baidu.com、微博www.weibo.com等网站。
使用curl
调试,请求卡在了Server hello:
奇怪的是,只有少部分网站才有这个问题,Google、Github、Youtube、QQ等绝大多数网站都能正常打开。
转载请注明本文链接:https://itlanyan.com/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时百度服务器无法正常回复:
接着用ip
命令查看网卡配置,默认MTU是1500:
到此问题原因似乎找到了:网卡的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?
发表回复