您观察到的中断和 TCP-EST 老化时间有直接关系,问题出在 FTP 协议的特殊性上。简单来说,TCP-EST 老化时间直接导致了您遇到的 FTP 传输中断。
核心原因在于 FTP 协议的数据传输和控制通道分离,以及防火墙对这两种通道的不同处理逻辑。
FTP 的“双通道”模式
控制通道:始终连接到服务器的 TCP 21 号端口,用于发送指令,在文件传输期间大部分时间处于“空闲”状态。
数据通道:用于实际的文件内容传输,连接和端口(在被动模式下为随机高端口)是动态协商的。
防火墙处理流程的差异
防火墙会为控制通道建立一个会话,老化时间遵循 FTP 应用层协议的老化时间,默认为 3600 秒。
文件传输开始时,防火墙会创建对应的数据通道会话。但防火墙将其视为一个普通的 TCP 连接,其老化时间遵循 TCP-EST (TCP Established) 状态的老化时间,默认也是 3600 秒。
中断是如何发生的
当传输一个耗时超过1小时的大文件时:
第1小时:数据通道会话建立,防火墙将其老化计时器设为 3600 秒,并随着时间流逝不断倒计时。
当传输进行到第59分钟时,会话已接近老化。
在第60分钟的临界点,会话因超时被防火墙强制删除,导致传输中断。这完美解释了您观察到的“每1小时就断一次”的现象。
建议按以下优先级尝试解决方案:
1. (最佳方案)修改FTP应用层老化时间
这是解决问题的根本方法。FTP控制通道的独立老化时间是3600秒,将其调整为更大值(如7200秒)即可同步延长数据通道老化时间。
2. (备选方案)配置长连接
如果方案一无效,可指定特定的TCP连接为长连接,使其不受常规老化时间限制,永不过期。
3. (临时缓解方案)修改TCP-EST老化时间
作为最后手段,可将 TCP-EST 老化时间调大,如7200秒或更大。
ESTABLISHED 状态的TCP会话,影响面较广。如果调整老化时间后问题依旧,建议排查以下方面:
检查FTP服务端配置:部分FTP服务器(如Linux的vsftpd)可能有 data_connection_timeout 等参数,请确保其设置大于数据传输所需时间。
检查客户端软件设置:某些FTP客户端(如FileZilla)也有连接超时设定,建议延长该时间。
开启攻击防范?:某些安全策略也可能导致连接被重置。您可以尝试暂时关闭攻击防范功能进行测试。
配置长连接:上述方案一和方案二(配置长连接)是解决问题的核心方法,可有效规避会话老化问题。
暂无评论
TCP-EST: 3600 秒 = 1 小时display session table verbose source-ip x.x.x.x
display session table statistics
system-view
tcp timer estalished 86400 // 改成24小时
save
system-view
policy interzone trust untrust
policy 10
service ftp
service sftp
session time-out 86400
alg ftp enable
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论