ftp的主动模式active mode和被动模式 passive mode的配置和区别
本文主要记录的是在linux上的区别,弄了一整天才整明白区别
ftp模式分为主动模式(active mode)和被动模式(passive mode),ftp是tcp连接,所以要进行三次握手
1. active和passive模式的配置:
在命令行输入vim /etc/vsftpd/vsftpd.conf:
1> active mode:
pasv_enable=NO (passive模式关闭)
pasv_min_port=3000
pasv_max_port=4000
port_enable=YES (active模式开启)
connect_from_port_20=YES (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。)
2>passive mode:
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如3000-4000。
在linux上,如果不配置pasv_enable=NO,默认是passive模式。
2. service vsftpd restart 重启ftp服务;
3. 通过命令行连接ftp server:
1> active mode: ftp -A 3.3.3.3
active模式连接ftp server时一定要加-A
2> passive mode: 可以直接使用 ftp 3.3.3.3 也可以使用 ftp -p 3.3.3.3
4. ftp client: 192.168.168.169 ftp server: 3.3.3.3
1> active 模式:
在active模式下,如下图抓的包中,在命令连接部分(ftp类型的包),client端使用的端口是36439,这个端口是大于1024的任意端口,ftp server端用的端口是21:
如下图,在active模式下,要传输数据时,ftp client通过第23个包通过21号端口告诉server数据传输联系端口43187(大于1024的任意端口),并进行listen,server端用端口20主动和client端43187建立数据传输通道,并传输数据(第30,32,34个包)。这里是server知道了client端的数据通道监听端口后,主动建立了数据传输通道,所以是主动模式。
在active模式下,数据传输部分(FTP-DATA类型的包),ftp-server端用的端口是20,默认情况下,FTP PORT主动模式进行数据传输时使用20端口,ftp-client端用的是43187端口,是上一步client发给server的数据传输监听端口。
总结:active 模式
2> passive 模式:
在passive 模式下,如下图所抓的包中,在命令部分(ftp类型的包),client端使用的端口是36434,这个端口是大于1024的任意端口,ftp server用的端口是21.
在passive模式下,如下图的第28个包,是由client端发起PASV(passive mode)的数据传输通道连接请求,所以为被动模式。
而在passive模式的数据传输部分(FTP-DATA类型的包),ftp-server端用的端口是3542,这个端口是在/etc/vsftpd/vsftpd.conf文件中passive模式下设置的端口范围(3000-4000,可以自己设置)中任意选的一个端口,ftp-client端用的是53001端口,是大于1024的任意一个端口。
总结:
passive模式