ftp與nat
『壹』 為什麼F5 NAT不支持ftp
1、FTP協議知識FTP(File Transfer Protocol)的縮寫,即文件傳輸協議。其是TCP/IP協議族中的一種具體應用,它工作在OSI模型的第七層,即應用層上,其使用TCP協議傳輸,即FTP傳輸的所有文件都是通過「三次握手」實現,也就是說當客戶端與伺服器端之間的數據包傳輸,一旦出現丟包現象,會重新傳輸,以保證數據的可靠。 FTP協議要使用兩個TCP連接傳送數據,一個是命令連接,用來在FTP客戶端與伺服器之間傳遞命令;另一個是數據連接,用來上傳或下載數據。這就直接導致FTP需要2個埠,一個埠用於控制連接,即21埠,發送指令給伺服器以及等待伺服器響應;另一個埠是數據傳輸埠,埠號為20,是用來建立數據傳輸通道。FTP的連接模式有兩種,PORT(主動模式)和PASV(被動模式)。主動模式的連接過程是:客戶端動態的選擇一個埠(這個埠號一定是1024以上的,因為1024以前的埠都已經預先被定義好)向伺服器端的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一個命令連接。當需要傳送數據時或者列出伺服器的文件列表時(通常使用ls或dir命令),客戶端通過命令連接告訴伺服器(使用PORT命令):「我已經打開了XX埠,請你過來連接」。於是伺服器使用20埠向客戶端的XX埠發送連接請求,建立一條數據連接來傳送數據。被動模式的連接過程是:客戶端首先使用與主動連接模式相同的方法與伺服器建立命令連接。當需要傳送數據時,客戶端通過命令連接告訴伺服器(使用PASV命令)「我要連接你的XX埠,請問是否空閑」,如果恰好該埠空閑,伺服器會告訴客戶端:「你請求的埠空閑,可以建立連接(ACK確認信息)」,否則伺服器會說「該埠已經佔用,請換個埠(UNACK信息)」。如果客戶端得到的是空閑的提示,就會利用該埠建立連接,否則就換個埠重新嘗試,這也就是所謂的連接建立的協商過程. PORT模式建立數據傳輸通道是由伺服器端發起的,伺服器使用20埠連接客戶端的某一個大於1024的埠;在PASV模式中,數據傳輸的通道的建立是由FTP客戶端發起的,他使用一個大於1024的埠連接伺服器的1024以上的某一個埠。如果從C/S模型這個角度來說,PORT對於伺服器來說是OUTBOUND,而PASV模式對於伺服器是INBOUND。2、當F5內網伺服器對外提供FTP服務假設我們對該FTP伺服器,在F5上配置了一對一的NAT,那麼從外部通過NAT地址是可以訪問到這台主機的服務的(比如WEBSERVER)。但是FTP服務會出現問題。1)主動模式:當外網客戶端採用主動模式連接FTP伺服器時(連接的當然是NAT IP),對於伺服器來說,都是outbound,所以沒有問題。無論是命令連接還是數據連接,都能正常建立。首先,命令連接可以正常建立,沒有問題;但是,當FTP伺服器告訴客戶端來建立被動連接時,它把自己的IP也告訴客戶端了,而這個IP是伺服器的真實內網IP,那麼顯然會出現問題:實際測試結果就是這樣: [R] 正在連接到 207.10.1.101 -> IP=207.10.1.101 PORT=21 [R] 已連接到 207.10.1.101 [R] 220 (vsFTPd 2.0.5) [R] USER anonymous [R] 331 Please specify the password. [R] PASS (hidden) [R] 230 Login successful. [R] SYST [R] 215 UNIX Type: L8 [R] FEAT [R] 211-Features: [R] EPRT [R] EPSV [R] MDTM [R] PASV [R] REST STREAM [R] SIZE [R] TVFS [R] 211 End [R] PWD [R] 257 "/" [R] TYPE A [R] 200 Switching to ASCII mode. [R] PASV [R] 227 Entering Passive Mode (172,16,20,129,202,117) [R] 正在打開數據連接 IP: 172.16.20.129 埠: 51829 [R] LIST -al [R] 425 Security: Bad IP connecting. [R] 列表錯誤 [R] QUIT [R] 221 Goodbye. [R] 已注銷: 207.10.1.101 這其實也是F5上的FTP服務VS,要使用ftp profile的原因。3、FTP客戶端有設置解決這個問題FlashFXP有設置「對於被動模式連接使用站點IP」,勾選即可解決問題: WinSock 2.0 -- OpenSSL 0.9.8a 11 Oct 2005 [R] 正在連接到 207.10.1.101 -> IP=207.10.1.101 PORT=21 [R] 已連接到 207.10.1.101 [R] 220 (vsFTPd 2.0.5) [R] USER anonymous [R] 331 Please specify the password. [R] PASS (hidden) [R] 230 Login successful. [R] SYST [R] 215 UNIX Type: L8 [R] FEAT [R] 211-Features: [R] EPRT [R] EPSV [R] MDTM [R] PASV [R] REST STREAM [R] SIZE [R] TVFS [R] 211 End [R] PWD [R] 257 "/" [R] TYPE A [R] 200 Switching to ASCII mode. [R] PASV [R] 227 Entering Passive Mode (172,16,20,129,140,121) [R] 正在打開數據連接 IP: 207.10.1.101 埠: 35961 [R] LIST -al [R] 150 Here comes the directory listing. [R] 226 Directory send OK. [R] 列表完成: 174 位元組 用時 0.08 秒 (2.2 KB/s) [R] QUIT [R] 221 Goodbye. [R] 已注銷: 207.10.1.101 4、課後思考:F5內網的該機器(做了一對一NAT映射的)出去訪問外部的FTP伺服器時,是否會有問題?
『貳』 如何架設外網能訪問的FTP
為了使外網能夠訪問FTP,首先需要進行外網映射或NAT設置,將內網地址映射到公網,如果使用的是動態IP,可以選擇使用花生殼服務。在進行這項操作時,需要注意,鐵通寬頻可能需要使用其他解決方案,比如希網的3322服務,因為花生殼在鐵通環境下可能無法正確識別動態IP。這通常是因為鐵通一般採用NAT技術,你的動態IP可能是經過NAT轉換後的公網地址,導致DNS解析出現問題。
其次,需要在本地計算機上搭建FTP伺服器,並確保FTP伺服器支持上傳許可權。如果對此不太熟悉,建議花時間學習一些FTP和網路伺服器的基礎知識,這將有助於你更好地理解和設置FTP服務。
值得注意的是,花生殼服務在鐵通寬頻環境下可能無法正常工作,因為鐵通通常會使用NAT技術,導致你的動態IP地址經過轉換,成為公網地址的一部分,而這種轉換可能會使花生殼無法正確解析你的公網地址,從而影響FTP服務的正常訪問。
對於想要了解如何設置外網訪問FTP服務的朋友,這里提供一個簡單的解決方案:使用希網的3322服務,並在本地計算機上安裝並配置FTP伺服器,同時確保FTP伺服器支持上傳許可權。通過這些步驟,你應該能夠成功地使外網訪問到你的FTP服務。
最後,如果在設置過程中遇到任何問題,建議查閱相關文檔或尋求專業幫助。了解如何設置和使用FTP服務是一項有益的技術技能,它將有助於你在網路中更好地分享和管理文件。