解決外網無法訪問局域網中XP下搭建的FTP服務器

問題描述:

在一臺局域網機器上的windows xp2環境下用serv-u軟件搭建了一個FTP服務器,局域網內可以順利登入服務器,但是,在對路由器進行了正確的端口映射配置後,如果外網計算機是win98,winme,win2000,win2003則可以訪問局域網內服務器,可如果是winxp+sp2則無法訪問。另外,服務器上的windows xp2是用GHOST版本的,裏面沒有安裝IIS服務。

 

問題解決:

右鍵“Internet Explorer”,選擇“高級”選項卡,在“設置”框內找到“使用被動FTP(爲防火牆和DSL調制解調器兼容性)”一項,將其前面的勾去掉即可

 

其它相關參考資料:

(一)

打開FTP服務器上的文件夾時發生錯誤,請檢查是否有權限訪問該文件夾

在win98,winme,win2000,win2003下都能正常上傳文件夾,但在winxp+sp2下同樣的文件夾就可能出現問題

1、 打開IE的菜單"工具"->"Internet 選項";

2、 點擊“高級”標籤卡;

3、 將“瀏覽”節點下的“使用被動FTP(爲防火牆和DSL調制解調器兼容性)”前面的勾去掉。

引用

ftp協議有兩種工作方式:port方式和pasv方式,中文意思爲主動式和被動式。

port(主動)方式的連接過程是:客戶端向服務器的ftp端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器從20端口向客戶端的空閒端口發送連接請求,建立一條數據鏈路來傳送數據。

pasv(被動)方式的連接過程是:客戶端向服務器的ftp端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端向服務器的空閒端口發送連接請求,建立一條數據鏈路來傳送數據。

因爲port方式在傳送數據時,由服務器主動連接客戶端,所以,如果客戶端在防火牆或nat網關後面,用port方式將無法與internet上的ftp服務器傳送文件。這種情況需要使用pasv方式。幾乎所有的ftp客戶端軟件都支持這兩種方式。特殊的典型例子是ie,ie默認是用port方式的。如果要在ie裏啓用pasv方式,請打開ie,在菜單裏選擇:工具 -> internet選項 -> 高級,在“使用被動ftp”前面打上鉤(需要ie6.0以上才支持)。

 

 

(二)

 

 

 

兩權分立的FTP工作模式,工作環境: ADSL---(219.154.214.150)NAT(10.41.221.2)-----PC(10.41.221.6/FTPSERVER)。

 

一、映射21端口到PC,PC安裝FTP服務serv-u,用serv-u是因爲他可以方便的設置FTP的兩種工作模式。外網發起連接爲例。 PORT方式能連接,不能列目錄 PASV方式能連接,不能列目錄分析:FTP支持兩種模式。這兩種模式被稱爲“標準”(或PORT,或“主動”)和“被動”(或 PASV)。“標準”模式FTP客戶端會向FTP服務器發送PORT命令。“被動”模式客戶端會向 FTP服務器發送PASV命令。這些命令是在建立FTP會話時通過FTP命令通道進行發送的。 2種模式FTP客戶端都要建立一個到FTP服務器上TCP端口21的連接。客戶選擇大於 1024的端口發起連接,此連接會建立FTP命令通道。不能列目錄是因爲FTP使用不同的通道來傳遞數據,這也是FTP不同於HTTP服務的地方,HTTP需要一條通道就可以了

二、再映射20端口到PC,serv-u默認的方式就是PORT方式。 PORT方式能連接、也能列目錄、能下載文件 PASV方式能連接、不能列目錄下載文件分析:PORT方式:當FTP客戶端需要接收數據(如文件夾列表或者文件)時,客戶端就會通過 FTP命令通道發送PORT命令。此PORT命令包含了FTP客戶端在哪個端口(比如3328)上接收數據的相關信息。接下來,PC從TCP端口20發起到3328用戶端口的連接,而這是一個新的連接,也許客戶端防火牆會攔截。可以看出是服務器用20端口“主動”連接客戶指定的端口,所以PORT方式也叫主動方式。該模式下有2個特點:

1客戶是動態的端口,而服務器使用的是固定端口20,而且是服務器發起主動新連接。

2在FTP客戶連接服務器的整個過程中,控制信道是一直保持連接的,而數據傳輸通道是臨時建立的。 PASV方式不能到達是因爲PASV要求服務器用動態的端口來連接,而這個端口一般在1024-5000之間,而且是用戶發起連接,雖然PC開了此端口等待連接,但是NAT並沒有映射這麼多端口,所以通訊中斷。

三、關閉20端口映射,再映射10001-10004到PC, PORT方式能連接、不能列目錄、不能下載文件 PASV方式能連接、不能列目錄、不能下載文件 serv-u真的很帥,在設置(高級)選項中設置10001-10004,然後啓動被動模式,這樣就可以建立連接了。

分析:這個實驗的過程和分析被微軟收錄到微軟的官方網站上,不過通過我的實驗,發現他有個理解不全面的的地方,原因是他直接在可以見面的2臺計算機上做的實驗,而我把他們用NAT分開來做,更能看出問題。

問題出在所謂的“協商過程”,原文是這樣的: “發送PASV指令,在這個指令中,用戶告訴服務器自己要連接服務器的某一個端口,如果這個服務器上的這個端口是空閒的可用的,那麼服務器會返回ACK的確認信息,之後數據傳輸通道被建立並返回用戶所要的信息(根據用戶發送的指令,如ls、dir、get等);如果服務器的這個端口被另一個資源所使用,那麼服務器返回UNACK的信息,那麼這時,FTP客戶會再次發送PASV命令,這也就是所謂的連接建立的協商過程”

其實我抓到的報文是這樣的:

1serv-u在設置PASV方式是可以指定端口,而且端口被立即啓動到監聽狀態,比如我設置是10001 -10004,可以用有關軟件“看到”這些端口已經被置爲監聽。

2當客戶端通過該命令通道發送PASV命令時,FTP服務器會打開一個短暫的端口,並通知FTP客戶端從該端口請求數據傳輸,而不是協商解決。FTP服務器通過將該短暫端口用作,數據傳輸的源端口來對該請求作出響應。顯然,這個連接是由用戶發起的,過也叫被動方式。

3在FTP客戶連接服務器的整個過程中,控制信道是一直保持連接的,而數據傳輸通道是臨時建立的。

4端口在1024-5000之間,不要大於5000,爲什麼呀,我也不知道,因爲我設置5000以上就不能建立TCP連接,實際是這樣理論我也不知道。

我沒有用其它軟件做FTP服務器,不能確定是否有協商過程,如果FTP這麼弱智,那要協商到什麼時候,不如直接告訴客戶不就行了。缺點是端口有限,如果多個用戶同時連接,這幾個端口是不夠的。

四、解決PASV問題的辦法:不能傳數據的問題出在:服務器向客戶端傳送了IP。當FTP客戶端登錄進入服務器的時候,PASV模式服務器會向客戶端傳送本機的IP地址和數據端口,當服務器放在內網中的時候,服務器會向客戶端返回內網的IP,這當然是不能完成連接的,需要讓服務器返回外網的地址。幸好,還是有一個好消息,就是serv-u本身具有返回外網地址這樣的功能,方法是先選中新建FTP 服務器的屬性,在domain標籤裏選擇“enabledynamicdns”,此時會出現第二個標籤,叫 “dynamicdns”,然後到tz0.com申請動態域名,申請後會得到一個key,在此標籤中填入此key即可。最後一步,是到新建服務器的settings屬性中,選擇advanced標籤,選中“allowpassive modedatatransfer”,旁邊的IP地址框留空。這個框對於撥號用戶不用填,只有出口使用固定地址才需要填。這樣,serv-u向客戶端返回IP和端口前,會先向tz0.com查詢到ISA外網的地址,再發送給客戶端。

總結:採用什麼方式是由用戶決定的,而主動和被動之說是相對服務器而言。在FTP客戶連接服務器的整個過程中,控制信道是一直保持連接的,而數據傳輸通道是臨時建立的。主動方式下是服務器以20端口發起連接,而被動方式下服務器告訴客戶一個動態端口,由客戶發起連接。如果你使用FTP客戶端程序是隻能登錄不能傳數據,不妨換一種工作模式,當然需要服務器支持。

關於防火牆

對外網用戶而言,你的防火牆如果不接受主動連接,麻煩大了:標準模式FTP客戶端無法在此環境中運行,因爲FTP服務器必須向FTP客戶端發出新的連接請求。對服務器而言,防火牆管理員可能不希望使用PASVFTP服務器,因爲FTP服務器可以打開任何短暫端口號,如果防火牆配置允許未經請求的連接完全訪問所有的短暫端口,則可能會是不安全的。

小技巧,IE默認使用主動方式發起連接,要想使用被動方式,需要設置 IE-工具-Internet選項-高級在瀏覽下面,單擊“爲FTP站點啓用文件夾視圖”複選框,將其清除。單擊“使用被動FTP(爲防火牆和DSL調制解調器兼容性)”複選框,將其選中。單擊確定。如果選中了“爲FTP站點啓用文件夾視圖”複選框,InternetExplorer的表現就會像“標準” 模式FTP客戶端一樣,即使您還選中了“使用被動FTP”複選框也是如此。如果您清除了“爲 FTP站點啓用文件夾視圖”複選框,然後選中“使用被動FTP”複選框,InternetExplorer的表現就會像“被動”模式FTP客戶端一樣啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章