Сервер ProFTPd за брандмауэром возвращает внутренний IP-адрес для соединений WAN и LAN

Я использую ProFTPD на сервере Debian за другим брандмауэром Debian. Я могу подключиться к ftp серверу извне. Однако виртуальный хост, который выбирается, всегда 192.168.0.4, независимо от подключений WAN или LAN. Это вызывает проблему при входе в режим PASV , когда ftp-сервер отвечает внутренним IP-адресом на подключения к глобальной сети.

Я знаю, что существует директива MasqueradeAddress для подключений WAN, но мои подключения WAN подключаются к моему внутреннему виртуальному хосту.

Поскольку на FTP-сервере есть только 1 IP-адрес, мне нужно используйте модуль mod_ifsession , как описано здесь: http://www.proftpd.org/docs/howto/NAT.html ?

1
задан 8 September 2017 в 18:50
1 ответ

В исходном вопросе я спросил, нужно ли мне использовать модуль mod_ifsession . Пока что это единственный способ заставить его работать. Возможно, этого и ожидалось, но я надеялся использовать блок , чтобы заставить его работать.

Вот что я сделал:

<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 ) и подключения к глобальной сети получают внешний IP-адрес ( 1.2.3.4 ). Не знаю, идеален ли он, но он действительно работает.

Изменить: Мне также удалось заставить его работать, используя другой порт, как было предложено. Вы можете захотеть или не захотеть запускать ftp на нестандартном порту, поэтому, возможно, этот метод не для вас. Если вы перенаправляете порт 21 на брандмауэре на ftp-сервер, используя, скажем, 2121, и прослушиваете порт 2121 в одном из ваших блоков , тогда вы знаете, что это внешнее соединение. Вот блок, который я использовал для этого:

<VirtualHost 192.168.0.4>
  ServerName "External"
  Port 2121
  MasqueradeAddress 1.2.3.4
</VirtualHost>

Примечание: Если вы сделаете это таким образом, «конфигурация сервера» (что-либо, кроме или block) не будут применяться. Возможно, вам придется повторить некоторые директивы или использовать блок .

2
ответ дан 3 December 2019 в 20:19

Теги

Похожие вопросы