防火墙后面的 ProFTPd 服务器返回用于 WAN 和 LAN 连接的内部 IP 地址

防火墙后面的 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

答案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>块。

相关内容