防火牆後的 ProFTPd 伺服器返回 WAN 和 LAN 連接的內部 IP 地址
我在另一個 Debian 防火牆後面的 Debian 伺服器上使用 ProFTPD。我可以從外部連接到 ftp 伺服器。但是,無論 WAN 或 LAN 連接如何,選擇的虛擬主機始終是 192.168.0.4。
PASV
當 ftp 伺服器使用內部 IP 地址響應 WAN 連接時進入模式時,這會導致問題。我知道有一個
MasqueradeAddress
針對 WAN 連接的指令,但我的 WAN 連接正在連接到我的內部虛擬主機。由於 FTP 伺服器上只有 1 個 IP 地址,我是否需要使用
mod_ifsession
此處所述的模組:http: //www.proftpd.org/docs/howto/NAT.html?
在最初的問題中,我問我是否必須使用該
mod_ifsession
模組。到目前為止,這是我讓它工作的唯一方法。也許這是意料之中的,但我希望使用一個<VirtualHost>
塊來讓它工作。這是我所做的:
<IfModule mod_ifsession.c> <Class internal> From 192.168.0.0/24 </Class> <IfClass !internal> MasqueradeAddress 1.2.3.4 </IfClass> </IfModule>
使用它,傳入的 LAN 連接獲取內部 IP (
192.168.0.4
),而 WAN 連接獲取外部 IP (1.2.3.4
)。我不知道它是否理想,但它確實有效。**編輯:**按照建議,我也能夠使用不同的埠使其工作。您可能希望也可能不希望在非標準埠上執行 ftp,因此這種方法可能不適合您。如果您使案例如 2121 將防火牆上的埠 21 轉發到 ftp 伺服器並在其中一個塊中偵聽埠 2121
<virtualHost>
,那麼您就知道這是一個外部連接。這是我用於此的塊:<VirtualHost 192.168.0.4> ServerName "External" Port 2121 MasqueradeAddress 1.2.3.4 </VirtualHost>
**注意:**如果您這樣做,將不會應用“伺服器配置”(不在 a
<virtualHost>
或塊中的任何內容)指令。<Global>
您可能必須重複一些指令或使用<Global>
塊。