Как открыть брандмауэр и создать правила для программы
Windows Server 2019: как открыть брандмауэр и создать правила для программы
Кратко: ниже показано два способа разрешить работу приложения через брандмауэр Windows Server 2019 — через графический интерфейс (wf.msc) и через PowerShell. Плюс — готовые команды для портов и проверка.
Содержание
- Предварительно
- Способ 1 — через интерфейс (wf.msc)
- Способ 2 — через PowerShell
- Правило по портам (если известен порт)
- Как проверить, что работает
- Исключения в Защитнике Windows (опционально)
- Частые проблемы и решения
1) Предварительно
- Выполняйте действия от имени администратора.
- Уточните путь к EXE-файлу программы, например:
C:\Program Files\MyApp\myapp.exe. - Если сервер в домене, убедитесь, что групповые политики (GPO) не запрещают локальные изменения брандмауэра.
2) Способ 1 — через интерфейс (wf.msc)
- Нажмите Win + R → введите
wf.msc→ Enter, откроется Windows Defender Firewall with Advanced Security. - Слева выберите Inbound Rules → справа New Rule….
- В мастере выберите Program → Next.
- Укажите This program path и путь к вашему EXE.
- Выберите Allow the connection → Next.
- Отметьте профили Domain / Private / Public по необходимости → Next.
- Задайте имя, например
Allow MyApp (Inbound)→ Finish.
При необходимости аналогично создайте Outbound Rule (исходящие подключения): слева Outbound Rules → New Rule… и повторите шаги.
3) Способ 2 — через PowerShell
Откройте PowerShell от имени администратора и выполните команды, подставив путь к вашему EXE:
# Разрешить входящие подключения для конкретного EXE
New-NetFirewallRule -DisplayName "Allow MyApp Inbound" -Direction Inbound -Program "C:\Program Files\MyApp\myapp.exe" -Action Allow
# Разрешить исходящие подключения для конкретного EXE
New-NetFirewallRule -DisplayName "Allow MyApp Outbound" -Direction Outbound -Program "C:\Program Files\MyApp\myapp.exe" -Action Allow
Если нужно ограничить правило определёнными профилями сети, добавьте параметр -Profile (например, -Profile Domain,Private).
4) Правило по портам (если известен порт)
Если приложение слушает конкретный порт (например, TCP 8080), можно создать правило по порту:
# Разрешить входящие подключения на TCP 8080
New-NetFirewallRule -DisplayName "Allow TCP 8080 (Inbound)" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
# (Опционально) Разрешить исходящие подключения на TCP 8080
New-NetFirewallRule -DisplayName "Allow TCP 8080 (Outbound)" -Direction Outbound -Protocol TCP -LocalPort 8080 -Action Allow
Замените 8080 на необходимый порт. Для UDP используйте -Protocol UDP.
5) Как проверить, что работает
Проверить правила брандмауэра
# Показать созданные правила (фильтр по части имени)
Get-NetFirewallRule | Where-Object DisplayName -like "*MyApp*"
Проверить доступность порта
# С локального или удалённого хоста:
Test-NetConnection -ComputerName <server-ip-or-name> -Port 8080
Проверить, что приложение действительно слушает порт
netstat -ano | findstr :8080
# или в PowerShell:
Get-NetTCPConnection -LocalPort 8080
6) Исключения в Защитнике Windows (опционально)
Если антивирусная часть блокирует запуск, добавьте исключения для файла/процесса:
# Добавить папку в исключения
Add-MpPreference -ExclusionPath "C:\Program Files\MyApp"
# Добавить конкретный исполняемый файл в исключения процессов
Add-MpPreference -ExclusionProcess "C:\Program Files\MyApp\myapp.exe"
# Проверить текущие исключения
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess
Важно: если установлен сторонний антивирус, команды Defender могут быть недоступны или бессмысленны.
7) Частые проблемы и решения
- Нет прав администратора. Запускайте PowerShell и wf.msc через Run as administrator.
- Сервер в домене, правила не сохраняются. Проверьте GPO: правила брандмауэра и параметры Защитника могут управляться доменными политиками. Вносите изменения на уровне домена или попросите администратора домена.
- Порт открыт в брандмауэре, но соединения нет. Убедитесь, что приложение действительно слушает порт (см. netstat / Get-NetTCPConnection), и что нет внешнего сетевого ACL/NAT/балансировщика, который блокирует трафик.
- Нужно ограничить правило только для определённой сети. Добавьте к правилу параметры
-Profile(Domain/Private/Public) и при необходимости-RemoteAddress(например, whitelist для подсети). - Нужно удалить правило. Найдите точное имя и удалите:
Remove-NetFirewallRule -DisplayName "Allow MyApp Inbound"
Итог: для большинства сценариев достаточно создать Inbound и, при необходимости, Outbound правило для EXE приложения, либо открыть нужный порт. Используйте интерфейс wf.msc или PowerShell — второй способ быстрее и удобнее для автоматизации.