Pure-Ftpd-Mysql: невозможно подключиться с пассивным FTP

Кажется, у меня проблема с конфигурацией, и мне нужна помощь.

У меня есть веб-сервер под Debian Jessie с установленным (и обновленным) pure-ftpd-mysql.

Я могу подключиться к серверу через FTP, когда он находится в активном режиме, но когда я прошу перейти в пассивный режим, у меня истекло время ожидания операции:

ftp ftp.***.com
Connected to ftp.***.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 12:31. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (ftp.***.com:tilotiti): 
331 User tilotiti OK. Password required
Password: 
230 OK. Current restricted directory is /
ftp> ls
200 PORT command successful
150 Connecting to port 50405
drwxr-xr-x    2 2001       ftp              4096 Dec 21 11:12 test1
drwxrwxrwx    2 2001       ftp              4096 Apr 28  2017 test2
226-Options: -l 
226 2 matches total
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (10,3,98,75,127,233)
ftp: connect: Operation timed out
ftp> 

Я размещен на скайвей и проверил, что там, где нет правил, настроенных как сетевой брандмауэр.

Я попытался настроить некоторые порты пассивного диапазона, создав файл /etc/pure-ftpd/conf/PassivePortRange:

30000 50000

Я проверил, что мой серверный брандмауэр не блокирует соединение:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

И я перезагрузил сервер, чтобы убедиться, что новая конфигурация была принята.

Но это не работает, я совершенно потерян. Мне нужна эта пассивная связь.

Кто-нибудь может мне помочь, пожалуйста?

Большое спасибо.

1 ответ

Решение

227 Entering Passive Mode (10,3,98,75,127,233)

Означает, что сервер ожидает входящего соединения с портом 32745 10.3.98.75. Конечно, это потому, что сервер NATed и (сервер ftp) не знает об этом.

Вам все еще нужно сделать две (из 3) вещи:

  • установите FTP-сервер таким образом, чтобы он "публиковал" известный общедоступный IP-адрес вместо своего частного IP-адреса. Вот как это делается из документации по чисто ftpd:

    - '-P <ip address or host name>': Force the specified IP address in reply to a PASV/EPSV/SPSV command. If the server is behind a masquerading (NAT) box that doesn't properly handle stateful FTP masquerading, put the ip address of that box here. If you have a dynamic IP addBindress, you can put the public host name of your gateway, that will be resolved every time a new client will connect.

Конфигурация оболочки Debian(?) Для него выглядит так: ForcePassiveIP <ip address or host name>

  • настройте его на использование только определенного диапазона портов (уже сделано, вы выбрали 30000:50000). Диапазон, который не перекрывает динамический диапазон портов, как видно на /proc/sys/net/ipv4/ip_local_port_range должен быть выбран для повышения безопасности.
  • Измените настройки брандмауэра /nat Scaleway, чтобы разрешить переадресацию портов для диапазона портов TCP на предыдущем шаге (здесь может иметь значение безопасность, о которой я упоминал выше). Извините, я не знаю, где найти конкретную документацию по этому поводу. Я даже не понял, какие конфигурации сети доступны на Scaleway. Если у хоста фактически два IP-адреса, один из них 10.3.98.75, другой общедоступный, то вместо использования ForcePassiveIP, Bind опция (=> -S) было бы достаточно.
Другие вопросы по тегам