我有一些FTP与防火墙和NAT的基本问题,我希望有人可以帮助我:)
我把它们分成不同的场景:
没有NAT的活动FTP
build立:
服务器1.2.3.4,默认端口; 客户端1.2.3.5,端口:3141(cmd),3142(数据)
客户端:3141连接到服务器:20
服务器:20个响应客户端:3141
服务器:21连接到客户端:3142
这在实践中通常如何解决? 我可以想到以下几种可能性:
我认为在所有这些解决scheme中,客户端将始终使用两个连续的端口 – 这是真的吗?
主动FTP与NAT
build立:
服务器1.2.3.4默认端口; 客户端192.168.0.2,端口3141,3142; 路由器,1.2.3.5和192.168.0.1
客户端:3141通过192.168.0.1连接到1.2.3.4:20
服务器:对1.2.3.5:ARBITRARY的20个响应 – 被传递到192.168.0.2:3141,因为有SNAT
服务器:21连接到1.2.3.5:(ARBITRARY + 1) – 路由器从哪里知道这个数据包属于谁?
被动FTP与NAT
服务器在路由器后面 – 路由器从哪里知道,在任意一个端口上接收的数据包是用于FTP服务器的? (因此,路由器如何知道不要丢弃这个数据包)
为什么被动FTP使用服务器站点上的任意端口进行数据连接? 为什么不端口21?
我希望你明白我的问题,有人可以帮助我:)
谢谢
我可以给你关于FTP和NAT的绝对最好的build议就是不要这样做 。
使用像SFTP这样的现代替代方法来增加连接的安全性(以明文forms发送密码通常被认为是一件坏事),而且也不会执行FTP所执行的错误的端口跳舞。 这样你就不用担心FTP如何工作了。
要回答您的具体问题,您需要阅读FTP RFC 。
您可能还需要阅读防火墙友好FTP ,以及如果您要使用FTP的安全考虑的大列表 。
如果你是出于好奇心求出这些引用就足够了。
如果在阅读RFC后仍然有与解决实际问题有关的具体实施问题,请提出具体细节的新问题。