关于之前使用FTP做图库传输的问题
2025 年 07 月 13 日 • 笔记
前文使用ftp作为图片传输方案失败啦,改用webdav
问题总结
之前使用内网测试ftp传输的时候完全没问题,今天部署到生产环境的时候,发现端口转发后的ftp根本连不上,可能单放行一个端口,再转发会有问题吧,问了deepseek
当你
ftpClient.enterLocalPassiveMode()
后:
FTP 服务器通过控制通道告诉客户端:“请连接我
192.168.x.x:50000
来获取目录列表。”但客户端实际访问不到这个内网地址,也无法通过 NAT 正确转发到
192.168.x.x:50000
,所以就转发失败。
所以这次使用webdav来做传输只需要转发一个端口就行,实际生产环境测试也是可以的。所以这点需要注意了。ftp是飞牛自带的很多端口参数不好调也不知道,所以放行起来很麻烦,所以放弃了。
FTP主动模式和被动模式的区别
FTP 主动模式(PORT)的连接流程:
-
客户端连接服务器的21端口(控制连接,客户端发起 TCP 连接,端口21通常开放给客户端)
-
客户端告诉服务器一个端口号(比如客户端机器的 1024-65535 中某个端口),让服务器连接它(这是数据连接)
-
服务器主动从它的20端口连接客户端指定的端口,实现数据传输
角色 | 端口方向 | 放行的端口 |
---|---|---|
客户端 | 接收数据连接 | 入站放行服务器 IP 的 TCP 20 端口连接客户端随机高端口 |
服务器 | 接收控制连接 | TCP 21 端口入站放行 |
-
客户端防火墙:
-
允许入站 TCP 连接:源端口 20,目的端口为客户端上报给服务器的那个端口(通常是随机高端端口)
-
有的客户端支持设置数据端口范围,尽量缩小范围便于防火墙规则管理。
-
-
服务器防火墙:
-
允许入站 TCP 21 端口连接(控制连接)
-
允许出站 TCP 20 端口连接客户端数据端口
-
被动模式
客户端主动连接服务器的两个端口(控制端口 21 + 被动模式数据端口),客户端只需放行出站端口,服务器放行入站端口。
留言 (0)