
У меня возникли проблемы с моим FTP-сервером, которые я пытаюсь исправить уже больше недели.
Моя конфигурация:
- Я запускаю Raspbian на Raspberry Pi.
- Мой FTP-сервер — это pure-ftpd, и я запускаю его со следующими ключами:
/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -p 35000:36000 -u 0 -y 5:3 -Y 1
- Я скомпилировал его с опцией "--with-tls"
- Я используюявное шифрование TLS, (Я также пробовал неявный, тот же результат)
- Я перенаправил свой пассивный диапазон портов, как определено ключом -p в pure-ftpd
- Я также перенаправил порт 20 на 21
Другие серверы, которые я использую:
- Сервер Samba
- Веб-сервер Apache
- Пользовательский сервер сокетов Python
- и встроенный shh/sftp сервер
У меня также запущен клиент no-ip DUC
Короче говоря, вот какие проблемы у меня возникли с pure-ftpd:
- FTP в локальной сети без TLS (активный и пассивный): работает
- FTP в локальной сети с TLS (активный и пассивный): работает
- FTP в WAN без TLS (Пассивный): Работает
- FTP в WAN с TLS (активный и пассивный): не работает
- Невозможно изменить порт, так как он не будет работать в WAN
Вот журналы ошибок и то, что я попробовал сделать:
Результаты ftptest.net (для FTP с tls):
........
Команда: ПАСВ
Ответ: 227 Вход в пассивный режим (192,168,0,4,138,78)
Ошибка: сервер вернул немаршрутизируемый частный IP-адрес в ответе PASV
Я прочитал на форумах, что необходимо указать IP-адрес PASV с помощью ключа -P, я так и сделал, и вот результат:
Ответ: 211-Поддерживаемые расширения:
.....................
Ошибка: получен возврат каретки без перевода строки
И это длякак без tls, так и с tls!Так что да, ключ -P вообще не работает!
Я также должен отметить, что порты пассивного режима верны (взяты из команды PASV)
Журнал Filezilla (с явным tls):
Команда: ПАСВ
Ответ: 227 Вход в пассивный режим (192,168,0,4,138,251)
Статус: Сервер отправил пассивный ответ с немаршрутизируемым адресом. Вместо этого используется адрес сервера.
Команда: МЛСД
Ошибка: Не удалось установить соединение для передачи данных: ECONNREFUSED — Соединение отклонено сервером
Ошибка: соединение закрыто сервером
Ошибка: не удалось получить список каталогов
С переключателем -P:
То же самое, только без надписи «Сервер отправил немаршрутизируемый адрес*».
Я также попробовал поиграться с брандмауэром (iptables), разрешив все (тем самым отключив брандмауэр) с помощью следующих команд:
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Я также не могу изменить порт по умолчанию, поскольку если я это сделаю, то получу ошибку «Подключение отклонено».
И у меня сегодня начал проявляться еще один странный симптом:
Я могу открыть только порт 21 на 21 (он работает), потому что если я открою 20, то получу SSH-сервер.
Запишите это:
Статус: Подключено, ожидание приветственного сообщения... Ответ:
SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
Ошибка: ответ не содержит допустимого кода ответа.
Я также попробовал переадресацию портов 443, 989 на 990 (это было для неявного TLS) и попробовал настроить Raspberry Pi в качестве хоста DMZ.
Примечание: я перешел с vsftpd, так как он медленный и не поддерживает безопасный FTP (версию 3.x для Raspberry Pi необходимо скомпилировать с поддержкой безопасного FTP, но при компиляции возникла ошибка), и я не использую proftpd, так как он не может быть скомпилирован с поддержкой TLS.
/var/log/messages не предоставляет никакой полезной информации (только сообщает, что пользователь вошел в систему каждый раз с использованием TLS или без него)
Надеюсь, вы, ребята, сможете мне помочь, так как я совсем запутался!
решение1
НАКОНЕЦ-ТО РЕШЕНО!Все, что мне нужно было сделать, это изменить диапазон пассивных портов с 50000-51000 на 12000-13000! Теперь все работает отлично!!! Теперь я использую pure-ftpd вот так:
/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -S 192.168.0.4,60 -p 12000:13000 -u 0 -y 5:3 -Y 1 -P &