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
) было бы достаточно.