Порт 9099 для веб-публикации 1С: правило брандмауэра, проверка и ошибки

· 10 мин

Содержание

Чтобы открыть порт 9099 для 1С в Windows 10, создайте входящее правило в брандмауэре: Win + R → wf.msc → Правила для входящих подключений → Создать правило → тип «Для порта» → TCP, локальный порт 9099 → «Разрешить подключение». Делается это на том компьютере, где работает веб-сервер с публикацией базы, а не на клиентах.

Но правило брандмауэра — только половина дела. Порт «откроется» для других компьютеров, лишь когда на нём кто-то слушает: Apache или IIS с опубликованной базой 1С, HTTP-сервис, сторонний обменный модуль. Если веб-сервер настроен на порт 80, правило на 9099 ничего не даст.

Что проверить до создания правила для порта 9099

Порт 9099 не входит в стандартный набор портов платформы 1С:Предприятие 8.3. Кластер серверов 1С работает на 1540 (агент), 1541 (менеджер кластера) и диапазоне 1560–1591 (рабочие процессы). А 9099 администратор обычно назначает сам — под веб-публикацию базы, чтобы не занимать 80-й порт или развести несколько веб-серверов на одной машине.

Перед настройкой выясните три вещи.

  • 🖥️ Где стоит веб-сервер. Правило создают на компьютере, где запущен Apache или IIS с публикацией 1С. Клиентам с браузером или тонким клиентом ничего открывать не нужно: исходящие соединения Windows по умолчанию разрешает.
  • 🔌 Слушает ли кто-то порт. Откройте командную строку и выполните netstat -ano | findstr :9099. Если в выводе есть строка со словом LISTENING, порт уже занят процессом — посмотрите его PID в последней колонке.
  • 🛡️ Чей брандмауэр работает. Если стоит антивирус со своим сетевым экраном (Kaspersky, ESET и другие), он может перехватить управление трафиком. Тогда правило в брандмауэре Windows не сработает — разрешение настраивают в самом антивирусе.

Узнать, какая программа держит порт, можно по PID:

netstat -ano | findstr :9099
tasklist /FI "PID eq 4312"

Вместо 4312 подставьте число из первой команды. Для Apache в выводе будет httpd.exe, для IIS — System (служба HTTP.sys).

Если в netstat порта 9099 нет вовсе, начинать надо с веб-сервера. Для Apache это строка Listen 9099 в файле httpd.conf, для IIS — привязка сайта к порту 9099 (подробно — в разделе про веб-сервер ниже).

Нужны права администратора Windows: без них оснастка брандмауэра откроется, но создать правило не даст.

Как открыть брандмауэр Windows 10 в режиме повышенной безопасности

Обычное окно брандмауэра в Параметрах умеет только разрешать программы целиком. Для правила по номеру порта нужна расширенная оснастка. Попасть в неё можно тремя способами.

СпособЧто сделать
Через «Выполнить»Win + R → ввести wf.msc → Enter
Через Панель управленияПанель управления → Брандмауэр Защитника Windows → Дополнительные параметры
Через поискНажать на лупу в панели задач, набрать «режиме повышенной безопасности»

Откроется окно «Монитор брандмауэра Защитника Windows в режиме повышенной безопасности». Слева — дерево: правила для входящих подключений, правила для исходящих, правила безопасности подключения, наблюдение.

Сразу посмотрите на центральную часть окна. Там видно, какой профиль сети сейчас активен: доменный, частный или общий. Это пригодится на шаге выбора профилей — правило для «частной» сети не сработает, если Windows считает сеть общедоступной.

Создаём входящее правило: открываем TCP-порт 9099 пошагово

Правило нужно именно для входящих подключений: к вашему веб-серверу стучатся снаружи.

  1. В левой панели выберите Правила для входящих подключений.
  2. Справа, в панели «Действия», нажмите Создать правило….
  3. Тип правила — Для порта. Нажмите «Далее».
  4. Протокол — Протокол TCP. Отметьте «Определённые локальные порты» и введите 9099. Нажмите «Далее».
  5. Действие — Разрешить подключение. Нажмите «Далее».
  6. Профили — отметьте те, в которых правило должно работать (подробнее ниже). Нажмите «Далее».
  7. Задайте имя и описание, нажмите «Готово».

Правило вступает в силу сразу, перезагружать компьютер не нужно.

Нужен ли UDP

Для 1С на порту 9099 — нет. Веб-клиент, HTTP-сервисы, веб-сервисы SOAP и OData работают поверх HTTP, а HTTP ходит только по TCP. Открывать UDP «на всякий случай» не стоит: это лишняя дыра без пользы. UDP-правило имеет смысл, только если на 9099 работает сторонняя программа, которой он явно нужен по документации.

Какие профили отмечать

ПрофильКогда отмечать
ДоменныйКомпьютер в домене Active Directory — типичная офисная сеть
ЧастныйНебольшая сеть без домена, сеть помечена как частная
ПубличныйТолько если иначе никак: сеть ошибочно определилась как общедоступная

Не отмечайте «Публичный» для сервера, который смотрит в интернет без защиты. Лучше поменяйте тип сети на частный в Параметры → Сеть и Интернет → Ethernet (выберите подключение и переключите профиль).

Ограничьте, кто может подключаться

Мастер не спрашивает про адреса, но это настраивается после создания. Откройте свойства правила двойным щелчком → вкладка Область → блок «Удалённый IP-адрес» → «Указанные IP-адреса» → Добавить. Можно указать отдельный адрес, подсеть (192.168.1.0/24) или диапазон.

Так порт 9099 будет открыт только для офисной сети или для конкретного сервера, который обращается к веб-сервисам 1С.

Имя и описание правила: как не потеряться через год

Через полгода в списке будет сотня правил, и «Новое правило 3» не скажет ничего. Называйте так, чтобы было понятно назначение без открытия свойств.

Удобная схема имени: 1С — веб-публикация — TCP 9099. Префикс «1С» сгруппирует все правила для 1С при сортировке по имени.

В описание запишите:

  • 📌 что слушает порт (Apache 2.4, IIS);
  • 📌 какую базу опубликовали и по какому адресу (http://srv-1c:9099/buh/);
  • 📌 кто и когда создал правило, номер заявки, если он есть.

Если правило временное — например, для теста обмена с подрядчиком, — так и напишите в описании. Временные правила чаще всего забывают удалить.

Правило можно не удалять, а выключить: правой кнопкой → «Отключить правило». Удобно, когда доступ нужен время от времени.

Открыть порт 9099 из командной строки или PowerShell

Когда серверов несколько или настройку надо повторить, мастер становится неудобным. То же правило создаётся одной командой. Запускайте консоль от имени администратора.

Через netsh (работает в любой версии Windows 10):

netsh advfirewall firewall add rule name="1С веб-публикация TCP 9099" dir=in action=allow protocol=TCP localport=9099 profile=domain,private

Через PowerShell, с ограничением по подсети:

New-NetFirewallRule -DisplayName "1С веб-публикация TCP 9099" `
  -Direction Inbound -Protocol TCP -LocalPort 9099 `
  -Action Allow -Profile Domain,Private `
  -RemoteAddress 192.168.1.0/24

Проверить, что правило появилось:

Get-NetFirewallRule -DisplayName "1С веб-публикация TCP 9099" | Get-NetFirewallPortFilter

Удалить, если правило больше не нужно:

netsh advfirewall firewall delete rule name="1С веб-публикация TCP 9099"

Командой удобно открывать порт и в скрипте развёртывания: тот же .bat можно запустить на всех серверах, где публикуется база.

Веб-сервер на порту 9099: чтобы было что открывать

Если netstat показал, что порт 9099 никто не слушает, правило брандмауэра бесполезно. Браузер с другого компьютера получит ошибку соединения. Вот что нужно сделать на стороне веб-сервера.

Apache 2.4

  1. Откройте httpd.conf (обычно C:\Apache24\conf\httpd.conf).
  2. Найдите строку Listen 80 и замените на Listen 9099 — или добавьте вторую строку Listen 9099, если 80-й порт тоже нужен.
  3. Опубликуйте базу. Это можно сделать из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst.exe из каталога bin платформы.
  4. Перезапустите службу Apache.

Пример публикации серверной базы утилитой:

"C:\Program Files\1cv8\8.3.24.1548\bin\webinst.exe" -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv-1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

Номер версии в пути замените на свой. После этого база откроется по адресу http://srv-1c:9099/buh/.

Перезапуск Apache обрывает все сеансы веб-клиента и активные обращения к веб-сервисам. Делайте это вне рабочего времени или предупредите пользователей.

IIS

В «Диспетчере служб IIS» выберите сайт, справа нажмите Привязки… → Добавить → тип http, порт 9099. Привязка применяется без перезапуска сервера.

Адреса, которые проверяют после публикации

Что опубликованоАдрес для проверки
Веб-клиентhttp://сервер:9099/buh/
Веб-сервис SOAPhttp://сервер:9099/buh/ws/ИмяСервиса?wsdl
HTTP-сервисhttp://сервер:9099/buh/hs/корневойURL/...
ODatahttp://сервер:9099/buh/odata/standard.odata/

Здесь buh — имя публикации, которое вы задали при публикации базы.

Проверка порта 9099: доступен ли он с другого компьютера

Проверяйте в два этапа: сначала на самом сервере, затем с клиента. Так сразу видно, где проблема — в веб-сервере или в сети.

На сервере откройте http://localhost:9099/buh/ в браузере. Открывается — веб-сервер и публикация работают.

С клиентского компьютера выполните в PowerShell:

Test-NetConnection -ComputerName srv-1c -Port 9099

Смотрите на строку TcpTestSucceeded. Значение True — порт доступен по сети, брандмауэр пропускает. False — соединение не установилось.

Утилита telnet в Windows 10 по умолчанию не установлена. Включить её можно в Панель управления → Программы и компоненты → Включение или отключение компонентов Windows → Клиент Telnet, но Test-NetConnection удобнее и есть всегда.

Как читать ошибки браузера

Диагностика: выберите симптом

Если порт 9099 так и не открылся

Правило создано, а TcpTestSucceeded всё ещё False. Пройдите по причинам, которые встречаются чаще других на практике.

  • 🔄 Правило для исходящих вместо входящих. Мастер одинаковый, легко ошибиться разделом. Найдите правило в левой панели и проверьте, где оно лежит.
  • 🌐 Не тот профиль. Сеть определилась как «Общедоступная», а правило включено только для доменного и частного профиля. Активный профиль виден на главной странице оснастки wf.msc.
  • 🚫 Блокирующее правило. В Windows запрещающее правило главнее разрешающего. Отсортируйте входящие правила по столбцу «Действие» и поищите «Блокировать» с портом 9099 или с программой httpd.exe.
  • 🔒 Веб-сервер слушает только localhost. В netstat адрес вида 127.0.0.1:9099 означает, что снаружи порт недоступен. Нужно 0.0.0.0:9099 или адрес сетевой карты. Исправляется в строке Listen у Apache.
  • 🧱 Сетевой экран антивируса. Временно отключите его на минуту и повторите Test-NetConnection. Заработало — добавьте разрешение для порта 9099 в настройках антивируса и включите защиту обратно.
  • 🔀 Порт занят другой программой. Apache не запустится, если 9099 уже держит другой процесс. Ошибку видно в журнале C:\Apache24\logs\error.log и в журнале событий Windows.

Доступ к 1С через интернет по порту 9099

Брандмауэр Windows отвечает только за сам компьютер. Чтобы обращаться к публикации снаружи офиса, нужен проброс порта 9099 на роутере на внутренний адрес сервера. Настраивается он в веб-интерфейсе роутера, в разделе переадресации портов (у разных производителей он называется по-разному: «Port Forwarding», «Виртуальные серверы», NAT).

Открывать 1С в интернет по голому HTTP нельзя: логины и пароли пользователей пойдут открытым текстом. Минимум — HTTPS с сертификатом на веб-сервере, лучше — доступ через VPN, а порт наружу не пробрасывать вовсе.

Перед тем как выпустить порт 9099 в интернет
Выполнено: 0 / 5

Частые вопросы

Надо ли открывать порт 9099 на компьютерах пользователей?
Нет. Пользователи только подключаются к серверу, а исходящие соединения брандмауэр Windows разрешает по умолчанию. Правило нужно только на сервере с веб-публикацией.
Можно ли выбрать другой порт вместо 9099?
Да, номер порта ничем не привязан к 1С. Подойдёт любой свободный, например 8080 или 8443. Главное — чтобы совпадали строка Listen или привязка IIS, правило брандмауэра и адрес, который используют клиенты.
Нужно ли открывать 9099, если 1С работает через тонкий клиент без веб-сервера?
Нет. Тонкий клиент в клиент-серверном варианте подключается к кластеру напрямую, через порты 1540, 1541 и диапазон 1560–1591. Порт веб-сервера ему не нужен.
Правило создано, но через неделю перестало работать. Что случилось?
Чаще всего Windows поменяла профиль сети после переподключения или обновления, либо групповая политика домена перезаписала локальные правила. Проверьте активный профиль и уточните у администратора домена, не управляются ли правила централизованно.
Как закрыть порт 9099 обратно?
Отключите или удалите правило в wf.msc либо выполните netsh advfirewall firewall delete rule name= с именем правила. Если порт больше не нужен совсем, уберите и строку Listen 9099 из настроек Apache.