我对带有防火墙和 NAT 的 FTP 有一些基本问题,希望有人能帮助我:)
我根据不同的场景来划分它们:
无 NAT 的主动 FTP
设置:
服务器 1.2.3.4,默认端口;客户端 1.2.3.5,端口:3141(cmd)、3142(数据)
客户端:3141 连接到服务器:20
服务器:20 个响应至客户端:3141
服务器:21 连接到客户端:3142
在实践中通常如何解决这个问题?我能想到以下可能性:
- 客户端防火墙记住有一个 FTP 命令连接,因此打开端口 3142
- 客户端防火墙记住有一个 FTP 命令连接,因此允许从 1.2.3.4:21 到 1.2.3.5:3142 的所有连接
- 客户端防火墙允许从 xxxx:21 到 1.2.3.5:3142 的所有连接
我假设在所有这些解决方案中,客户端将始终使用两个连续的端口 - 这是真的吗?
带 NAT 的主动 FTP
设置:
服务器 1.2.3.4 默认端口;客户端 192.168.0.2,端口 3141、3142;路由器,1.2.3.5 和 192.168.0.1
Client:3141 通过 192.168.0.1 连接到 1.2.3.4:20
服务器:对 1.2.3.5:ARBITRARY 的 20 个响应 - 由于存在 SNAT,因此被传送到 192.168.0.2:3141
服务器:21 连接到 1.2.3.5:(ARBITRARY+1)——路由器从哪里知道这个数据包属于谁?
带 NAT 的被动 FTP
服务器位于路由器后面——路由器从哪里知道在任意端口接收的数据包是用于 FTP 服务器的?(因此,路由器如何知道不要丢弃此数据包)
为什么被动 FTP 使用服务器站点上的任意端口进行数据连接?为什么不使用端口 21?
我希望你能理解我的问题并且有人可以帮助我:)
谢谢
答案1
这我能给你的绝对是最好的建议关于 FTP 和 NAT 的实践只是不去做。
使用现代的替代方案,例如安全FTP这增加了连接的安全性(如今以纯文本形式发送密码通常被认为是一件坏事),并且不会像 FTP 那样进行错乱的端口切换。这样,您就不必担心 FTP 的工作方式的奥秘。
要回答你的具体问题,你需要阅读FTP RFC.
您可能还想阅读防火墙友好的 FTP, 和如果你要使用 FTP,以下是安全注意事项。
如果您是出于好奇心而提问,这些参考资料就足够了。
如果在阅读 RFC 后,您仍有与解决实际问题相关的具体实施问题,请提出新的问题并提供具体细节。