Проблема с пассивным ftp-соединением для aws/pure-ftpd

У меня есть сервер Centos, работающий через чистый ftp через AWS. Я настроил PureDB и добавил пользователя с правильными разрешениями. Я открыл входящие порты 20/21 и 49152-65534 в группе безопасности aws, а затем сопоставил эти порты обратно в чистый ftpd с помощью Passive Port Range настройка в конфигурационном файле pure-ftpd. На данном этапе тестирования на машине используется ftp localhost работает как положено; Я могу связаться с моим пользователем и перечислить файлы.

Теперь при попытке подключиться к серверу с моей машины я добавил ForcePassiveIP установите на сервере и установите в качестве публичного ip для экземпляра aws, затем попытайтесь подключиться; ftp <public-ip>, Соединение работает, я могу войти, но 90% времени пассивное соединение зависает и просто отображает 227 Entering Passive Mode (<public-ip>,<ports>) когда я пытаюсь перечислить файлы. Точно так же попытка загрузить новый файл с использованием FTP-клиента зависнет, а затем потерпит неудачу:

Response: 227 Entering Passive Mode (<public-ip>,<ports>) Command: MLSD Error: Connection timed out Error: Failed to retrieve directory listing

У кого-нибудь есть идеи, почему это происходит? Любая помощь приветствуется.

ПРИМЕЧАНИЕ: у меня была похожая проблема на машине Vagrant с той же ОС / настройками (минус ForcePassiveIPнастройки) и это работало нормально после запуска modprobe ip_conntrack_ftpОднако это не относится к серверу AWS.

1 ответ

Решение

Хорошо ли вы сконфигурировали свой конфигурационный файл pure-ftpd с этими параметрами:

PassivePortRange  49152 65534
ForcePassiveIP AWS_SERVER_PUBLIC_IP

Вы можете проверить, какой диапазон портов разрешен в ОС:

cat /proc/sys/net/ipv4/ip_local_port_range
Другие вопросы по тегам