FTP的連接一般有兩種:一種是客戶程和服務器傳輸命令的,另一種是數據傳送的連接。FTP服務程序一般會支兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode)。
Port模式:
當客戶端向服務端連接后,使用的是Port模式,那么客戶端會發送一條命令告訴服務端(客戶端在本地打開了一個端口在等着你進行數據連接),當服務端收到這個Port命令后就會向客戶端打開的那個端口進行連接,這種數據連接就生成了。
Pasv模式:
當客戶端C向服務端S連接后,服務端S會發信息給客戶端C,這個信息是(服務端S在本地打開了一個端口M,你現在去連接我吧),當客戶端C收到這個信息后,就可以向服務端S的M端口進行連接,連接成功后,數據連接也建立了。
從上面的解釋中,可以看到兩種模式主要的不同是數據連接建立的不同,對於Port模式,是客戶端C在本地打開一個端口等服務端S去連接建立數據連接;而Pasv模式就是服務端S打開一個端口等待客戶端C去建立一個數據連接。
FTP需要2個端口,一個端口是作為控制連接端口,也就是21這個端口,用於發送指令給服務器以及等待服務器響應;另一個端口是數據傳輸端口,端口號為20(僅PORT模式),是用來建立數據傳輸通道的,主要有3個作用:
1.從客戶向服務器發送一個文件。
2.從服務器向客戶發送一個文件。
3.從服務器向客戶發送文件或目錄列表。
注意:所有FTP服務器軟件都支持PORT方式,大部分FTP服務器軟件PORT方式和PASV方式都支持,有些FTP服務器不支持PASV方式都支持,故造成了PASV 模式失敗,正在嘗試 PORT錯誤 或者 數據Sock錯誤。對症下葯,解決的方法其實很簡單――取消PASV模式。
2.具體的方法
1)在ie中如何啟用或者取消PASV模式:
如果要在ie里啟用或關閉PASV方式,先打開IE,在菜單里選擇:工具 -> Internet選項 -> 高級,在“使用被動ftp”前面打上鈎或者去掉鈎,不過需要IE6.0以上才支持。
2)FTP下載工具取消被動模式的方法:
★Cute FTP 3.5英文版:FTP―>Settings―>Options―>Firewall,將“PASV mode”前復選框中的打勾去掉。
★Cute FTP3.5中文版:FTP―>設置―>選項―>防火牆,“PASV方式(A)”前復選框中的打勾去掉。
★Cute FTP4.0中文版:右擊你所建立的ftp站點―>選擇屬性(properties)―>去掉"use PASV mod" 選擇項
★Cute FTP Pro2.0中文版:編輯―>全局設置―>連接―>連接類型,“PASV/PORT”下拉選項菜單選擇PORT。
★Leap FTP2.7.2:Sites―>Site Manager―>Advanced,將“Use PASV mode”前復選框中的打勾去掉。
★flashfxp: 選項->參數->代理->去掉“使用被動模式”
★flashget: 選項->參數->代理服務器->編輯->將“Use PASV mode”前復選框中的打勾去掉。
3.其他補充
如果你用Serv-U架設FTP,那么Serv-U默認配置下兩種方式都支持。
如果要關閉PASV方式,打開Serv-U,進入 Domains -> user.dns0755.net -> Settings -> Advanced -> 把“Allow passive mode data transfers”前面的鈎去掉。
在 Serv-U的Local Server -> Settings -> Advanced -> PASV port range里,填入給PASV模式使用的本地端口范圍,如60000-60020。請把端口范圍限制在20個以內。之后,再在防火牆里打開這個范圍的端口就可以了。
如果你用Filezilla架設FTP,那么filezilla默認配置下兩種方式都支持。我在FileZilla Server 設置菜單里被動模式選項(Passive Mode Settings)選項,進入被動模式設置。 選中啟動被動模式端口范圍的選項,輸入3000~3020端口范圍,相應的端口要在防火牆里添加放行。
4.FileZilla Server
下載最新版本,然后雙擊安裝。出現許可協議,選擇“I Agree”同意協議繼續……
在這一屏,中間的端口號是管理員登錄配置服務器的連接端口號,默認為14147。這個設置還關系到遠程登錄配置。可以根據自己的情況修改,當然也可以在安裝完成之后再修改。
點擊Close結束安裝,之后彈出連接服務器的窗口。FileZilla Server支持遠程配置,如果是從遠程進行配置的話,這里的地址、端口號和口令要跟遠程服務器上面的對應起來。
本例是從本地登錄,密碼正確無誤之后就進入服務器設置頁面。
首先要進行服務器全局參數設置:點“Edit”菜單,選“Settings”
General settings(常規設置):
Listen on Port:監聽端口,其實就是FTP服務器的連接端口。
Max.Number of users:允許最大並發連接客戶端的數量。
Number of Threads:處理線程。也就是CPU優先級別。數值調得越大優先級越高,一般默認即可。
下面的是超時設置,自上至下分別為:連接超時、傳輸空閑超時、登入超時。單位為秒。
Welcome message頁面設置客戶端登錄成功以后顯示的Welcome信息。建議不要用軟件默認的,因為任何軟件都不能保證沒有什么漏洞,如果在這里暴露軟件名稱的話,一旦這個FTP Server軟件有什么安全漏洞,別有用心的人知道了服務器軟件的名稱就可能針對性地發起攻擊。所以建議這里設置的信息不要包含任何服務器資料。
IP Filter(IP過濾器)頁面,設置IP過濾規則,在上面欄目中的IP是被禁止的,下面的是允許的。
Passive mode settings(被動傳輸模式設置):這個頁面要重點關注。如果服務器本身直接擁有公網IP,可以選軟件默認的“Default”。
倘若服務器是在局域網里面,在一個網關后面,那么就要選擇第二項“Use the follwoing IP”,並且在下面的輸入欄填寫公網的IP地址;否則,客戶端用PASV被動模式可能無法連接FTP服務器。因為服務器是在內網中,在客戶端使用PASV 模式連接服務器的時候,服務器收到連接請求之后需要把自身的IP地址告訴客戶端,由於服務器在內網中,它偵測到的IP地址是內網的(如 192.168.0.5),它把這個IP地址交給客戶端,客戶端自然無法連接。在這里設置了指定的IP地址后,服務器就會把這個公網合法的IP地址提交給客戶端,這樣才能正常建立連接。
如果服務器是動態IP的,那么可以選擇下面的“Retrieve external IP address from”,利用FileZilla官方網站免費提供的IP查詢頁面獲取當時的公網合法IP,然后服務器把這個公網合法IP地址提交給客戶端。當然靜態 IP也可以用這個,只不過沒有必要。
這個設置頁面對服務器位於內網的情況非常重要。有些FTP服務器端沒有這個設置項目,客戶端就只能用Port主動模式連接。當然有些客戶端軟件針對這個問題有專門的設置,如FlashFXP的站點設置中只要選中“被動模式使用站點IP”就可以了。
對於在局域網中的服務器,如果服務器沒有置於DMZ區,那么強烈建議選中下面的“Use custom port range”定義PASV端口范圍。由於PASV模式中,是服務器隨機打開端口,然后把打開的端口號告訴客戶端,讓客戶端連接打開的端口。但是因為服務器處於網關后面,如果網關那里沒有做對應的端口映射,客戶端從外網就無法連接服務器打開的端口,導致PASV模式連接失敗。在這里限定服務器打開的端口范圍,然后到連接外網的網關那里,對服務器的這些端口做端口映射(虛擬服務)。這需要服務器和Internet網關設備配合設置,這樣外網的客戶端才能用 PASV模式連接進來。
Security settings(安全設置):這里的兩個選項關系到能否FXP。軟件默認狀態“Block incoming server-to-server transfers”和“Block outgoing server-to-server transfers”兩項都是選中的,前面那項是禁止連入的服務器對傳,后面是禁止傳出的服務器對傳。也就是說默認狀態不允許FXP,如果需要使用 FXP,那么就把這兩個項目取消選擇。注意FXP傳輸除了跟這個頁面的設置有關,還跟IP過濾器有關。
Admin Interface setting(管理員界面設定):這個就是登錄配置服務器界面的一些參數。端口號的設置在安裝的時候也出現過。下面兩欄可以定義允許遠程登錄配置的網絡界面和IP地址。在最下面更改管理員口令。
Logging(日志):設定是否啟用日志記錄功能以及日志文件大小和文件名。
Speed Limits(速度限制):這個是全局參數,默認狀態不限速。可以選中“Constant Speed Limit of”並填寫限速數值來實現速度限制,下載(傳出)和上傳(傳入)可以分別設置。還可以根據時段自定義限速規則——“Use Speed Limit Rules”,比如這台服務器或者網絡連接除了做FTP服務器之外還有別的用途,需要根據時間調度,不能讓FTP傳輸擠占所有網絡帶寬影響其它的網絡服務;就可以通過這里設置。
Filetransfer compression(文件傳輸壓縮設置):MODE Z FTP協議是一種實時壓縮的傳輸協議。在這種模式下,發送方的數據在發出之前先進行壓縮,再送到網絡鏈路中傳輸,接收方將收到數據實時解包,在本地還原重組成原文件。這種模式可以大幅度減少網絡中的數據流量,提升傳輸效率(速度)。當然對於已經壓縮過的文件,就幾乎沒有效果了。要使用這種傳輸模式,需要服務器端和客戶端都支持MODE Z協議。
勾選“Enable MODE Z support”就可以啟用本服務器的MODE Z支持功能,這樣,只要客戶端也支持MODE Z就可以獲得它帶來的性能提升。“Minimum allowed compression level”和“Maximum allowed compression level”分別設置最小壓縮率和最大壓縮率。最下面可以輸入不啟用MODE Z功能的目標IP。
完成這些設置以后,點擊“OK”按鈕保存設置並退出服務器全局設置頁面返回主界面。
下面要進行的是用戶組(Group Settings)設置。在主界面點擊第五個按鈕或者由“Edit”——“Groups”菜單進入。
組設置是為了便於用戶歸類管理,相同權限的用戶歸屬到同一個組里面,這樣就不用重復多次設置每個用戶的權限等參數,簡化配置和管理工作。點擊右邊的 “Add”按鈕創建新組。
組創建完成以后,點“Shared folders”進入目錄權限設置頁面。點擊中間區域的“Add”按鈕添加目錄。默認狀態添加的第一個目錄即為該組用戶登錄之后看到的主目錄(Home Directory),主目錄前面有個粗體的“H”標識。目錄列表右側分別是對該目錄的操作權限設置,上面是文件權限設置,下面是目錄權限設置。如果要改變主目錄,只要在列表中選中需要設置為主目錄的那個,然后點擊“Set as home dir”按鈕即可。
設置好主目錄之后,再點擊“Add”按鈕把其余的目錄依次設置進來就可以了。不過這里得注意,如果僅僅把別的目錄添加進去,那么你用客戶端連接之后,會發現除了主目錄和它的子目錄之外,別的目錄都看不見。這是怎么回事?這里要說明一個概念——虛擬路徑。所謂虛擬路徑,就是在客戶端看到的目錄結構。由於一個用戶只能有一個主目錄,別的目錄如果不映射成虛擬目錄的話,客戶端將看不到它。所以只有把除了主目錄之外的其它目錄,虛擬成主目錄的子目錄,這樣在客戶端才能看到。
比如本例,主目錄是D:/Downloads,如果不做虛擬路徑設置,那么客戶端登錄進來只能看到主目錄里面的內容,還有一個E:/FTPRoot目錄下面的東西看不到。如何設置虛擬路徑?鼠標右鍵點擊列表中的“E:/FTPRoot”目錄,在彈出的菜單里面選“Edit aliases”編輯別名;現在要把E:/FTPRoot目錄作為客戶端主目錄下的FTPRoot目錄,那么就在彈出的窗口里面輸入“D: /Downloads/FTPRoot”並點擊“OK”按鈕確定。注意拼寫規則,路徑的前面部分必須是主目錄的絕對路徑。這樣設置之后,在客戶端就可以看到一個“FTPRoot”目錄,這個目錄其實就是E:/FTPRoot目錄。
組設置中的“Speed Limits”和“IP Filter”跟全局設置里面的速度限制和IP過濾器設置方法是一樣的,請參照前面的內容。只不過這個是僅僅針對這個組的用戶生效。而全局設置是對所有的用戶都生效。
設置完畢之后點擊“OK”按鈕回到主界面。
最后一項就是設置用戶(Users)。點擊主界面第四個按鈕或者由“Edit”——“Users”菜單進入。
點擊右邊的“Add”按鈕創建用戶,在“Password”域輸入用戶口令。然后從“Group membership”欄選擇該用戶所屬的組(Group),這樣該用戶將繼承該組的所有屬性/權限,不用再單獨一一設置這些參數了。這也是設置組體現的方便性,在用戶比較多的時候使用組來分類會使得管理工作更加方便、高效。完畢之后點“OK”按鈕保存設置並返回主界面。
當然,也可以設置一個不屬於任何組的用戶,這樣的話,就得單獨定制該用戶的權限。對於少量特殊用戶,可以用這種方式設置。
至此,FileZilla Server的基本設置就完成並可以運行了。
對於初次使用FTP Server軟件的用戶,本文也可以作為入門參考。其實所有的FTP Server軟件安裝設置的基本原理都是類似的,掌握了一個之后,別的可以舉一反三融會貫通。