几个有关FTP的常识:
1 FTP连接首先一定是客户端向服务器发起TCP FTP连接请求的,端口默认为21(当然是目标端口),成功后建立的这个连接是控制连接
2 控制连接后还要建一条TCP协议的数据连接,这里才变得麻烦起来。分主动模式和被动模式,这个模式命名的原则是以服务器为准。如果是服务器发起的数据连接称为主动,此时服务器源端口为20,若是客户端发起的连接称为被动模式,源端口客户端自己决定(可能有点规律),目标端口由服务器端在控制连接中通知。
3 服务器和客户两边都是公网IP,中间没有NAT,防火墙允许相应的包通过,则无论何种模式均没有任何问题。
4 如果任何一边在防火墙或者NAT后,则这一边如果是等待对方连过来,则可能会有问题了。具体讲,在防火墙后面的FTP参与者,如果是服务器,则用被动模式防火墙要特殊处理,如果是客户端,则用主动模式防火墙要特殊处理,这个特殊处理就是防火墙要监视FTP应用层的东西,因为协商的动态端口号是放在TCP的载荷中,而不是包头中。
5 第4点提到的问题有两个,第一个,内网电脑不知道自己的公网ip,在FTP控制连接中向对方报出的自己的ip是内网的。第二个,内网电脑报出的port,内网电脑所在的防火墙不能动态打开并且映射好以便允许对方来连接自己,内网电脑傻傻地等,不知被防火墙drop了。
6 和上面的相反,位于防火墙后面的FTP参与者,若是服务器端,使用主动模式很简单,简单映射一下TCP 21 端口就行了,若是客户端,使用被动模式和简单,只要不禁止目标端口为21的出站连接就行了(一般默认不会禁止),不需做任何映射。
7 由于FTP是两个连接,两个模式,并且涉及到应用层的协议,事情有些复杂起来了,不同的FTP 服务器端,客户端,防火墙,有各种不同的组合。通常FTP服务器软件和客户端软件在没有NAT和防火墙的情况下,两种模式都是支持的,并且在不成功后会主动尝试另一种模式。有了防火墙和NAT,就有些麻烦了。
8 一般思科华为的路由器针对TCP 21端口都做了特殊监控,可以自动处理。如果用非标准端口可能要特别配置。
9 我现在就只简单对比一下m0n0wall和pfsense对ftp的支持程度,pfsense打开ftp helper功能.
A 客户端防火墙使用 m0n0wall 1.233,使用主动模式
WAN防火墙规则允许 源端口为20的tcp连接,目标端口任意,目标网络为Lan subnet
客户端使用FileZilla Client(用其他客户端应该也没问题) ,FileZilla Client中设置成主动模式,成功列目录及传文件。
若用1.231的m0n0wall有问题,FTP主动模式下客户端发出了PORT命令后就卡住了。
A1 客户端防火墙使用PFSense,使用主动模式,一切正常。
B 服务器端防火墙使用m0n0wall,使用被动模式,简单映射一下tcp 21端口,还没有到列目录那里就卡住了。
B1 服务器端防火墙使用PFSense,使用被动模式,简单映射一下tcp 21端口,一切正常。
从上面的对比看来,用pfsense,如果用标准ftp 21端口,用WAN接口ip,不用ARP代理IP,不用OPT接口,无论pfsense用作客户端还是服务器端防火墙,对ftp的支持都很好,当然,前提是打开ftp helper.
阅读(5176) | 评论(0) | 转发(0) |