Почему FTP-сервер работает в локальной сети, но недоступен через внешний IP-адрес

Системный администратор IT и автоматизация бизнеса
← На главную

При настройке обмена данными через FTP-сервер довольно часто возникает ситуация, когда подключение успешно выполняется с самого компьютера (localhost) и из локальной сети, однако при попытке зайти из интернета через внешний IP-адрес подключение завершается ошибкой авторизации или неверного логина и пароля. Проанализируем причины этой проблемы и разберем пошаговый алгоритм её диагностики и устранения.

Шаг 1. Локализация проблемы и поэтапная проверка доступа

Прежде чем менять настройки сетевого оборудования и службы FTP, выполним последовательную диагностику каналов связи:

  1. Проверка локального подключения на сервере: Подключимся к FTP-серверу с самой машины, где запущен сервис, указав адрес ftp://localhost/ или ftp://127.0.0.1/. Если доступ есть, значит, сама служба FTP запущена и корректно обрабатывает учетные данные.
  2. Проверка подключения из локальной сети: Подключимся с другого компьютера в той же локальной сети, используя внутренний IP-адрес сервера (например, 192.168.0.100). Успешный вход подтверждает, что сервер принимает внешние соединения во внутренней сети.
  3. Проверка внешнего подключения: Попытаемся подключиться с внешнего компьютера или через мобильный интернет, используя публичный IP-адрес. Если подключение на предыдущих шагах работает, а на этом сбоит — проблема заключается в сетевом экране, роутере или настройках пассивного режима FTP.

Шаг 2. Настройка Брандмауэра Windows и межсетевого экрана

Если брандмауэр блокирует входящие соединения, внешние клиенты не смогут установить связь по порту 21.

Разберем порядок открытия портов в операционной системе Windows:

  1. Перейдем в Панель управления > Администрирование > Брандмауэр Windows в режиме повышенной безопасности.
  2. В левом меню выберем раздел Правила для входящих подключений и нажмем Создать правило.
  3. Укажем тип правила — Для порта, выберем протокол TCP и зададим конкретный порт 21 (управляющий порт FTP).
  4. Выберем действие Разрешить подключение, применим правило к нужным сетевым профилям и сохраним его.
  5. При использовании сторонних антивирусов с сетевым экраном добавим аналогичное правило в настройках их сетевой защиты.

Шаг 3. Настройка проброса портов (Port Forwarding) на роутере

Когда компьютер с FTP-сервером находится за маршрутизатором (роутером), внешний публичный IP-адрес принадлежит роутеру. Чтобы входящие запросы из интернета попадали на ПК с FTP-сервером, настроим переадресацию портов:

  1. Откроем веб-интерфейс маршрутизатора через браузер (обычно 192.168.0.1 или 192.168.1.1).
  2. Найдем раздел Проброс портов (Port Forwarding / Virtual Servers / Переадресация).
  3. Создадим правило перенаправления входящих портов 20 и 21 (TCP) на локальный IP-адрес ПК с FTP-сервером.
  4. В качестве альтернативного теста на время проверки можно временно поместить компьютер в зону DMZ (демилитаризованная зона) на роутере, указав его локальный IP-адрес.

Шаг 4. Учет особенностей протокола FTP и настройка пассивного режима (PASV)

Протокол FTP использует два независимых соединения: первое — для передачи команд (порт 21), второе — для передачи данных. Для работы через NAT и роутеры необходимо настроить пассивный режим:

  1. Диапазон пассивных портов: В настройках самого FTP-сервера укажем явный диапазон портов для пассивного режима (например, 50000–50100).
  2. Проброс диапазона портов: Пробросим весь этот диапазон портов (50000–50100) на роутере и откроем его в Брандмауэре Windows.
  3. Внешний IP-адрес в настройках FTP: В конфигурации пассивного режима FTP-сервера укажем наш внешний публичный IP-адрес, чтобы сервер не передавал клиентам свой внутренний адрес (192.168.x.x).

Шаг 5. Особенности подключения к FTP из программ 1С

Если FTP-сервер используется для автоматического обмена данными с 1С (например, при выгрузке каталогов товаров или обмене между узлами РИБ), учтем важные программные нюансы.

При создании объекта FTPСоединение в коде 1С обязательно передадим параметр ПассивныйРежим = Истина. В противном случае 1С попытается использовать активный режим, который блокируется сетевыми экранами и NAT.

Посмотрим на пример корректной инициализации подключения в 1С:


АдресFTP = "91.200.100.50";
ПортFTP = 21;
ПользовательFTP = "ftpuser";
ПарольFTP = "Password123";
ПассивныйРежим = Истина;

FTPСоединение = Новый FTPСоединение(АдресFTP, ПортFTP, ПользовательFTP, ПарольFTP, , ПассивныйРежим);

Если на сервере включена защита TLS/SSL, при создании объекта FTPСоединение дополнительно задействуем параметр ЗащищенноеСоединениеOpenSSL.

Дополнительные факторы, препятствующие внешнему подключению

← На главную