Назад | Перейти на главную страницу

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

У меня есть 2 сервера, один как шлюз / маршрутизатор, другой как сервер. Я использую iptables для перенаправления следующих портов: 21, 20, 65500-65600. Когда я подключаюсь к Filezilla или Total Commander, клиент ftp знает, что 10.10.0.1 представляет внутренний IP-адрес и переключается на внешний IP-адрес. Однако NPPftp плагин от Notepad++ подключается к серверу, но когда он переключается в пассивный режим, он пробует внутренний 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 /

Есть ли способ вернуть внешний IP-адрес для пассивных портов из iptables?

Из документа http://www.proftpd.org/docs/howto/NAT.html, есть адрес MasqueradeAddress для использования, и вы должны определить диапазон портов для разрешения (или использовать модуль conntrack_ftp, как сказал MadHatter)

В новых версиях никакой маскировки не требуется. Для возможности активной и пассивной передачи вам необходимо на стороне клиента и сервера открыть следующие порты:

  • IN: TCP 20,21,60000-65535
  • ВЫХОД: TCP 20,21,60000-65535

Затем обновите FTP, чтобы использовать диапазон пассивных портов 60000-65535. Затем на стороне клиента используйте пассивный режим (в случае IP-адреса с NAT), в противном случае активный также будет работать. Подробности и инструкция - http://sysadm.pp.ua/linux/proftpd-ubuntu-16-04.html