FTP模式說明:shell
FTP是基於TCP的服務,使用2個端口,一個數據端口和一個命令端口(也可叫作控制端口)。windows
固定的命令端口:21瀏覽器
數據端口:(取決於鏈接模式)20或者>1024其它端口服務器
主動FTP併發
主動方式的FTP是這樣的:客戶端從一個任意的非特權端口N(N>1024)鏈接到FTP服務器的命令端口,也就是21端口。而後客戶端開始監聽端口N+1,併發送FTP命令"port N+1"到FTP服務器。接着服務器會從它本身的數據端口(20)鏈接到客戶端指定的數據端口(N+1)。tcp
針對FTP服務器前面的防火牆來講,必須容許如下通信才能支持主動方式FTP:工具
1. 任何端口到FTP服務器的21端口 (客戶端初始化的鏈接 S<-C)spa 2. FTP服務器的21端口到大於1024的端口(服務器響應客戶端的控制端口 S->C)ip 3. FTP服務器的20端口到大於1024的端口(服務器端初始化數據鏈接到客戶端的數據端口 S->C)ci 4. 大於1024端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口 S<-C) 總結: 命令鏈接:客戶端>1024端口-> 服務器21端口 |
被動FTP
爲了解決服務器發起到客戶的鏈接的問題,人們開發了一種不一樣的FTP鏈接方式。這就是所謂的被動方式,或者叫作PASV,當客戶端通知服務器它處於被動模式時才啓用。
在被動方式FTP中,命令鏈接和數據鏈接都由客戶端,這樣就能夠解決從服務器到客戶端的數據端口的入方向鏈接被防火牆過濾掉的問題。當開啓一個 FTP鏈接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口鏈接服務器的21端口,但與主動方式的FTP不一樣,客戶端不會提交PORT命令並容許服務器來回連它的數據端口,而是提交 PASV命令。這樣作的結果是服務器會開啓一個任意的非特權端口(P > 1024),併發送PORT P命令給客戶端。而後客戶端發起從本地端口N+1到服務器的端口P的鏈接用來傳送數據。
對於服務器端的防火牆來講,必須容許下面的通信才能支持被動方式的FTP: 1. 從任何端口到服務器的21端口 (客戶端初始化的鏈接 S<-C) 2. 服務器的21端口到任何大於1024的端口 (服務器響應到客戶端的控制端口的鏈接 S->C) 3. 從任何端口到服務器的大於1024端口 (入;客戶端初始化數據鏈接到服務器指定的任意端口 S<-C) 4. 服務器的大於1024端口到遠程的大於1024的端口(出;服務器發送ACK響應和數據到客戶端的數據端口 S->C) 總結: 命令鏈接:客戶端>1024端口-> 服務器21端口
|
根據上面的基本描述,咱們能夠知道。整改備份數據上傳只能使用主動模式鏈接才能成功!
如下爲各客戶端默認鏈接方式說明及主動模式更改方法。
各客戶端默認鏈接方式說明: 一、 IE瀏覽器訪問方式-------à被動模式 二、 Linux字符鏈接------------à被動模式 三、 Windows字符鏈接-------à主動模式 IE更改FTP鏈接方式爲主動方法: 工具---Internet選項---高級---使用被動FTP(去掉勾選)-------OK Linux下更改ftp鏈接方式爲主動: 當ftp正常鏈接後輸入:passive 將passive 模式關閉便可。 事例以下:
|
因爲整個備份計劃所有由shell完成。故windows下面可不作任何更改。Linux下面則需作少量改動。
實際操做以下:
更改shell上傳部分腳本以下:
ftp -inv <<EOF open 192.168.x.xx user username password passive binary cd bakdir mput ${backname}* mdelete ${backname}${olddate}.tgz EOF |
更改防火牆策略。增長如下內容:
# vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --sport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --sport 21 -j ACCEPT |
重啓防火牆生效!!