现在的位置: 首页 > 综合 > 正文

MTU参数导致无法上传文件

2013年10月06日 ⁄ 综合 ⁄ 共 854字 ⁄ 字号 评论关闭

前阵子遇到一个很奇怪的问题。

某天晚上,在家用sftp往公司服务器上更新一些代码,发现怎么都传不上去,可以ssh登录到服务器,可以用浏览web,可以用scp下载文件,唯独不能上传文件。包括sftp、ftp、以及在web页面post file。试了一下连到朋友的服务器,用sftp上传是正常的。从朋友的服务器传到公司的服务器也是正常的。当时感觉又碰到了人品问题,就用朋友的服务器做了一下中转,先把活干了。

第二天到公司,一切又正常的。晚上回家再试,又不行了。于是认定这是个人品问题,最近事情又比较多,就没深究下去。

几天之后,接到chxliu的电话,问我最近有没有碰到不能往服务器上传文件的问题。他们的服务器和我们的服务器是放在一个机房的。。。心中一惊,原来不是人品问题啊。跟chxliu交流了一会,我们感觉会是MTU的问题,于是分头测试。最后发现问题真的出在MTU上。

先说说测试办法。

查了一下局域网路由器设置的MTU。我家用的是TP-LINK的无线路由,PPPOE方式,MTU缺省值是1492。测试上传文件,失败!把MTU改成1450,再试,成功!

用ping命令也可以测试你的电脑跟服务器之间允许的最大MTU。
例如 ping 202.96.18.1 -f -l 1500
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet.
具体可以百度一下。

为什么会出现MTU问题呢?当然是网络运营商在自己的路由上设置了不同的值。为什么会以前可以现在不可以呢?我猜测一种可能是,某些运营商为了限制使用路由器共享一个帐号上网 ,做了一些手脚。比如TP-LINK的老路由器,PPPOE模式下缺省的MTU是1492,运营商只要把自己的路由器上的MTU改小一点,用这些TP-LINK路由器上网的用户,在发送大量数据的时候,就会出问题了。现在TP-LINK新的路由器,把MTU缺省值改成1480了,不知道是不是为了避免这种“封杀”。嗯,纯粹是我瞎猜的。

抱歉!评论已关闭.