vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法
大多數的TCP服務是使用單個端口的連接,一般是用戶向服務器的一個某個端口發起連接,然后使用這個連接進行通訊。但FTP協議卻是例外,它使用雙向的多個連接
,而且使用的端口很難預計。
FTP連接包括:一個控制連接 (control
connection)
這個連接用于傳遞客戶端的命令和服務器端對命令的響應。它使用周知的TCP21端口,生存期是整個FTP會話時間。
N個數據連接 (data
connection)這些連接用于傳輸文件和其它數據,例如:目錄列表等。這種連接在需要數據傳輸時建立,而一旦數據傳輸完畢就關閉,每次使用的端口也不一定相同。而且,這種數據
連接既可能是客戶端發起的,也可能是服務器端發起的。
FTP協議使用一個標準的端口20作為ftp-data端口,但是這個端口只用于連接的源地址是服務器端的情況,在這個端口上根本就沒有監聽進程。
主動與被動模式
FTP的數據連接和控制連接的方向一般是相反的,即服務器向客戶端發起一個用于數據傳輸的連接。連接的端口是由服務器端和客戶端協商確定的,這就是vsftpd的主動模式(port
mod)。FTP協議的這個特征對iptables防火墻和NAT的配置增加了很多困難。在FTP被動模式 (passive
mod)下,數據連接是由客戶程序發起的,和主動模式相反。
選擇模式的原則
1、client 沒有防火墻時,用主動模式連接即可
2、server 沒有防火墻時,用被動模式即可
3、雙方都有防火墻時,vsftpd 設置被動模式高端口范圍,server 打開那段范圍,client
用被動模式連接即可
是否采取被動模式取決于客戶程序,在ftp命令行中使用passive命令就可以關閉/打開被動模式。
在xp命令行模式下使用ftp命令連接ftp服務器,用的是主動模式。瀏覽器方式下連接ftp服務器,可以修改訪問使用的模式。
iptables中配置vsftp
問題:配置iptables后,能夠登錄到vsftpd服務器,但ls列目錄失敗(超時)。
分析:
主動模式下:客戶連接
TCP/21,服務器通過 TCP/20 連接客戶的隨機端口
―這種情況下,通過狀態防火墻可以解決
iptables -A INPUT -m state
--state NEW,RELATED,ESTABLISHED -j ACCEPT
或者如下:
iptables -A INPUT -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p
tcp?-m multiport --dport 20,21?-m state --state NEW -j ACCEPT
NEW: 該包想要開始一個新的連接(重新連接或連接重定向)
RELATED:該包是屬于某個已經建立的連接所建立的新連接。如FTP的數據傳輸連接和控制連接之間就是RELATED關系。
ESTABLISHED:該包屬于某個已經建立的連接。
INVALID:該包不匹配于任何連接,通常這些包被DROP。
被動模式下:客戶連接
TCP/21,客戶再通過其他端口連接服務器的隨機端口,卡住的原因,是因為服務器在被動模式下沒有打開臨時端口讓 client
連過來。
臨時打洞的方法:
優點:不影響ftp配置;缺點:
客戶會感覺到連接有些延遲。原因參見ip_conntract的實現原理
在/etc/modprobe.conf中添加
alias ip_conntrack ip_conntract_ftp ip_nat_ftp
在/etc/rc.local中添加
/sbin/modprobe ip_conntract
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
限制被動模式連接端口的方法:
優點:對連接速度沒有影響。缺點:
限制了客戶端并發連接的數量。
在/etc/vsftpd/vsftpd.conf中添加
pasv_enable=YES
pasv_min_port=2222
pasv_max_port=2225
iptables中開放這段端口
-A INPUT -m state --state
RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j
ACCEPT
-A INPUT -p tcp --dport 2222:2225 -j ACCEPT
如果有硬件防火墻,也同樣需要打開這些端口!
總結
以上是生活随笔為你收集整理的vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现rtsp转rtmp
- 下一篇: Win10提示不是有效的字体文件怎么解决