防火墻對ftp的影響以及解決方法;
從上述ftp工作的簡單描述中我們看到防火墻會影響到client <->; server
的數(shù)據(jù)傳輸,有下列幾種情況:
。保.server <-wan->; client,沒有防火墻,沒有任何限制。
2).server <-wan->;fw -- client,client在防火墻后面,使用私網地址,
通過NAT訪問公網:
在一般的情況下,port指令將被防火墻阻擋,表現(xiàn)為client發(fā)port
指令(通常ls就會需要進行一次data傳輸)時總是得不到server的響應,直到超時
錯誤,此時,是因為server無法連接到client所開的隨機高端口(client在port指
令中會告知server自己所開的端口以及自己的地址);此時client可以使用pasv模
式進行工作;如果該client不能使用pasv指令(如一些簡單的ftp client程序,我
遇到的有ca kill的病毒代碼庫自動升級程序,使用ftp從服務器下載升級文件),
就要求防火墻具有outing ftp proxy功能(iptables稱ftp conntrack),或稱ftp
映射內核代理,即防火墻監(jiān)控在特定端口(一般是21)的ftp連接,在檢測到client
向server發(fā)送的port指令時,把該指令中的client地址以及端口修改為防火墻地址以
及端口,再把修改后的數(shù)據(jù)發(fā)往server,同時在server返回數(shù)據(jù)時將該數(shù)據(jù)重定向到
client的監(jiān)聽端口,完成一次完整的port過程;
在Ipfilter下可以使用類似下面的nat規(guī)則實現(xiàn),其他的防火墻產品請查閱其文檔:
map ed0 192.168.100.0/24 ->; 211.97.116.21x/32 proxy port ftp ftp/tcp
3).server --fw <-wan->; client,server在防火墻后面,使用私網地址,通過fw的
重定向接收外部訪問:
此時,port指令沒問題,但是pasv會被防火墻阻擋,出錯的表現(xiàn)類似port指令,
此時,client可使用port指令工作;如果需要server支持pasv,需要在防火墻以及ftp server
上做相應的設置:
首先,設置pasv參數(shù):
Proftpd:
#/usr/local/etc/proftpd.conf
MasqueradeAddress 211.97.116.21x
#該參數(shù)設置在client發(fā)pasv指令時,server返回給client的pasv地址串中應該包含的連接地址,
#該地址通常是防火墻的外部地址(作rdr的地址)
PassivePorts 30001 50000 # These ports should be safe...
#該參數(shù)說明pasv指令使用的端口范圍
對于pure-ftpd
# Port range for passive connections replies. - for firewalling.
PassivePortRange 30001 50000
#在防火墻上開放的passsive端口范圍
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
ForcePassiveIP 211.97.116.21x
#這里211.97.116.21x就是防火墻進行rdr的公網地址了。
對于windows里的serv-u在其高級設置里也有類似的設置(passive ports,passive address),
圖形界面,很簡單了;
如果是其他的ftpd,應該也有類似的設置,如wu-ftpd,不熟悉,不胡說。
然后設置防火墻:
pass in on ed0 proto tcp from any to 192.168.100.10 port 30000 >;< 50001 flags S keep state
#允許外部連接server的pasv端口范圍
rdr ed0 211.97.116.21x/32 port 30001-50000 ->; 192.168.100.10 port 30001 tcp
#將該范圍的端口重定向到ftp server
#注意:某些ftp server并沒有proftpd這樣的配置參數(shù)(比如ms iis里的ftp),
#將不能通過此方法解決問題,具體請查閱其說明書。
如果是使用iptables,就簡單些:
#iptables modules
#modprobe ip_tables
#nat
modprobe iptable_nat
#connect_track
modprobe ip_conntrack
#ftp NAT,PASV,PORT command.
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
有ftp的DNAT支持模塊,在規(guī)則里做21端口的DNAT重定向即可,conntrack會自動維護其中的PORT/PASSIVE關系。
4).server --fw<->;fw -- client server和client都在防火墻后面:
如果沒有特別的方法,server和client之間將不能工作;解決的辦法就是綜合上述2).3)的方法,
在server的防火墻以及client的防火墻分別做相應的設置.
BTW:不單是ftp server,其他的某些服務也有類似問題,比如netmeeting(h323),pptp server,解決的思路也相似。
我是億恩科技小路 qq :1339268817 電話:0371-60135992
歡迎您的垂詢!!
億恩科技云計算數(shù)據(jù)中心,機柜10M獨享托管 代理年付只需 55000元 本文出自:億恩科技【1tcdy.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|