У меня были проблемы с моим ftp-сервером, который я пытался исправить уже более недели.
Моя конфигурация:
- Я использую Raspbian на Raspberry Pi.
- Мой ftp-сервер - чистый 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 в чистом ftpd
- У меня также порт перенаправлен порт 20 до 21
Другие серверы, на которых я работаю:
- Сервер самбы
- Веб-сервер Apache
- Пользовательский сервер сокетов Python
- и встроенный сервер shh/sftp
У меня также работает клиент no-ip DUC
Вкратце вот проблемы, которые у меня возникают с чистым ftpd:
- FTP в локальной сети без TLS (активный и пассивный): работает
- FTP в локальной сети с TLS (активный и пассивный): работает
- FTP в WAN без TLS (пассивный): работает
- FTP в WAN с TLS (активный и пассивный): не работает
- Не могу изменить порт, так как он не будет работать в глобальной сети
Вот журналы ошибок и вещи, которые я пробовал:
Результаты ftptest.net (для FTP с tls):
........
Команда: PASV
Ответ: 227 Вход в пассивный режим (192,168,0,4,138,78)
Ошибка: сервер возвратил непринятый частный IP-адрес в ответе PASV
Я читал на форумах, что вы должны указывать IP-адрес PASV с ключом -P, так я и сделал, и вот результат:
Ответ: 211-поддерживаемые расширения:
.....................
Ошибка: возврат каретки без перевода строки
И это как без, так и с TLS! Так что да, переключатель -P вообще не работает!
Следует также отметить, что порты пассивного режима являются правильными (взяты из команды PASV)
Журнал Filezilla (с явным tls):
Команда: PASV
Ответ: 227 Вход в пассивный режим (192,168,0,4,138,251)
Статус: Сервер отправил пассивный ответ с адресом, который не может быть переадресован. Вместо этого используйте адрес сервера.
Команда: MLSD
Ошибка: не удалось установить соединение для передачи данных: 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)
Надеюсь, вы, ребята, сможете мне помочь, потому что я действительно заблудился!