一、簡介
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。
主動模式下FTP 客戶端首先和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令,PORT命令包含了客戶端用什么端口接收數據,在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。
被動模式(Passive)模式在建立控制通道的時候和Standard模式類似,但建立連接后發送的不是Port命令,而是Pasv命令,FTP服務器收到Pasv命令后,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然后FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
二、配置修改過程
因為大部分ftp客戶端軟件都是被動模式,所以就只介紹被動模式
1、設置被動模式打開的配置文件
#vim /etc/vsftpd/vsftpd.conf
添加或修改以下內容
connect_from_port_10021=YES //這里的10021端口,你可以修改為你喜歡的
pasv_min_port=8888 //設置被動模式的端口范圍,最小端口號~最大端口號 pasv_max_port=8899 //我們設置的范圍可以不用那么大,但數值最好大些(至少也大於1024)
2、然后更改防火策略
#vim /etc/sysconfig/iptables
添加以下防火規則
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10021 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888:8899 -j ACCEPT
3、最后重啟服務使防火規則生效
#service vsftpd restart
#service iptables restart
到這里我們的vsftp正式修改端口到10021
通過 ftp://IP:10021 來指定端口訪問,當然,如果你發現selinux還是會阻止ftp那就先設置為臨時關閉吧!(#setenforce 0)