Linux

防火牆後的 ProFTPd 伺服器返回內部 IP 地址

  • November 4, 2017

我有兩台伺服器,一台作為網關/路由器,另一台作為伺服器。我使用 iptables 埠轉發以下埠:21, 20, 65500-65600. 當我使用Filezillaor連接時Total Commander,ftp 客戶端知道它10.10.0.1代表內部 IP 地址並切換到外部 IP 地址。但是,NPPftp外掛 fromNotepad++連接到伺服器,但是當它切換到被動模式時,它會嘗試內部 IP 地址並凍結。

輸出:

220 ProFTPD x.x.x Server [10.10.0.1]
-> USER www  
331 Password required for www
-> PASS *HIDDEN*
230 User www logged in
-> TYPE A  
200 Type set to A
-> MODE S  
200 Mode set to S
-> STRU F  
200 Structure set to F
-> PWD  
257 "/" is the current directory
Connected
-> CWD /  
250 CWD command successful
-> PASV  
227 Entering Passive Mode (10,10,0,1,255,222).
-> LIST -al  
Failure retrieving contents of directory /

有沒有辦法從 iptables 返回被動埠的外部 IP 地址?

從文件http://www.proftpd.org/docs/howto/NAT.html,有一個 MasqueradeAddress 地址要使用,你要定義允許的埠範圍(或者像 MadHatter 說的那樣使用 conntrack_ftp 模組)

在新版本中,您不需要任何偽裝。對於主動和被動傳輸的可能性,您需要在客戶端和伺服器端打開下一個埠:

  • 輸入:TCP 20,21,60000-65535
  • 輸出:TCP 20,21,60000-65535

然後更新 FTP 以使用被動埠範圍 60000-65535。然後在客戶端使用被動模式(如果是 NATed IP),其他明智的主動模式也可以工作。詳細資訊和說明 - http://sysadm.pp.ua/linux/proftpd-ubuntu-16-04.html

引用自:https://serverfault.com/questions/591704