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