2010年7月13日 星期二

nternet Explorer (IE) 進行FTP時常見錯誤說明

Internet Explorer (IE) 進行FTP時常見錯誤說明

常見錯誤1:

FTP 資料夾錯誤 開啟 FTP 伺服器的資料夾時發生錯誤。

請確定您有存取這個資料夾的權限。

詳細資料:操作等後逾時

非常經典的錯誤,基本上這個場合 IE 算是亂報錯誤,誤導使用者,

在這裡發生的錯誤與資料夾的權限並無關係,

而是 IE 已經登入 FTP Server (伺服器),

但是登入之後無法建立資料連線,所謂的資料連線就是 data connection,

講白話一點就是用來傳輸檔案目錄列表的連線無法建立。

解決方式,客戶端無法完成這的動作,有兩種可能性,

你必須先打開 FTP Server介面來看一下

錯誤在的用戶目前使用的是 PASV 還是 PORT 命令,方法如下:

如果出現如下的錯誤,表示用的是 PASV (被動式 Passive FTP),

表示你 FTP Server 端沒設好,

您只開通了 Server port 21,但沒有開通 data ports 1400-1410

如果出現類似上面的錯誤,但顯示的是 PORT failed (主動式 Active FTP),

表示你 FTP Client 端位於防火牆或分享器後,

解決方式為將 IE 設定為使用 被動式FTP。

IE 開啟使用被動式 FTP (PASSIVE MODE) 的方法,

進入 工具 > 網際網路選項 > 進階分隔頁 > 瀏覽子項目 > 勾選

使用被動式 FTP (為了防火牆及 DSL 數據機的相容性)。

如果改用了被動式 Passive FTP 還是不行,還是相同的錯誤,那很簡單,

就是您的 Server data ports 並未開通,請參照修正 PASV 問題的方式修正即可。


===========================================================================

[轉貼]
PORT和PASV模式的最核心區別在於服務器和客戶端誰主動去連接誰。

如果服務器和客戶端都有合法(Internet上唯一)的IP地址

(使用端口映射等技術讓自己看起來有合法地址也可以)

,兩種模式其實沒什麼區別。關鍵在於有一方或兩方是在內網中,

通過PROXY或網關使用NAT上網時,

兩種方式區別就出來了。

PORT模式是讓服務器去連接客戶端,這時客戶端必須有合法的IP地址,

服務器端可以用網關NAT的方式去找到客戶端

,服務器可以沒有合法IP地址,例如192.168.*.*之類,

因為這時對服務器來說IP地址無關緊要,

祇要服務器端能上網找到客戶端即可。如果客戶端這時也是用的通過內網網關上網就麻煩了,

客戶端給服務器報告自己的IP是192.168.*.*、10.*.*.*之類不合法、不唯一的地址,

結果服務器打著燈籠也找不到客戶端,數據Socket自然就聯不起來。

PASV模式正好相反,這時服務器必須有合法的IP地址,

客戶端可以是內網機器,道理和上面是一樣的。

一般來說,開始的時候FTP總是客戶端主動連上服務器的,

因此絕大多數情況下,PASV總是好用的,

也因此部分下載軟件,如Netants把PASV模式作為唯一下載模式。

什麼時候有問題呢,當服務器躲在防火牆之後,

防火牆軟件僅把21端口映射給服務器時就會有問題。



我們知道Socket連接有兩個重要參數,一個是IP地址,一個是端口(PORT)。

端口是用來區分服務類型的東西,有了端口的區別,

一台計算機才可以既提供FTP下載,又可以開Web讓大家瀏覽,

還可以同時開個BBS,一個IP地址就夠了。端口號從1到65535。

如果是FTP服務,則是端口21。

PORT模式下是客戶端向服務器報告自己的IP地址,同時報告自己的一個端口,

意思是說:我這裡有個端口****空閒,你來連吧。

PASV模式則將前面的客戶端和服務器調過個就是了。

一般內網開服務器必須做端口映射。

因為一般稱為網關的那台計算機(或路由器)才有合法IP,

內網開服務器時,客戶端連接服務器實際上連的是它,

並沒能直接連接到真正開服務的那台計算機上。

這時,網關必須設置好一些參數,

區分連到自己的各個端口的請求應該自己處理還是扔給內網的某台服務器處理,

例如把21端口的請求都轉給內網的某台FTP服務器去處理。在PORT模式下,這就夠了。

PASV模式是服務器提供自己的IP和一個端口號(>1024)讓客戶端來連,

服務器的IP不合法一般不要緊,

數據包從網關出去時多數情況會自動翻譯成網關自己的合法IP的

(NAT——網絡地址轉換,共享上網的基礎技術),

但端口號就不行了,客戶端按照這個端口來連接到網關時,

網關如果不設置把這些端口的請求都轉給FTP服務器,

Socket就連不起來。這種情況的設置經常漏掉,

所以內網開FTP服務器常不能支持PASV模式。

——是設置不全,而不是不可能。

========================================================

FTP傳輸模式

FTP的連線包括兩種不同用途,一個是傳遞客戶端與伺服器之間的Command的,

也就是一般我們在設定的FTP通訊埠(預設21)。另一個是資料傳送的連線,

FTP資料傳送的模式又分二種:PORT、PASV。

兩者主要分別在於它們會向FTP伺服器發出不同的FTP Command。

PORT模式:

當用戶端要求與FTP伺服器進行檔案傳輸時,用戶端會向FTP伺服器發出Port Command,

用戶端會在本機開啟一個PORT,而FTP伺服器接收到命令之後,

便會依據用戶端的要求,去連結這個通訊埠建立連線。

伺服器必須允許打開用戶使用的FTP客戶端新連接(FTP client port),才能進行檔案傳送。

PASV 模式:

用戶端向FTP伺服器發出PASV Command,

FTP伺服器只需在本機打開一個短暫的連接埠,然後回應用戶端,

用戶端接收到訊息之後,就可以向這個通訊埠建立檔案傳輸連線。

========================================================================


Definition: PASV is an alternative mode for establishing File Transfer Protocol (FTP) connections. PASV mode is designed for FTP clients behind firewalls.

PASV mode works by allowing FTP clients to initiate sending of both control and data messages. Ordinarily, only FTP servers initiate the data requests. Because many client firewalls reject incoming messages like these FTP requests, PASV mode makes FTP "firewall-friendly."

Most FTP clients, including Web browsers like Internet Explorer, support a PASV FTP option. However, configuring PASV on the client doesn't guarantee that PASV mode will work, as FTP servers may choose to deny PASV mode connections. Some network administrators disable PASV mode on FTP servers because of the additional security risks PASV entails.

Also Known As: passive mode FTP
Examples:
To set the PASV option in Internet Explorer, check the "Use Passive FTP" box in the Advanced tab under Tools/Internet Options. This option will not work with older FTP servers that do not support PASV. Also, PASV bugs have been found in FTP servers and firewalls, so this option is not 100% reliable.
=============================================================================

連線IIS的FTP Server時候,如果SERVER有裝防火牆,

而用戶端電腦又在NAT環境底下,以往都必須要叫使用者切換自己FTP軟體的PASV模式。

原來只要調整IIS以及防火牆的設定就可以了。

以下的設定是要讓IIS FTP固定PASV mode 的PORT在5500-5520,步驟如下

1. 開啟命令提示字元
2. 切換到 c:\inetpub\adminscripts
3. 執行 adsutil.vbs set /MSFTPSVC/PassivePortRange 5500-5520

4. 接著要開啟防火牆的設定,將port 5500-5520 打開,讓FTP可以連線

如此就可以讓使用者的電腦不用再特別設定PASV模式,就可以上傳資料。

參考資料


[教學] 什麼是PASV

防火牆有很多種,其中有一些會禁止那些不是從內部網路IP發出的連接請求。
而ftp協定是個很老的東東,沒有考慮這個問題。
可以這樣簡單描述一般ftp的工作原理:
client對server發出請求:“嗨,我的xx埠正等著你傳送資料呢,sever聽到這個請求,就會建立一個連接,指向這個埠,並且開始傳送資料。
這就回到了我們的問題,如果發出請求的client在防火牆的後面,而這
個防火牆禁止外部IP建立連接,那麽當然server(在外部)不能建立與client的
連接。
所以,過了幾年,人們修改了ftp協定以應付這種情況。
這就是passive mode,
工作原理如下:client向server發出passive命令,
server回答說:“資料在xx埠等你,自己來拿。”
而這回則由client建立指向server的連接,從而取得資料。
這就避免了防火牆的限制。

沒有留言:

張貼留言