Порт 9099 для веб-публикации 1С: правило брандмауэра, проверка и ошибки
Содержание
Чтобы открыть порт 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 пошагово
Правило нужно именно для входящих подключений: к вашему веб-серверу стучатся снаружи.
- В левой панели выберите
Правила для входящих подключений. - Справа, в панели «Действия», нажмите
Создать правило…. - Тип правила — Для порта. Нажмите «Далее».
- Протокол — Протокол TCP. Отметьте «Определённые локальные порты» и введите
9099. Нажмите «Далее». - Действие — Разрешить подключение. Нажмите «Далее».
- Профили — отметьте те, в которых правило должно работать (подробнее ниже). Нажмите «Далее».
- Задайте имя и описание, нажмите «Готово».
Правило вступает в силу сразу, перезагружать компьютер не нужно.
Нужен ли 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
- Откройте
httpd.conf(обычноC:\Apache24\conf\httpd.conf). - Найдите строку
Listen 80и замените наListen 9099— или добавьте вторую строкуListen 9099, если 80-й порт тоже нужен. - Опубликуйте базу. Это можно сделать из Конфигуратора (
Администрирование → Публикация на веб-сервере) или утилитойwebinst.exeиз каталогаbinплатформы. - Перезапустите службу 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/ |
| Веб-сервис SOAP | http://сервер:9099/buh/ws/ИмяСервиса?wsdl |
| HTTP-сервис | http://сервер:9099/buh/hs/корневойURL/... |
| OData | http://сервер: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 удобнее и есть всегда.
Как читать ошибки браузера
netstat -ano | findstr :9099, строку Listen в httpd.conf или привязку в IIS, запущена ли служба веб-сервера.Если порт 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 на компьютерах пользователей?
Можно ли выбрать другой порт вместо 9099?
Нужно ли открывать 9099, если 1С работает через тонкий клиент без веб-сервера?
Правило создано, но через неделю перестало работать. Что случилось?
Как закрыть порт 9099 обратно?
wf.msc либо выполните netsh advfirewall firewall delete rule name= с именем правила. Если порт больше не нужен совсем, уберите и строку Listen 9099 из настроек Apache.