① 阿里雲伺服器上搭建FTP後,外網訪問不了
1、解決方案:
ftp默認模式為被動模式,開啟一個隨機埠建立連接。需要把內網埠限制打開,
如果是通過硬體防火牆,將防火牆開啟ftp隨機埠就可以了
2、兩種方式的工作原理:
主動模式:
Port模式FTP 客戶端首先和FTP伺服器的TCP
21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。
PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20埠連接至客戶端的指定埠發送數據。 FTP
server必須和客戶端建立一個新的連接用來傳送數據。(可以看到在這種方式下是客戶端和伺服器建立控制連接,伺服器向客戶端建立數據連接,其中,客戶端的控制連接和數據連接的埠號是大於1024的兩個埠號(臨時埠),而FTP伺服器的數據埠為20,控制埠為21)
被動模式:
Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP伺服器收到Pasv命令後,隨機打開一個臨時埠(也叫自由埠,埠號大於1023小於65535)並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,然後FTP伺服器將通過這個埠進行數據的傳送,這個時候FTP
server不再需要建立一個新的和客戶端之間的連接。(可以看到這種情況下的連接都是由客戶端向伺服器發起的,與下面所說的「為了解決伺服器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被動方式」相對應,而伺服器端的數據埠是臨時埠,而不是常規的20)
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP
20無法和內部網路的客戶端建立一個新的連接,造成無法工作。
主動模式要求客戶端和伺服器端同時打開並且監聽一個埠以建立連接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求伺服器端產生一個監聽相應埠的進程,這樣就可以繞過客戶端安裝了防火牆的問題。
在被動方式FTP中,命令連接和數據連接都由客戶端發起,這樣就可以解決從伺服器到客戶端的數據埠的入方向連接被防火牆過濾掉的問題。