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