NAT 与发布75 条

FTP 与 NAT ALG

FTP 控制连接中动态协商数据端口,穿越 NAT 需要 ALG 协助或改用被动模式并放行固定端口范围。

安全设备配置速查安全更新于 2026-10-13

FTP 为什么穿越 NAT 困难

FTP 是双通道协议:控制连接固定监听 21 端口,数据连接用的地址与端口在控制连接里动态协商。NAT 设备如果只是改写地址而不理解协议内容,协商出来的地址就会与实际不符,导致能登录却无法列目录或传输。解决办法有两条:让设备启用 FTP ALG 跟着协议做转换,或改用被动模式并明确放行一段数据端口范围。

基本信息

主动模式由服务器回连客户端,客户端在 NAT 后时通常不通
被动模式客户端连接服务器指定的数据端口,需要放行协商出的端口范围
设备能力NAT ALG 可解析控制连接并转换协商地址,部分版本默认开启
替代方案SFTP/SCP 基于 SSH 单端口,天然不依赖 ALG

典型使用场景

  • 对外发布 FTP 服务器:内网服务器映射公网地址后,被动模式端口范围要一并放行
  • 内网用户访问外部 FTP:主动模式基本不可用,需要客户端切到被动模式
  • 老业务改造:遗留系统仍依赖 FTP,短期只能靠 ALG 或固定端口范围支撑
  • 多台 FTP 服务器共用出口:端口范围要规划不冲突,否则映射互相干扰
  • 排障定位:登录正常但列目录失败,是数据通道被拦的典型特征

配置要点

配置要点
1. 在服务器侧限定被动模式端口范围(例如 50000-50100)
2. 防火墙放行该范围并对公网地址做映射,保证内外端口一致
3. 确认设备 FTP ALG 的开启状态,开启后观察转换结果是否符合预期
4. 用 FileZilla 一类客户端实测:登录、列目录、上传下载各测一次
5. 能改造的系统迁移到 SFTP,从根上减少对 ALG 的依赖

故障现象与判断

现象原因处理方向
能登录,列目录卡住数据通道被策略拦截放行被动模式端口范围
登录后立刻断开协商地址被 NAT 改写错误检查 ALG 与服务器返回地址
仅部分客户端失败客户端模式或编码差异统一为被动模式并复测
大文件传输中断端口范围过小导致并发受限扩大范围并核对并发数
现代环境更推荐用 SFTP 替代 FTP:基于 SSH、只用一个端口,既避免 ALG 依赖,也避免明文传输账号口令。

易错点

  • 只放行 21 端口,能登录但列目录与传输失败,现象容易被误判为服务器权限问题
  • 服务器同时存在公网地址与内网地址时,ALG 转换结果可能指向错误地址,客户端连接超时
  • 被动模式端口范围开得过宽且未做访问限制,等于把一大片端口暴露在公网上
  • 策略变更后未复测传输环节,只验证了登录成功就认为问题已解决

数据来源与参考

  • 华为 USG6000 产品文档:NAT ALG
  • RFC 959(FTP)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌