一例IE訪問IIS FTP超時故障的分析
日期:2017/2/8 10:29:37   編輯:關於服務器
今天在Windows 2003 Server上安裝IIS的FTP,服務器開了Windows防火牆,添加了例外:允許外界連接21端口。一切設置完畢,使用IE連接卻始終無法打開,狀態欄顯示“正在獲取文件夾的內容”,最後提示“操作超時”。
在命令提示符下登陸一切正常,可以dir目錄內容,get文件等。
重新調整了FTP設置、用戶權限、NTFS權限,問題依舊。
用Cuteftp軟件連接,發現了問題所在,使用PASV模式無法傳輸數據改用PORT模式一切正常。
上網查詢了關於FTP兩種連接模式的資料:
FTP的連接模式有兩種,PORT和PASV。PORT模式是一個主動模式,PASV是被動模式,這裡都是相對於服務器而言的。
PORT模式建立數據傳輸通道是由服務器端發起的,服務器使用20端口連接客戶端的某一個大於1024的端口;
在PASV模式中,數據傳輸通道的建立是由FTP客戶端發起的,他使用一個大於1024的端口連接服務器的1024以上的某一個端口。
如果從C/S模型這個角度來說,PORT對於服務器來說是OUTBOUND,而PASV模式對於服務器是INBOUND,這一點請特別注意,尤其是在使用防火牆的企業裡,比如使用微軟的ISA Server 2000發布一個FTP服務器,這一點非常關鍵,如果設置錯了,那麼客戶將無法連接。
[參考] http://www.microsoft.com/china/community/Column/70.mspx
至此清楚了故障的原因:服務器打開了Windows防火牆,ifly通過添加端口允許外界訪問服務器的21端口,因此FTP的控制信息可以正常傳輸。使用CMD登陸時,由於采用的是PORT模式,服務器使用20端口向客戶端發起連接,這個outbound過程會被Windows防火牆放行,因此可以建立數據通道。而使用IE登陸時,默認采用的是PASV模式,客戶端試圖連接服務器1024以上的某個端口,這個對於服務器的inbound過程被防火牆過濾掉了,因此無法建立數據通道,出現超時錯誤。
解決這個問題可以從服務器或客戶端兩方面著手:
對於服務器可以打開需要的端口,但PASV模式連接的端口號不定,不能通過“添加端口”的方式,可以照(圖1)那樣通過“添加程序”的方式在防火牆上打洞。
對於客戶機,指定IE只使用PORT模式也可以解決問題。見圖2,IE工具菜單->
Internet選項->高級->去掉“使用被動FTP”前面的勾即可。
圖1、Windows防火牆添加程序例外
圖2、IE設置不使用PASV模式