Я установил самоподписанный сертификат на сервере FileZilla и включил FTP через TLS. Когда я подключаюсь из клиента FileZilla, я могу пройти аутентификацию, 1-2 раза в день я получаю список каталогов ...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Status: Directory listing of "/" successful
Но оставшееся время не может получить список каталогов
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I
Command: PORT 192,168,1,119,88,109
Response: 200 Port command successful
Command: MLSD
Response: 150 Opening data channel for directory listing of "/"
Response: 425 Can't open data connection for transfer of "/"
Error: Failed to retrieve directory listing
FTP как протокол - это немного странная утка. Он использует два TCP-соединения ,а не только тот, который используется большинством протоколов. У вас есть порт 21 для команды и подключения для входа и второе подключение для передачи данных.
При пассивном FTP второе подключение осуществляется к случайно назначенному доступному порту TCP с номером выше 1024.
Проблемы, похоже, указывают на то, что у вас не открыт этот второй порт в вашем брандмауэре.
Обычно с достаточно интеллектуальным брандмауэром. этот второй порт открывается автоматически. Поскольку FTP - это протокол открытого текста, ваш брандмауэр может сканировать трафик по командному соединению на порту 21. Он распознает порт PASV, который будет назначен, и динамически открывает брандмауэр и разрешает трафик между этим конкретным клиентом и портом PASV, используемым в нем. session.
Поскольку вы по праву используете шифрование TLS, которое не работает. С FTPS межсетевой экран больше не может отслеживать канал COMMAND.
Решение: исправьте порт PASV (-range):
Одним из решений является настройка вашего FTP-сервера для использования небольшого диапазон портов или только один порт и создайте правило брандмауэра для открытия этих портов. Это объясняется в документации FileZilla :
Общие настройки ==> Настройки пассивного режима ==> Пользовательский диапазон портов
А затем откройте этот диапазон портов в вашем брандмауэре.
Кроме того, если вы находитесь за NAT-маршрутизатором, у вас есть вторая проблема, а именно, что ответ PASV включает не только номер порта, но также IP-адрес FTP-сервера.
Если вы по-прежнему будете использовать FTP в открытом виде, тогда NAT-маршрутизатор обычно сможет переписать этот внутренний IP-адрес в ответ на правильный внешний IP-адрес.
Опять же, потому что вы используете FTP через TLS, который больше не работает.
К счастью, у FileZilla есть решение для этого, он может это исправить и объявляет внешний / общедоступный IP-адрес , а не фактический (внутренний) IP-адрес.