|
||||||
A : 大部分的FTP使用者都沒聽過PASV(被動)以及PORT指令,不過這並不是您的錯。首先您必須先了解每個FTP的Session都會用到兩個TCP的連結,連到FTP伺服器時用第一個,當您要作DIR LISTING或FILE TRANSFER的時候就會用到第二個,而問題中的兩個指令(PORT & PASV)只是在建立(或是說與伺服器協調)第二個連結所用的。 您或許會覺得奇怪,為什麼DATA連結要用兩種不同的指令,而不是只用一個就好了。這是個很好的問題,在早期,一個PORT指令就夠了,然而隨著大量的防火牆軟體以及NAT裝置的問世,PORT指令失去了他的功能,PASV指令於焉誕生,並被當作Firewall Friendly Data Transfer(與防火牆相容的資料傳輸)。 現在我們來談兩種指令的不同處: PORT:FTP客戶端要求FTP伺服器連上客戶端的IP位址(包含連接埠) PASV:FTP伺服器端要求FTP客戶端連上伺服器端的IP位址(包含連接埠)。 所以可以輕易的知道: PORT指令會失敗:如果客戶端根本沒有辦法讓別人知道他的真正位址(當客戶位於NAT後方時) PASV指令會失敗:如果伺服器端根本沒有辦法讓別人知道他的真正位址(當伺服器位於NAT後方時) 那我們又如何看到這些PORT/PASV指令以及其回應!?沒錯,找個能顯示狀態列的優秀的FTP客戶端軟體就對了:),例如FlashFXP、CuteFTP、Windows Commander以及其他類似的軟體都可以…,不過話說回來,也存在著某些將指令及其回應隱藏起來的客戶端軟體,使用這些軟體的話,您當然就看不到了。 現在你應該知道如果你遇到PORT與PASV相關的問題時該從何下手囉… 狀況一: FTP客戶端無法做LIST DIR,並且顯示「PORT command failed error」,因為該指令是由客戶端所下的,所以如果跟指令一起顯示的客戶端的IP和連接埠看起來似乎位於NAT後方的話 Address Allocation for Private Internets 10.0.0.0 - 10.255.255.255 (10/8 prefix) 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) 192.168.0.0 - 192.168.255.255 (192.168/16 prefix) 這就屬於客戶端的問題了,您可試著協助FTP的使用者正確地設定客戶端軟體,並要求以PASV模式來取代PORT指令,因為該客戶端軟體無法自行辨識這個狀況以正常的運作。 狀況二:FTP客戶端可以連接到FTP伺服器,但無法做LIST DIR,並且顯示:「PASV failed,no one connects to IP:PORT」。此時您可以檢查一下這個IP及連接埠,像不像是在NAT後方的樣子? Address Allocation for Private Internets 10.0.0.0 - 10.255.255.255 (10/8 prefix) 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
如果的確如此,伺服器的站長就該調整一下設定,不應讓伺服器繼續使用內部的IP位址(見http://www.raidenftpd.com/en/raiden-ftpd-doc/howto-setup-ip.html)。如果IP及連接埠都沒問題,伺服器的IP也正常,那可能的答案就很多了,且絕大部分是無法立即找到問題癥結的,您不妨試試以下的步驟。
從此天下太平了嗎?抱歉答案要讓您失望了。除非您能有分身同時處於網路的伺服器與客戶端,否則永遠無法防止問題產生,理由再明白不過,您如何能知道客戶端或伺服器端的網路有裝防火牆?結論就是:「你無從得知!」 即使你能同時搞定伺服器端及客戶端的電腦,你又怎麼能料的到網管者或ISP有沒有為你的網路在匝道上裝防火牆?結論還是:「你無從得知!」 因此當你遇到上述的問題時,不妨用以上的幾個步驟來試著找出「可歸責於自己的原因」。雷電FTPD並沒有PASV/PORT方面的缺陷,且沒有人(包括您)能真正的針對此提出一勞永逸的解決之道,所以您只能靠自己來處理了。而您所需的相關背景知識可參考本頁。 That's ALL |
||||||
Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED
REVISION 2.2 , 2002/09/10