关于VSFTP的主动模式和被动模式

 
一,首先我们看两个例子如下:
 
其中192.168.10.7是服务端,172.16.11.11是客户端
 
被动模式
 
# netstat -an |grep 172.16.11.11
tcp        0      0 192.168.10.7:52160          172.16.11.11:16091          TIME_WAIT   
tcp        0      0 192.168.10.7:21             172.16.11.11:15354          TIME_WAIT   
tcp        0 434064 192.168.10.7:43407          172.16.11.11:16220          ESTABLISHED 
tcp        0      0 192.168.10.7:21             172.16.11.11:16090          ESTABLISHED 
tcp        0     52 ::ffff:192.168.10.7:22      ::ffff:172.16.11.11:13939   ESTABLISHED 
 
 
主动模式
 
# netstat -an |grep 172.16.11.11
tcp        0 268488 192.168.10.7:20             172.16.11.11:18434          ESTABLISHED 
tcp        0      0 192.168.10.7:21             172.16.11.11:18433          TIME_WAIT   
tcp        0      0 192.168.10.7:20             172.16.11.11:18426          TIME_WAIT   
tcp        0      0 192.168.10.7:21             172.16.11.11:18425          TIME_WAIT   
tcp        0      0 192.168.10.7:21             172.16.11.11:18418          TIME_WAIT   
tcp        0      0 192.168.10.7:20             172.16.11.11:18420          TIME_WAIT   
tcp        0      0 192.168.10.7:21             172.16.11.11:18369          TIME_WAIT   
tcp        0      0 192.168.10.7:20             172.16.11.11:18397          TIME_WAIT   
tcp        0      0 192.168.10.7:21             172.16.11.11:18387          ESTABLISHED 
tcp        0     52 ::ffff:192.168.10.7:22      ::ffff:172.16.11.11:13939   ESTABLISHED 
 
二,如上我们不难发现:
 
被动模式时, 服务端用到21端口,其他大于1024端口,如43407
主动模式时, 服务端用到20端口,21端口
两种模式客户端用到的都是大于1024的端口
 
由此可以推出21端口是连接控制端口,20端口是数据传输端口(主动模式下)
 
 
三,补充,在生产环境下由于防火墙和ACL等对端口控制的很严格,如果想方便服务端的配置可以用主动模式,
但客户端要让他们调好模式,如IE浏览器默认就是用被动模式。
 
四,另外给vsftpd的主动模式和被动模式的配置放在下面
主动模式
port_enable=YES
connect_from_port_20=YES #数据端口是20即主动模式
ftp_data_port=? #如果数据传输端口不想用20把上面的YES改成NO,这里填上你想设置的端口
被动模式
#PASV MOD
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60006
 
五,防火墙iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60000:60006 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT