Я открыл через брандмауэр порт 21 для FTP в Google Cloud Engine, но я могу подключиться к FTP только через активный мод. Я тоже хочу использовать пассивный мод.
В соответствии с https://stackoverflow.com/questions/24566692/filezilla-ftp-server-fails-to-retrieve-directory-listing порт 50000-55000 должен быть открыт, но я пробовал. Эти ответы не работают в моей ситуации. Когда я открываю все порты для TCP, я могу подключиться через пассивный мод, но я не хочу открывать все порты (или мне нужно открыть все порты ??)
Вот я нашел все портовые штучки:
Пассивный режим
В пассивном режиме клиент не может контролировать, какой порт сервер выбирает для подключения к данным. Следовательно, чтобы использовать пассивный режим, вам необходимо разрешить исходящие подключения ко всем портам вашего брандмауэра.
Мой вопрос: нужно ли мне открывать все порты для пассивного мода или можно что-то еще?
Система
ОС: CentOS 7 с последними пакетами
Служба FTP: PureFTPd
Обновить
Когда я пробую пассивный мод, в журналах говорится, что я вошел в систему, после зависания при получении списка файлов (я не могу публиковать журналы, потому что мой файл журнала не на английском языке)
С уважением
Добавьте следующее:
PassivePortRange 50000 55000
в
/etc/pure-ftpd.conf
и я думаю, что ваша проблема будет решена. Имейте в виду, что этот диапазон портов также должен быть разрешен в вашем брандмауэре.
РЕДАКТИРОВАТЬ:
Цитируется из этот замечательный источник:
В пассивном режиме FTP клиент инициирует оба подключения к серверу, решая проблему брандмауэра, фильтрующего входящее соединение порта данных с клиентом с сервера. При открытии FTP-соединения клиент открывает два случайных непривилегированных порта локально (N> 1023 и N + 1). Первый порт связывается с сервером через порт 21, но вместо того, чтобы затем выдать команду PORT и разрешить серверу подключиться обратно к его порту данных, клиент выдает команду PASV. В результате сервер затем открывает случайный непривилегированный порт (P> 1023) и отправляет P обратно клиенту в ответ на команду PASV. Затем клиент инициирует соединение от порта N + 1 к порту P на сервере для передачи данных.
уловка здесь в том, что с
PassivePortRange 50000 55000
Директива заставит pureFtp выбирать случайные порты из этого диапазона, которые вы ранее разрешили в вашем брандмауэре.