天天看點

通過外網端口映射通路FTP

首先了解,FTP使用兩個端口進行通信。一個作為控制端口(登陸用),一個作為資料傳輸端口。

主動模式:用戶端請求21 20兩個固定端口進行連接配接。是以如果要經過外網映射用主動模式通信的話除非把外網端口21映射為内網的21,外網的20映射為内網的20才行。

被動模式:用戶端連接配接到伺服器21端口後,伺服器傳回一個任意>1024的端口給用戶端,用戶端連接配接此資料端口。

情景描述:

公司内網有一台Linux系統FTP伺服器。

公網位址為X.X.X.X ,現在映射公網端口 12000 到内網主機Y.Y.Y.Y的21端口。

這時通過外網的被動模式通路可以登入FTP,但不能執行ls指令或者下載下傳檔案。原因,資料端口沒有做映射。在使用ftp連接配接的時候,可以選擇被動模式然後連接配接12000端口,但是并不能設定資料端口

問題:

FTP可以指定端口進行連接配接,這個端口是控制端口。

但被動模式是傳回一個任意的大于1024的端口比如8888給用戶端連接配接。

用戶端這時候連接配接8888,不能連接配接成功,因為連的是外網位址,外網位址的8888并沒有映射到内網位址的8888。

然後卡在這裡因為每次都不确定,這次把外網的8888映射到内網的8888,但下次通信不一定是8888啊。

思路: 要确定FTP資料端口使用固定的。

配置 /etc/vsftpd/vsftpd.conf

pasv_enable=yes (Default: YES )  設定是否允許pasv模式

pasv_promiscuous=no (Default: NO ) 是否屏蔽對pasv進行安全檢查,(當有安全隧道時可禁用)

pasv_max_port=10240  (Default: 0 (use any port) ) pasv使用的最大端口

pasv_min_port=1024  (Default: 0 (use any port) ) pasv使用的最小端口

pasv_address (Default: (none - the address is taken from the incoming connected socket) ) pasv模式中伺服器傳回的ip位址

繼續閱讀