兩權(quán)分立的FTP工作模式 |
發(fā)布時間: 2012/8/14 11:00:57 |
兩權(quán)分立的FTP工作模式,工作環(huán)境: ADSL---(219.154.214.150)NAT(10.41.221.2)-----PC(10.41.221.6/FTPSERVER)。
一、映射21端口到PC,PC安裝FTP服務(wù)serv-u,用serv-u是因為他可以方便的設(shè)置FTP的兩種工作模式。外網(wǎng)發(fā)起連接為例。 PORT方式能連接,不能列目錄 PASV方式能連接,不能列目錄分析:FTP支持兩種模式。這兩種模式被稱為“標(biāo)準(zhǔn)”(或PORT,或“主動”)和“被動”(或 PASV)。 “標(biāo)準(zhǔn)”模式FTP客戶端會向FTP服務(wù)器發(fā)送PORT命令。“被動”模式客戶端會向 FTP服務(wù)器發(fā)送PASV命令。這些命令是在建立FTP會話時通過FTP命令通道進(jìn)行發(fā)送的。 2種模式FTP客戶端都要建立一個到FTP服務(wù)器上TCP端口21的連接?蛻暨x擇大于 1024的端口發(fā)起連接,此連接會建立FTP命令通道。不能列目錄是因為FTP使用不同的通道來傳遞數(shù)據(jù),這也是FTP不同于HTTP服務(wù)的地方,HTTP需要一條通道就可以了 二、再映射20端口到PC,serv-u默認(rèn)的方式就是PORT方式。 PORT方式能連接、也能列目錄、能下載文件 PASV方式能連接、不能列目錄下載文件分析:PORT方式:當(dāng)FTP客戶端需要接收數(shù)據(jù)(如文件夾列表或者文件)時,客戶端就會通過 FTP命令通道發(fā)送PORT命令。此PORT命令包含了FTP客戶端在哪個端口(比如3328)上接收數(shù)據(jù)的相關(guān)信息。 接下來,PC從TCP端口20發(fā)起到3328用戶端口的連接,而這是一個新的連接,也許客戶端防火墻會攔截?梢钥闯鍪欠⻊(wù)器用20端口“主動”連接客戶指定的端口,所以PORT方式也叫主動方式。該模式下有2個特點: 1客戶是動態(tài)的端口,而服務(wù)器使用的是固定端口20,而且是服務(wù)器發(fā)起主動新連接。 2在FTP客戶連接服務(wù)器的整個過程中,控制信道是一直保持連接的,而數(shù)據(jù)傳輸通道是臨時建立的。 PASV方式不能到達(dá)是因為PASV要求服務(wù)器用動態(tài)的端口來連接,而這個端口一般在1024-5000之間,而且是用戶發(fā)起連接,雖然PC開了此端口等待連接,但是NAT并沒有映射這么多端口,所以通訊中斷。 三、關(guān)閉20端口映射,再映射10001-10004到PC, PORT方式能連接、不能列目錄、不能下載文件 PASV方式能連接、不能列目錄、不能下載文件 serv-u真的很帥,在設(shè)置(高級)選項中設(shè)置10001-10004,然后啟動被動模式,這樣就可以建立連接了。 分析:這個實驗的過程和分析被微軟收錄到微軟的官方網(wǎng)站上,不過通過我的實驗,發(fā)現(xiàn)他有個理解不全面的的地方,原因是他直接在可以見面的2臺計算機(jī)上做的實驗,而我把他們用NAT分開來做,更能看出問題。 問題出在所謂的“協(xié)商過程”,原文是這樣的: “發(fā)送PASV指令,在這個指令中,用戶告訴服務(wù)器自己要連接服務(wù)器的某一個端口,如果這個服務(wù)器上的這個端口是空閑的可用的,那么服務(wù)器會返回ACK的確認(rèn)信息,之后數(shù)據(jù)傳輸通道被建立并返回用戶所要的信息(根據(jù)用戶發(fā)送的指令,如ls、dir、get等);如果服務(wù)器的這個端口被另一個資源所使用,那么服務(wù)器返回UNACK的信息,那么這時,F(xiàn)TP客戶會再次發(fā)送PASV命令,這也就是所謂的連接建立的協(xié)商過程” 其實我抓到的報文是這樣的: 1serv-u在設(shè)置PASV方式是可以指定端口,而且端口被立即啟動到監(jiān)聽狀態(tài),比如我設(shè)置是10001 -10004,可以用有關(guān)軟件“看到”這些端口已經(jīng)被置為監(jiān)聽。 2當(dāng)客戶端通過該命令通道發(fā)送PASV命令時,F(xiàn)TP服務(wù)器會打開一個短暫的端口,并通知FTP客戶端從該端口請求數(shù)據(jù)傳輸,而不是協(xié)商解決。FTP服務(wù)器通過將該短暫端口用作,數(shù)據(jù)傳輸?shù)脑炊丝趤韺υ撜埱笞鞒鲰憫?yīng)。顯然,這個連接是由用戶發(fā)起的,過也叫被動方式。 3在FTP客戶連接服務(wù)器的整個過程中,控制信道是一直保持連接的,而數(shù)據(jù)傳輸通道是臨時建立的。 4端口在1024-5000之間,不要大于5000,為什么呀,我也不知道,因為我設(shè)置5000以上就不能建立TCP連接,實際是這樣理論我也不知道。 我沒有用其它軟件做FTP服務(wù)器,不能確定是否有協(xié)商過程,如果FTP這么弱智,那要協(xié)商到什么時候,不如直接告訴客戶不就行了。缺點是端口有限,如果多個用戶同時連接,這幾個端口是不夠的。 四、解決PASV問題的辦法:不能傳數(shù)據(jù)的問題出在:服務(wù)器向客戶端傳送了IP。當(dāng)FTP客戶端登錄進(jìn)入服務(wù)器的時候,PASV模式服務(wù)器會向客戶端傳送本機(jī)的IP地址和數(shù)據(jù)端口,當(dāng)服務(wù)器放在內(nèi)網(wǎng)中的時候,服務(wù)器會向客戶端返回內(nèi)網(wǎng)的IP,這當(dāng)然是不能完成連接的,需要讓服務(wù)器返回外網(wǎng)的地址。幸好,還是有一個好消息,就是serv-u本身具有返回外網(wǎng)地址這樣的功能,方法是先選中新建FTP 服務(wù)器的屬性,在domain標(biāo)簽里選擇“enabledynamicdns”,此時會出現(xiàn)第二個標(biāo)簽,叫 “dynamicdns”,然后到tz0.com申請動態(tài)域名,申請后會得到一個key,在此標(biāo)簽中填入此key即可。最后一步,是到新建服務(wù)器的settings屬性中,選擇advanced標(biāo)簽,選中“allowpassive modedatatransfer”,旁邊的IP地址框留空。這個框?qū)τ趽芴栍脩舨挥锰,只有出口使用固定地址才需要填。這樣,serv-u向客戶端返回IP和端口前,會先向tz0.com查詢到ISA外網(wǎng)的地址,再發(fā)送給客戶端。 總結(jié):采用什么方式是由用戶決定的,而主動和被動之說是相對服務(wù)器而言。在FTP客戶連接服務(wù)器的整個過程中,控制信道是一直保持連接的,而數(shù)據(jù)傳輸通道是臨時建立的。主動方式下是服務(wù)器以20端口發(fā)起連接,而被動方式下服務(wù)器告訴客戶一個動態(tài)端口,由客戶發(fā)起連接。如果你使用FTP客戶端程序是只能登錄不能傳數(shù)據(jù),不妨換一種工作模式,當(dāng)然需要服務(wù)器支持。 關(guān)于防火墻 對外網(wǎng)用戶而言,你的防火墻如果不接受主動連接,麻煩大了:標(biāo)準(zhǔn)模式FTP客戶端無法在此環(huán)境中運行,因為FTP服務(wù)器必須向FTP客戶端發(fā)出新的連接請求。對服務(wù)器而言,防火墻管理員可能不希望使用PASVFTP服務(wù)器,因為FTP服務(wù)器可以打開任何短暫端口號,如果防火墻配置允許未經(jīng)請求的連接完全訪問所有的短暫端口,則可能會是不安全的。 小技巧,IE默認(rèn)使用主動方式發(fā)起連接,要想使用被動方式,需要設(shè)置 IE-工具-Internet選項-高級在瀏覽下面,單擊“為FTP站點啟用文件夾視圖”復(fù)選框,將其清除。單擊“使用被動FTP(為防火墻和DSL調(diào)制解調(diào)器兼容性)”復(fù)選框,將其選中。單擊確定。如果選中了“為FTP站點啟用文件夾視圖”復(fù)選框,InternetExplorer的表現(xiàn)就會像“標(biāo)準(zhǔn)” 模式FTP客戶端一樣,即使您還選中了“使用被動FTP”復(fù)選框也是如此。如果您清除了“為 FTP站點啟用文件夾視圖”復(fù)選框,然后選中“使用被動FTP”復(fù)選框,InternetExplorer的表現(xiàn)就會像“被動”模式FTP客戶端一樣啦。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |