我在我的服务器(ubuntu 16.04 x86_64)上使用proftpd。
默认 proftpd 使用标准 21 端口。我可以使用活动模式从家用笔记本连接到 ftp,没有任何问题。
现在我停止proftpd,将端口从21更改为10021,再次启动服务。现在我无法使用主动模式连接,只能使用被动模式连接。
发生了什么变化?
我也不明白,为什么工作在主动模式下?我可以通过路由器访问互联网。我不会在路由器上将任何端口转发到我的笔记本电脑。现在,在连接时,我的笔记本(ftp 客户端)创建从某个端口 > 1023 到服务器端口 21 的连接。我的笔记本也将第二个(数据)端口发送到服务器,服务器使用此数据从自己的端口 20 连接到我港口。但是,如果我的端口从 wan 关闭,如何建立第二个连接?
答案1
您的防火墙(路由器)有一个 FTP 连接跟踪助手。当它发现 FTP 控制连接(通过 TCP 目标端口 == 21 识别)时,它会监视命令。当它看到您的客户端发送PORT
命令时,它会将其重写(写入您的外部 IP 地址,也可能是不同的端口)并跟踪来自 FTP 服务器的预期连接。当该连接到达时,就允许它通过。
当您更改端口时,没有发生任何情况,因为 10021 不被识别为 FTP 控制连接。
至少在 Linux 上,该功能就是nf_conntrack_ftp
模块,如果需要,您可以设置ports
选项以包含 10021。
PS:类似的事情可以通过服务器前面的防火墙来完成,尽管相反:它是在被动模式传输上完成的,而不是主动模式。