我在另一个 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?
答案1
在最初的问题中,我问过我是否必须使用模块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>
笔记:如果您这样做,则“服务器配置”(不在<virtualHost>
或<Global>
块中的任何内容)指令将不适用。您可能必须重复某些指令或使用<Global>
块。