При настройке обмена данными через FTP-сервер довольно часто возникает ситуация, когда подключение успешно выполняется с самого компьютера (localhost) и из локальной сети, однако при попытке зайти из интернета через внешний IP-адрес подключение завершается ошибкой авторизации или неверного логина и пароля. Проанализируем причины этой проблемы и разберем пошаговый алгоритм её диагностики и устранения.
Шаг 1. Локализация проблемы и поэтапная проверка доступа
Прежде чем менять настройки сетевого оборудования и службы FTP, выполним последовательную диагностику каналов связи:
Проверка локального подключения на сервере: Подключимся к FTP-серверу с самой машины, где запущен сервис, указав адрес ftp://localhost/ или ftp://127.0.0.1/. Если доступ есть, значит, сама служба FTP запущена и корректно обрабатывает учетные данные.
Проверка подключения из локальной сети: Подключимся с другого компьютера в той же локальной сети, используя внутренний IP-адрес сервера (например, 192.168.0.100). Успешный вход подтверждает, что сервер принимает внешние соединения во внутренней сети.
Проверка внешнего подключения: Попытаемся подключиться с внешнего компьютера или через мобильный интернет, используя публичный IP-адрес. Если подключение на предыдущих шагах работает, а на этом сбоит — проблема заключается в сетевом экране, роутере или настройках пассивного режима FTP.
Шаг 2. Настройка Брандмауэра Windows и межсетевого экрана
Если брандмауэр блокирует входящие соединения, внешние клиенты не смогут установить связь по порту 21.
Разберем порядок открытия портов в операционной системе Windows:
Перейдем в Панель управления > Администрирование > Брандмауэр Windows в режиме повышенной безопасности.
В левом меню выберем раздел Правила для входящих подключений и нажмем Создать правило.
Укажем тип правила — Для порта, выберем протокол TCP и зададим конкретный порт 21 (управляющий порт FTP).
Выберем действие Разрешить подключение, применим правило к нужным сетевым профилям и сохраним его.
При использовании сторонних антивирусов с сетевым экраном добавим аналогичное правило в настройках их сетевой защиты.
Шаг 3. Настройка проброса портов (Port Forwarding) на роутере
Когда компьютер с FTP-сервером находится за маршрутизатором (роутером), внешний публичный IP-адрес принадлежит роутеру. Чтобы входящие запросы из интернета попадали на ПК с FTP-сервером, настроим переадресацию портов:
Откроем веб-интерфейс маршрутизатора через браузер (обычно 192.168.0.1 или 192.168.1.1).
Создадим правило перенаправления входящих портов 20 и 21 (TCP) на локальный IP-адрес ПК с FTP-сервером.
В качестве альтернативного теста на время проверки можно временно поместить компьютер в зону DMZ (демилитаризованная зона) на роутере, указав его локальный IP-адрес.
Шаг 4. Учет особенностей протокола FTP и настройка пассивного режима (PASV)
Протокол FTP использует два независимых соединения: первое — для передачи команд (порт 21), второе — для передачи данных. Для работы через NAT и роутеры необходимо настроить пассивный режим:
Диапазон пассивных портов: В настройках самого FTP-сервера укажем явный диапазон портов для пассивного режима (например, 50000–50100).
Проброс диапазона портов: Пробросим весь этот диапазон портов (50000–50100) на роутере и откроем его в Брандмауэре Windows.
Внешний IP-адрес в настройках FTP: В конфигурации пассивного режима FTP-сервера укажем наш внешний публичный IP-адрес, чтобы сервер не передавал клиентам свой внутренний адрес (192.168.x.x).
Шаг 5. Особенности подключения к FTP из программ 1С
Если FTP-сервер используется для автоматического обмена данными с 1С (например, при выгрузке каталогов товаров или обмене между узлами РИБ), учтем важные программные нюансы.
При создании объекта FTPСоединение в коде 1С обязательно передадим параметр ПассивныйРежим = Истина. В противном случае 1С попытается использовать активный режим, который блокируется сетевыми экранами и NAT.
Посмотрим на пример корректной инициализации подключения в 1С:
Если на сервере включена защита TLS/SSL, при создании объекта FTPСоединение дополнительно задействуем параметр ЗащищенноеСоединениеOpenSSL.
Дополнительные факторы, препятствующие внешнему подключению
«Серый» IP-адрес провайдера (CGNAT): Если провайдер не предоставляет публичный IP-адрес, проброс портов на домашнем роутере не сработает. Потребуется заказать услугу «Статический IP-адрес» у провайдера.
Блокировка порта 21 провайдером: Некоторые провайдеры блокируют стандартный порт 21. В этом случае можно настроить роутер на прием внешнего нестандартного порта (например, 2121) и перенаправление его на порт 21 внутри сети.
Служба FTP ALG на роутере: Встроенная в роутеры функция FTP ALG (Application Layer Gateway) может искажать FTP-пакеты. Если возникли проблемы с авторизацией, попробуем отключить FTP ALG в настройках маршрутизатора.
Устаревшее ПО FTP-сервера: Использование устаревших серверов (например, War FTP Daemon) может приводить к ошибкам кодировки и авторизации. Рекомендуется использовать актуальные решения, такие как FileZilla Server или встроенную службу FTP в составе IIS.