Проблема с пассивным 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