FTP服務器在公司內網,通過端口映射把21端口映射出去。
公司一些機器也在各個省的機房內網。好在這些機器可以訪問公網。由於各個地區的機器托管在各個地區機房。
我有公司防火牆的權限,可以做防火牆上做端口映射,把FTP設置為被動模式,各個省的機器作為客戶端連接公司這邊FTP服務器即可
環境介紹
公司FTP服務器地址是10.0.1.12,控制端口是默認的21端口,數據傳輸模式是主動模式
公司防火牆是202.101.102.35, 映射222.101.102.35:50021-->10.0.1.12:21
先看下Serv-U設置被動模式之前,客戶端連接的報錯(已經被10.0.1.12的21端口映射出去了,映射為防火牆的50021端口了),客戶端ftp工具是flashfxp

關於ftp默認的主動模式和被動模式
主動FTP
主動方式的FTP是這樣的:客戶端從一個任意的非特權端口N(1024)連接到FTP服務器的命令端口,也就是21端口。
然后客戶端開始監聽端口N+1,並發送FTP命令“port N+1”到FTP服務器。接着服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。
數據訪問方式如下。(命令發起方是客戶端,數據發起方是服務器端)

被動FTP
為了解決服務器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知服務器它處於被動模式時才啟用。
在被動方式FTP中,命令連接和數據連接都由客戶端發起,這樣就可以解決從服務器到客戶端的數據端口的入方向連接被防火牆過濾掉的問題。
當開啟一個 FTP連接時,客戶端打開兩個任意的非特權本地端口(N和N+1)。
第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交 PASV命令。
這樣做的結果是服務器會開啟一個任意的非特權端口(1024),並發送PORT P命令給客戶端。(為了方便控制,服務器的被動端口通常指定一定范圍)
然后客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。
網上搜索很多說是客戶端打開2個任意的非特權端口,但是我在實際測試時發現客戶端這邊是1個端口,后期等待驗證,可能與工具有關吧

數據訪問方式如下(主要是發起方都是客戶端)

Serv-U改成被動模式以及端口映射操作
1、找到設置FTP被動模式的地方,我的Serv-U版本是11.1.0.7 ,不同的版本可能設置的地方不一樣

在下面 Serv-U上設置被動模式的數據端口為5022

2、防火牆做端口映射
222.101.102.35:50022-->10.0.1.12:5022
3、客戶端測試,使用flashfxp工具。連接成功,正常傳輸文件

以上操作之后網絡邏輯圖如下
上海這邊的192.168.1.100的機器就可以連接公司ftp工具進行下載和上傳了

