Правила для портов: как открыть порт на сервере и не открыть лишнего

Обновлено 16.08.2026  ·  30

Почти любое обращение вида «сервис не видит мой сервер», «друг не может подключиться», «панель пишет, что соединение не удалось» упирается в одно и то же: нужный порт закрыт брандмауэром. Разберём, что такое порт и правило брандмауэра, какие бывают правила, как создать правило на Windows Server и на Linux, как убедиться, что всё заработало, и как при этом не открыть лишнего. В конце — практический разбор реального обращения в поддержку: подключение CFTools Cloud к серверу DayZ.

КороткоПорт открывается входящим разрешающим правилом: направление, протокол, номер порта, действие.Windows Server: Win + Rwf.msc → «Правила для входящих подключений» → «Создать правило…» → «Для порта».Одной строкой в PowerShell: New-NetFirewallRule -DisplayName "DayZ RCon" -Direction Inbound -Protocol UDP -LocalPort 2305 -Action Allow -Profile AnyLinux: sudo ufw allow 2305/udp либо sudo firewall-cmd --permanent --add-port=2305/udp и --reload.Проверять доступность порта — только с другого компьютера, а UDP — клиентом самого протокола, не сканером.

Что такое порт и почему он «закрыт»

IP-адрес — это адрес здания. Порт — номер двери в нём. На одном адресе одновременно живут десятки служб: игровой сервер, веб-сервер, удалённый рабочий стол, база данных. Чтобы трафик не перепутался, каждая служба слушает свою дверь: 80 и 443 — сайты, 3389 — RDP, 22 — SSH, 2302 — игровой порт DayZ.

Брандмауэр (он же firewall, межсетевой экран) стоит на входе и решает, кого пустить. По умолчанию Windows Server работает так:

  • Входящие подключения, для которых нет разрешающего правила, — запрещены.
  • Исходящие подключения, для которых нет запрещающего правила, — разрешены.

Логика простая: сервер сам может обращаться куда угодно, а вот пускать к себе — только туда, куда вы явно разрешили. Поэтому, когда вы поднимаете новую службу, мало её запустить: надо ещё открыть дверь, то есть создать входящее разрешающее правило.

Две разные вещи«Приложение слушает порт» — программа запущена и готова принимать соединения. «Порт открыт» — брандмауэр пропускает трафик до этой программы. Соединение появится только тогда, когда выполнено и то, и другое. Если снаружи тишина — сначала выясните, какое из двух условий нарушено, и не чините наугад.

Из чего состоит правило

Любое правило брандмауэра — это набор условий и действие, которое применяется к подходящему трафику. Условия:

  • Направление — входящее (кто-то подключается к серверу) или исходящее (сервер подключается наружу).
  • ПротоколTCP или UDP. Их нельзя путать: правило для TCP не пропустит UDP-трафик, даже если номер порта совпадает. Веб, RDP, SSH, базы данных — как правило TCP. Игровые серверы, голосовой трафик, DNS, BattlEye RCon — обычно UDP.
  • Порт — один номер (2305), список (80, 443) или диапазон (2302-2305). Различают локальный порт (на вашем сервере) и удалённый (на стороне того, кто подключается) — почти всегда вам нужен локальный.
  • Профиль сети — доменный, частный, публичный. Правило действует только в тех профилях, где стоят галочки.
  • Область — с каких IP-адресов разрешено подключаться. Самый недооценённый пункт: именно он превращает «дырку в стене» в аккуратную дверь с домофоном.
  • Программа или служба — правило можно привязать к конкретному исполняемому файлу.

Действие — одно из трёх: разрешить подключение, разрешить только безопасное подключение (с проверкой подлинности IPsec) или блокировать подключение. Если один и тот же трафик попадает под разрешающее и под запрещающее правило, побеждает запрещающее.

Какие бывают правила

Мастер Windows предлагает четыре типа. Тип определяет только то, о чём вас спросят дальше, — результат в любом случае попадает в один и тот же список правил.

  • Для порта — разрешаем трафик на конкретный номер порта независимо от того, какая программа его слушает. Самый частый и самый предсказуемый вариант: игровые серверы, панели управления, внешние сервисы.
  • Для программы — разрешаем конкретному .exe принимать подключения на любых портах. Удобно, когда приложение выбирает порты динамически. Минус: переехал файл после обновления — правило перестало работать.
  • Предопределённые — готовые наборы правил для ролей и компонентов Windows (общий доступ к файлам, удалённое управление и т. п.). Без необходимости их лучше не трогать.
  • Настраиваемые — всё сразу: и программа, и протокол, и порты, и адреса. Нужны для точной настройки вида «этот порт, но только для двух конкретных IP и только для этой службы».

Отдельно помните про исходящие правила. Их создают редко, но они встречаются: если сервер должен сам куда-то стучаться, а исходящий трафик ограничен политикой, придётся разрешить и его.

Windows Server: открываем порт через мастер

Ниже — полный проход по мастеру. Для примера открываем UDP 2305: это порт BattlEye RCon для сервера DayZ, тот самый случай из поддержки, который разберём подробнее ниже.

1Откройте оснастку брандмауэра

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

Оснастка wf.msc: раздел «Правила для входящих подключений» и кнопка «Создать правило» в панели «Действия»Слева — разделы, посередине — список действующих правил, справа — действия. «Создать правило…» всегда первым пунктом.

Тот же раздел открывается через «Панель управления» → «Брандмауэр Защитника Windows» → «Дополнительные параметры».

2Тип правила — «Для порта»

Выберите Для порта и нажмите «Далее». Обратите внимание: список шагов слева сразу изменится — вместо «Программа» появится «Протокол и порты».

Мастер создания правила, шаг «Тип правила»: выбран пункт «Для порта»По умолчанию мастер предлагает «Для программы» — переключите на «Для порта».

3Протокол и номер порта

Выберите протокол — TCP или UDP. Затем отметьте Определенные локальные порты и впишите номер. В нашем примере это UDP и порт 2305.

В это поле можно вписать несколько портов через запятую (80, 443) или диапазон через дефис (2302-2305). Диапазон удобен для игрового сервера, где подряд идут игровой порт, порт Steam-запросов и RCon.

Шаг «Протокол и порты»: выбран протокол UDP и указан локальный порт 2305Поле «Определенные локальные порты» принимает и одиночные номера, и списки, и диапазоны.

Ошибка номер одинЕсли протокол выбран неверно, правило создастся без ошибок и будет выглядеть рабочим — но трафик не пойдёт. Почти весь игровой трафик идёт по UDP, а по привычке ставят TCP.

4Действие

Оставьте Разрешить подключение. Вариант «Разрешить только безопасное подключение» требует настроенного IPsec и в обычной ситуации не нужен.

Шаг «Действие»: выбран пункт «Разрешить подключение»Нужный вариант выбран по умолчанию — просто идём дальше.

5Профили

Оставьте все три галочки — доменный, частный, публичный. На выделенном сервере сеть обычно определяется как публичная, но профиль может смениться после переподключения сетевого адаптера, и тогда правило с одной галочкой внезапно перестанет действовать.

Шаг «Профиль»: отмечены доменный, частный и публичный профилиСнимать галочки имеет смысл только тогда, когда вы точно знаете, зачем это делаете.

6Имя и описание

Назовите правило так, чтобы через полгода вы поняли, зачем оно. Плохо: «Правило 1», «test», «порт». Хорошо: DayZ BattlEye RCon (UDP 2305). В описание впишите, для чего порт нужен и кто им пользуется — это сэкономит время и вам, и поддержке.

Шаг «Имя»: заполнены имя правила и описаниеОписание необязательно, но именно оно спасает, когда правил становится больше десятка.

7Готово

Нажмите «Готово» — правило появится в списке и начнёт действовать сразу. Перезагрузка не нужна. Зелёная галочка слева означает, что правило включено.

Созданное правило DayZ BattlEye RCon (UDP 2305) в списке входящих правилНовое правило встаёт в начало списка, а в панели справа появляются действия именно для него.

Windows Server: то же самое одной командой

Когда портов много или настройку нужно повторить на нескольких серверах, быстрее сделать это из PowerShell, запущенного от имени администратора.

New-NetFirewallRule -DisplayName "DayZ BattlEye RCon (UDP 2305)" -Direction Inbound -Protocol UDP -LocalPort 2305 -Action Allow -Profile Any

Диапазон портов и несколько портов сразу:

New-NetFirewallRule -DisplayName "DayZ server (UDP 2302-2305)" -Direction Inbound -Protocol UDP -LocalPort 2302-2305 -Action Allow -Profile Any

New-NetFirewallRule -DisplayName "Web (TCP 80,443)" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow -Profile Any

Правило только для конкретных адресов — так и надо открывать всё, что не должно быть доступно всему интернету:

New-NetFirewallRule -DisplayName "Panel access (TCP 8080, only office)" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -RemoteAddress 203.0.113.10, 198.51.100.0/24 -Profile Any

Устаревший, но всё ещё рабочий вариант через netsh — пригодится в обычной командной строке:

netsh advfirewall firewall add rule name="DayZ BattlEye RCon (UDP 2305)" dir=in action=allow protocol=UDP localport=2305

Windows Server: проверить и изменить готовое правило

Выделите правило в списке и нажмите Свойства в панели «Действия» — или просто дважды кликните по нему. Вкладка «Общие» показывает имя, описание, состояние и действие.

Свойства правила, вкладка «Общие»Галочка «Включено» — то же самое, что зелёная отметка в списке.

Вкладка «Протоколы и порты» — здесь проверяют, что протокол и номер порта именно те, которые нужны. Если при создании ошиблись, пересоздавать правило не нужно: поправьте значение здесь и нажмите «ОК».

Свойства правила, вкладка «Протоколы и порты»: тип протокола UDP, локальный порт 2305Именно этот скриншот стоит приложить к тикету, если просите поддержку посмотреть, что не так.

Те же проверки из PowerShell:

Get-NetFirewallRule -DisplayName "DayZ BattlEye RCon (UDP 2305)" | Format-List DisplayName, Enabled, Direction, Action, Profile

Get-NetFirewallRule -DisplayName "DayZ BattlEye RCon (UDP 2305)" | Get-NetFirewallPortFilter

Временно выключить правило, не удаляя его, или удалить совсем:

Disable-NetFirewallRule -DisplayName "DayZ BattlEye RCon (UDP 2305)"
Remove-NetFirewallRule -DisplayName "DayZ BattlEye RCon (UDP 2305)"

Linux: ufw и firewalld

На облачных VPS и Linux-серверах то же самое делается парой команд. Сначала выясните, какой брандмауэр работает: на Ubuntu и Debian это обычно ufw, на AlmaLinux, Rocky и CentOS — firewalld.

sudo ufw status            # ufw: inactive / active + список правил
sudo firewall-cmd --state  # firewalld: running / not running

ufw — Ubuntu, Debian

sudo ufw allow 2305/udp
sudo ufw status numbered

Правило применяется сразу, перезагружать ufw не требуется. Диапазон и ограничение по адресу:

sudo ufw allow 2302:2305/udp
sudo ufw allow from 203.0.113.10 to any port 8080 proto tcp

firewalld — AlmaLinux, Rocky, CentOS

sudo firewall-cmd --permanent --add-port=2305/udp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

Ограничение по адресу — через rich rule:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="8080" protocol="tcp" accept'
sudo firewall-cmd --reload
Про --permanentКлюч означает «сохранить в конфигурации», но правило при этом не применяется к работающему брандмауэру — для этого и нужен --reload. Забудете --permanent — правило будет работать до первой перезагрузки и молча исчезнет. Правила, написанные напрямую через iptables или nft, точно так же не переживут перезагрузку без отдельного механизма сохранения.

Проверяем, что порт действительно доступен

Проверять нужно в два приёма — изнутри и снаружи.

Изнутри: слушает ли приложение порт

Если служба не запущена, никакое правило не поможет — снаружи такой порт выглядит закрытым.

Get-NetUDPEndpoint -LocalPort 2305
Get-NetTCPConnection -LocalPort 443 -State Listen

На Linux:

sudo ss -lunp | grep 2305
sudo ss -ltnp | grep 443

Снаружи: доходит ли трафик

Для TCP годится обычная проверка с другого компьютера:

Test-NetConnection -ComputerName 203.0.113.10 -Port 443

С UDP так не получится. UDP не устанавливает соединение, поэтому «пингануть» порт нельзя: закрытый и открытый выглядят снаружи одинаково, а онлайн-сканеры почти всегда дают для UDP ложный результат. Надёжная проверка одна — подключиться клиентом того самого протокола. Для BattlEye RCon это утилита BE RCon с сайта battleye.com: вводите IP, порт и пароль — либо подключилось, либо нет.

Только с другой машиныПроверять доступность порта с самого сервера бессмысленно: локальный трафик до правила не доходит, и всё будет отвечать даже при наглухо закрытом брандмауэре.

Практика: CFTools Cloud и сервер DayZ

Теперь разберём случай, из которого выросла эта статья. Клиент подключал CFTools Cloud к своему серверу DayZ: сервис сервер видел, но соединиться не мог и просил «открыть порт».

CFTools Cloud управляет сервером через BattlEye RCon — протокол удалённого управления поверх UDP. Чтобы панель работала, RCon-интерфейс должен быть настроен в конфиге сервера и доступен из интернета. Дальше — обе половины по порядку.

Какие порты нужны серверу DayZ

  • 2302/UDP — игровой порт (задаётся параметром запуска -port). Через него подключаются игроки.
  • 2303/UDP — порт Steam-запросов (steamQueryPort в serverDZ.cfg). Через него сервер отдаёт информацию в браузер серверов; по нему же его индексируют внешние сервисы, включая CFTools.
  • 2304/UDP — служебный порт Steam (steamPort), DayZ занимает его для внутренних нужд.
  • 2305/UDP — BattlEye RCon. Именно его чаще всего забывают открыть.

Почему RCon именно на игровом порту + 3: «+1» уже занят Steam-запросами, а «+2» и «+4» (то есть 2304 и 2306) DayZ резервирует под себя. Свободным рядом остаётся только «+3» — это и есть официальная рекомендация CFTools.

Если на одной машине работает несколько серверов, каждому нужен свой непересекающийся блок из четырёх портов: второй сервер обычно ставят на 2402–2405, третий на 2502–2505 и так далее. Шаг может быть любым, важно лишь, чтобы блоки не накладывались.

На практике проще создать одно правило на весь блок:

New-NetFirewallRule -DisplayName "DayZ server (UDP 2302-2305)" -Direction Inbound -Protocol UDP -LocalPort 2302-2305 -Action Allow -Profile Any

Настройка RCon на стороне сервера

Открытого порта мало — BattlEye должен быть настроен. Конфиг называется BEServer_x64.cfg и лежит рядом с библиотекой BattlEye (BEServer_x64.dll на Windows, BEServer_x64.so на Linux), обычно в папке profiles/BattlEye. Папка может называться config, SC или иначе — это зависит от параметров запуска -profiles и -BEpath. У файла может быть суффикс вида _active_<код>; это нормально, редактировать нужно основной.

RConPassword MySecretPass123
RConPort 2305
RestrictRCon 0

Что здесь важно:

  • Имена параметров чувствительны к регистру: RConPort — правильно, rconport — нет.
  • Пароль — только латинские буквы и цифры, без пробелов и спецсимволов. Предельная длина в документации BattlEye и CFTools указана по-разному (32 и 24 символа), поэтому безопаснее держаться в пределах 24 символов.
  • Без явного RConPort BattlEye слушает случайный порт — открывать в брандмауэре будет попросту нечего.
  • RestrictRCon 0 нужен, чтобы через панель работали кик, бан и остановка сервера. Если параметра нет, действует значение 1 и эти действия блокируются.
  • Если сервер привязан к конкретному сетевому интерфейсу, дополнительно указывают RConIP с тем же адресом.

После правки конфига сервер нужно перезапустить: BattlEye читает настройки только при старте.

Порядок диагностики, если панель всё равно не подключается

  1. Убедитесь, что редактировали правильный файл: в той же папке должна лежать библиотека BEServer_x64.dll или BEServer_x64.so. Нет её — папка не та.
  2. Включите логи сервера (параметр запуска -dologs и logFile в serverDZ.cfg) и найдите в server_console.log строки, начинающиеся с BattlEye: там видно, какую конфигурацию RCon сервер прочитал на самом деле.
  3. Проверьте, что порт слушается: Get-NetUDPEndpoint -LocalPort 2305.
  4. Подключитесь утилитой BE RCon с домашнего компьютера. Подключилось — дело в панели или её настройках; ошибка соединения — трафик не доходит, разбираемся с правилом и сетью.
Если RCon рвётсяBattlEye RCon шлёт много мелких UDP-пакетов — CFTools ориентируется на величину порядка 300 пакетов в секунду. Там, где перед сервером стоит фильтрация трафика или защита от DDoS, такой поток можно принять за атаку и подрезать. Правило при этом выглядит корректным, а RCon отваливается. Подозреваете этот сценарий — напишите нам, посмотрим фильтры со своей стороны.

Если не работает

Ошибки в самом правиле

  • Перепутан протокол. Правило для TCP, а служба слушает UDP. Самая частая причина «правило есть, а не работает».
  • Правило создано в «Правилах для исходящего подключения». Для входящих подключений нужен раздел входящих правил.
  • Указан удалённый порт вместо локального. Локальный — это порт на вашем сервере.
  • Отмечен один профиль из трёх. Сменился профиль сети — правило перестало действовать.
  • Правило есть, но выключено. Посмотрите колонку «Включено» в списке.

Правило верное, а снаружи тишина

  • Служба не запущена или слушает не тот порт. Проверьте Get-NetUDPEndpoint / ss -lunp.
  • Порт занят другим процессом. Две службы на одном порту не уживаются.
  • Проверка идёт с самого сервера. Так брандмауэр не проверяется вообще.
  • Второй брандмауэр — антивирус со своим сетевым экраном или защитное ПО панели управления.
  • Фильтрация трафика или защита от DDoS перед сервером режет нетипичный поток пакетов.

Брандмауэр операционной системы — не единственный рубеж на пути пакета, поэтому две последние причины проверяются последними, но встречаются регулярно.

Безопасность: открывайте ровно столько, сколько нужно

Каждое разрешающее правило — это дверь, которую видит весь интернет. Автоматические сканеры находят открытые порты за минуты, поэтому подход «открою побольше, на всякий случай» дорого обходится.

  • Открывайте конкретные порты, а не диапазоны «с запасом». Нужен один порт — откройте один.
  • Ограничивайте источник. Всё, что не должно быть публичным — панели управления, базы данных, служебные API, — открывайте только для нужных адресов. В свойствах правила это вкладка «Область»: переключите «Удаленный IP-адрес» на «Указанные IP-адреса» и добавьте свои.

Свойства правила, вкладка «Область»: ограничение по локальному и удалённому IP-адресуВкладка «Область»: верхний блок — адреса на стороне сервера, нижний — с каких адресов разрешено подключаться.

  • Не выставляйте RDP и SSH в открытый интернет без ограничений. Порты 3389 и 22 перебирают круглосуточно. Ограничьте область по IP, а лучше заведите VPN.
  • Не отключайте брандмауэр целиком. «Выключил — заработало» — это не решение задачи, а снятие всей защиты сервера разом. Правильный ответ — одно точное правило.
  • Удаляйте правила, которые больше не нужны. Закрыли проект, сняли мод, перенесли сервис — уберите и правило.
  • Давайте правилам понятные имена. Список из «Правило 1…12» невозможно поддерживать, и в итоге никто не рискует ничего удалять.

Не получилось — напишите нам

На выделенных серверах и облачных VPS NTH HOSTING вы управляете брандмауэром сами и можете создать любое правило. Если правило создано, служба слушает порт, а снаружи по-прежнему тишина — откройте тикет. Чтобы мы разобрались с первого сообщения, приложите:

  • IP-адрес сервера, номер порта и протокол;
  • скриншот правила — вкладка «Протоколы и порты»;
  • что именно вы подключаете и какую ошибку показывает сервис;
  • результат проверки, что служба слушает порт.

Не уверены, что делать, — не экспериментируйте на боевом сервере. Опишите задачу в тикете: мы либо подскажем точные шаги, либо настроим сами.

Эта статья была полезна? Остались вопросы? Поддержка →
×