SFTP登陆成功但无法传文件

发布时间:  2015-10-26 浏览次数:  384 下载次数:  0
问题描述

用户反馈在数据中心总部无法通过SFTP客户端远程(跨运营商专线)访问各个分支站点的IPTV服务器(均开启了SFTP服务),用户认证通过后无法列出/root下的文件,导致连接超时,试了好几个站点均不行。

由于SFTP客户端在执行ls命令时报错,为了排除是SFTP客户端的问题。建议用户通过ssh远程登录服务器,在服务器上执ls命令,发现结果还是一样。敲入ls后没有回显,等了一段时间后超时退出。

 

数据中心和分支节点拓扑如下:

数据中心NOC--->出口防火墙<--->运营商MPLS VPN<--->分支节点AR<--->SFTP服务器

 

告警信息

处理过程

1.         由于在之前交付过程中本地(不跨运营商专线)SFTP都是正常的,所以再次去一个分支站点使用SFTPSSH登陆,发现都是正常的。

2.         由于在本地访问应用正常,所以问题应该出在中间的网络上。在本地电脑和数据中心电脑上分别抓包,查看用户收到的报文哪里有不同。

本地电脑:

###sftp ls当前目录时的回显,收到大量1500的大包,这些大包应该就是当前目录的内容。正是由于这些报文才使sftp连接正常运行

数据中心电脑:

###sftp ls当前目录时的回显,数据中心侧未收到任何回包,导致tcp连接超时,最后连接中断

3.         已经确认是中间网络将大包丢弃导致的问题,那到底是那台设备丢弃,又为什么丢弃那?联想到项目交付后应客户的要求在专线了做了IPSec加密,同时为了更好的控制路由采用GRE over IPSec的方式。首先GRE会生产24字节的新头部(20字节IP头部加4字节GRE头部),另外IPSecESP方式也会产生至少12字节以上的头部和尾部,具体会产生多少需要根据ESP采用的加密算法来决定。

4.         知道了原因,处理起来就比较容易了,在分支节点路由器的物理接口下通过tcp adjust-mss命令调整TCP MSS1400后应用访问正常。(TCP默认MSS1460字节,加上TCP头部20字节,IP头部20字节刚好是1500,普通以太网的MTU值。)

5.         从分支站点回来后上网查了一下,由于IPSec的开销根据不同的加密算法不尽相同,而且有些报文可能会在IP或者TCP头部携带option字段,所以建议在GRE over IPSec的场景下将TCP MSS设置为1360字节。为了以防万一,后面又去客户站点统一将分支站点TCP MSS设置为1360字节。

根因

跨运营商线路做了GRE over IPSec后,由于线路开销变大,接口实际可发送MTU变小,如果还使用默认TCP MSS协商,会造成数据包大小超过接口MTU导致丢包

解决方案

在跨运营商线路做GRE over IPSec的场景下,需要将应用的TCP MSS调整为1360字节,避免加密数据包过大超过接口MTU导致的丢包。

建议与总结

在跨运营商线路做GRE over IPSec的场景下,需要将应用的TCP MSS调整为1360字节,避免加密数据包过大超过接口MTU导致的丢包。

END