Мы часто сталкиваемся с ситуацией, когда опубликованная информационная база 1С:Предприятия прекрасно работает при обращении к ней по адресу http://localhost/ИмяБазы, но становится абсолютно недоступной, если попытаться подключиться к ней по IP-адресу сервера (например, http://192.168.1.99/ИмяБазы) или по доменному имени. Давайте вместе разберем эту проблему шаг за шагом и выясним, почему так происходит и как это исправить.
Эта проблема является одной из самых распространенных при настройке веб-доступа к базам 1С и обычно связана с некорректными сетевыми настройками, конфигурацией веб-сервера (чаще всего IIS) или правилами брандмауэра.
Прежде чем переходить к настройкам, нам необходимо провести диагностику. Один из ключевых инструментов, который поможет нам понять, что происходит на сетевом уровне, это утилита netstat.
Мы проанализируем вывод команды netstat -a. Эта команда показывает все активные соединения и порты, которые прослушиваются на нашем сервере. В нашем случае, если база доступна только по localhost, мы, скорее всего, увидим следующую картину для порта 80 (или любого другого порта, на котором опубликован наш веб-сайт 1С):
Активные подключения
Протокол Локальный адрес Внешний адрес Состояние
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING
Что это означает? Строка 127.0.0.1:80 с состоянием LISTENING говорит нам о том, что веб-сервер (например, IIS) прослушивает запросы только на интерфейсе 127.0.0.1, то есть на самом себе, на "петлевом" интерфейсе localhost. Он не слушает запросы, приходящие на другие IP-адреса, назначенные вашему серверу (например, 192.168.1.99). Именно поэтому, когда мы пытаемся обратиться к базе по внешнему IP, веб-сервер просто "не слышит" эти запросы.
Для корректной работы наш веб-сервер должен прослушивать запросы на всех доступных IP-адресах или на конкретном внешнем IP-адресе. В идеале, мы должны увидеть что-то вроде:
Активные подключения
Протокол Локальный адрес Внешний адрес Состояние
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
Где 0.0.0.0:80 означает, что сервер прослушивает порт 80 на всех доступных сетевых интерфейсах. Теперь, когда мы выяснили потенциальную причину, давайте перейдем к решениям.
Главная причина, по которой веб-сервер может прослушивать только localhost, кроется в его конфигурации, а именно в настройках привязок (Bindings) веб-сайта в IIS (Internet Information Services).
Откроем диспетчер IIS. Запустите "Диспетчер служб IIS" (IIS Manager).
Найдем ваш веб-сайт. В дереве слева разверните узел сервера, затем "Сайты" (Sites) и найдите веб-сайт, на котором опубликована ваша база 1С (например, "Default Web Site" или специально созданный для 1С).
Перейдем к привязкам. Выделите сайт и в правой панели "Действия" (Actions) выберите "Привязки..." (Bindings...).
Проанализируем существующие привязки. Здесь мы увидим, как настроен доступ к вашему сайту. Если вы видите привязку только для localhost или для определенного IP-адреса, который не является внешним IP вашего сервера, это и есть наша проблема.
Добавим или изменим привязку.
Вариант 1: Доступ по всем IP-адресам. Нажмите "Добавить..." (Add...) или "Изменить..." (Edit...). В поле "IP-адрес" (IP address) выберите "Все неназначенные" (All Unassigned). Убедитесь, что поле "Имя узла" (Host name) остается пустым, если вы хотите получать доступ по IP-адресу. Укажите нужный "Порт" (Port), обычно 80 для HTTP.
Вариант 2: Доступ по конкретному IP-адресу. Если вы хотите, чтобы сайт отвечал только на определенный IP-адрес вашего сервера (например, 192.168.1.99), выберите его из выпадающего списка в поле "IP-адрес". Поле "Имя узла" также должно быть пустым.
Почему это важно? Когда IP-адрес установлен как "Все неназначенные", IIS будет прослушивать указанный порт на всех сетевых интерфейсах сервера. Если указан конкретный IP, он будет слушать только на этом интерфейсе. Если указан localhost, то только на нем.
Убедимся в уникальности идентификаторов. Если на одном сервере работает несколько сайтов, каждый из них должен иметь уникальный идентификатор, который формируется из комбинации TCP-порта, IP-адреса и имени узла. Если два сайта пытаются слушать один и тот же порт на одном и том же IP-адресе без указания уникального имени узла, возникнет конфликт.
Проверим активность сайта. Убедитесь, что ваш сайт в IIS активен (состояние "Запущено" - Started).
Настроим права доступа. Для корректной работы веб-доступа к базам 1С, особенно для файловых баз, нам необходимо предоставить полные права группе IIS_IUSRS на каталог хранения файлов веб-сайтов (обычно C:\inetpub\wwwroot) и на каталог с файлами самой информационной базы 1С.
Проверим модули расширения 1С. Убедимся, что при установке платформы 1С был установлен компонент "Модули расширения веб-сервера". Без него IIS не сможет корректно обрабатывать запросы к базам 1С.
После изменения привязок обязательно перезапустите веб-сайт в IIS (кнопки "Перезапустить" или "Остановить", затем "Запустить" в правой панели).
Даже если IIS настроен правильно и прослушивает нужный IP-адрес, Брандмауэр Windows может блокировать входящие подключения. Мы должны убедиться, что он разрешает трафик на используемые порты.
Откроем "Брандмауэр Защитника Windows в режиме повышенной безопасности". Это можно сделать через Панель управления или поиском.
Перейдем к "Правилам для входящих подключений".
Найдем или создадим правило для порта 80 (или вашего порта).
Создание нового правила: Выберите "Создать правило..." (New Rule...). Выберите тип правила "Для порта" (Port). Укажите "TCP" и "Определенные локальные порты" (Specific local ports), введите 80 (или другой порт, используемый для публикации 1С). Выберите "Разрешить подключение" (Allow the connection). Укажите профили сети (Доменный, Частный, Публичный), для которых правило должно действовать (обычно все). Дайте правилу понятное имя, например, "Разрешить HTTP (Порт 80) для 1С".
Проверка существующего правила: Убедитесь, что для порта 80 (или вашего порта) уже существует активное правило, разрешающее входящие подключения. Если такое правило есть, но оно не работает, проверьте его область действия (Scope) — убедитесь, что оно разрешает подключения с любых IP-адресов или с IP-адресов вашей локальной сети.
Важный момент: Для веб-сервера 1С по умолчанию это порт 80 (HTTP) или 443 (HTTPS). Если вы используете клиент-серверный вариант 1С, вам также потребуются открытые порты 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560-1591 (рабочие процессы).
Добавим исключение для dllhost.exe (опционально, но полезно). В некоторых случаях, особенно при проблемах с правами или специфической конфигурации, может потребоваться добавить в список исключений брандмауэра саму программу dllhost.exe, которая используется для работы с компонентами IIS. Это делается через создание правила для программы, указав путь к dllhost.exe (обычно C:\Windows\System32\dllhost.exe).
Если сервер находится в локальной сети и доступ к нему нужен извне (из интернета), нам необходимо проверить настройки маршрутизатора.
Повторная проверка netstat. После всех изменений в IIS и брандмауэре, обязательно снова выполните команду netstat -a. Мы должны увидеть, что порт 80 (или ваш порт) теперь прослушивается на 0.0.0.0:80 (для IPv4) или [::]:80 (для IPv6). Если это так, значит, веб-сервер успешно настроен на прием запросов со всех интерфейсов.
Конфигурация веб-сервера. Убедитесь, что сам веб-сервер (IIS или Apache) настроен принимать запросы на внешнем сетевом интерфейсе, а не только на localhost. В IIS это управляется привязками, как мы рассмотрели выше.
Проброс портов (Port Forwarding) на маршрутизаторе. Если доступ к базе 1С требуется извне локальной сети (из интернета), нам необходимо настроить проброс портов на вашем роутере. Это означает перенаправление внешнего порта (например, 80 или 8080) на внутренний IP-адрес сервера 1С и его порт (например, 192.168.1.99:80). Процедура настройки проброса портов индивидуальна для каждой модели роутера, но общая логика такова:
Зайдите в веб-интерфейс вашего роутера (обычно по адресу 192.168.1.1 или 192.168.0.1).
Найдите раздел "Port Forwarding", "Virtual Servers" или "Проброс портов".
Создайте новое правило: укажите внешний порт (тот, по которому будут обращаться из интернета), внутренний IP-адрес сервера 1С (например, 192.168.1.99) и внутренний порт (на котором работает IIS, например, 80).
Иногда проблема может быть вызвана менее очевидными причинами, которые также стоит рассмотреть.
Конфигурация файла hosts. Неправильные записи в файле hosts (который находится по пути C:\Windows\System32\drivers\etc\hosts) могут привести к ошибкам подключения к локальному серверу. Мы должны убедиться, что там нет записей, которые перенаправляют ваш внешний IP на localhost или наоборот, если это не было сделано намеренно и осознанно.
Занятость порта. Убедимся, что используемый порт (например, 80) не занят другим приложением на сервере. Если IIS не может "связаться" с портом, он не сможет его прослушивать. Вы можете использовать команду netstat -ano, чтобы увидеть, какой процесс (по PID) занимает порт. Затем в "Диспетчере задач" можно найти этот процесс по PID.
Перезапуск служб. После внесения любых изменений в настройки IIS, брандмауэра или сетевые параметры, всегда рекомендуется перезапустить соответствующие службы (например, "Служба веб-публикаций" - World Wide Web Publishing Service) или даже весь сервер, чтобы изменения вступили в силу.
Решение проблемы, когда база 1С недоступна по внешнему адресу, но работает по localhost, обычно сводится к последовательной и внимательной проверке этих трех основных областей: настройки привязок в IIS, правила брандмауэра Windows и, при необходимости, проброс портов на маршрутизаторе. Применяя эти шаги, мы сможем добиться стабильного и доступного веб-доступа к вашей информационной базе 1С.