关于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