Назад | Перейти на главную страницу

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

У меня есть сервер centos, на котором запущен чистый ftp через aws. Я настроил PureDB и добавил пользователя с правильными разрешениями. Я открыл входящие порты 20/21 и 49152-65534 в группе безопасности aws, а затем сопоставил эти порты с pure-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.

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

PassivePortRange  49152 65534
ForcePassiveIP AWS_SERVER_PUBLIC_IP

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

cat /proc/sys/net/ipv4/ip_local_port_range