Правила для портов: как открыть порт на сервере и не открыть лишнего
Почти любое обращение вида «сервис не видит мой сервер», «друг не может подключиться», «панель пишет, что соединение не удалось» упирается в одно и то же: нужный порт закрыт брандмауэром. Разберём, что такое порт и правило брандмауэра, какие бывают правила, как создать правило на Windows Server и на Linux, как убедиться, что всё заработало, и как при этом не открыть лишнего. В конце — практический разбор реального обращения в поддержку: подключение CFTools Cloud к серверу DayZ.
КороткоПорт открывается входящим разрешающим правилом: направление, протокол, номер порта, действие.Windows Server:Win + R → wf.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 в режиме повышенной безопасности». В левой панели выберите Правила для входящих подключений — справа, в панели «Действия», появится пункт Создать правило…
Слева — разделы, посередине — список действующих правил, справа — действия. «Создать правило…» всегда первым пунктом.
Тот же раздел открывается через «Панель управления» → «Брандмауэр Защитника Windows» → «Дополнительные параметры».
2Тип правила — «Для порта»
Выберите Для порта и нажмите «Далее». Обратите внимание: список шагов слева сразу изменится — вместо «Программа» появится «Протокол и порты».
По умолчанию мастер предлагает «Для программы» — переключите на «Для порта».
3Протокол и номер порта
Выберите протокол — TCP или UDP. Затем отметьте Определенные локальные порты и впишите номер. В нашем примере это UDP и порт 2305.
В это поле можно вписать несколько портов через запятую (80, 443) или диапазон через дефис (2302-2305). Диапазон удобен для игрового сервера, где подряд идут игровой порт, порт Steam-запросов и RCon.
Поле «Определенные локальные порты» принимает и одиночные номера, и списки, и диапазоны.
4Действие
Оставьте Разрешить подключение. Вариант «Разрешить только безопасное подключение» требует настроенного IPsec и в обычной ситуации не нужен.
Нужный вариант выбран по умолчанию — просто идём дальше.
5Профили
Оставьте все три галочки — доменный, частный, публичный. На выделенном сервере сеть обычно определяется как публичная, но профиль может смениться после переподключения сетевого адаптера, и тогда правило с одной галочкой внезапно перестанет действовать.
Снимать галочки имеет смысл только тогда, когда вы точно знаете, зачем это делаете.
6Имя и описание
Назовите правило так, чтобы через полгода вы поняли, зачем оно. Плохо: «Правило 1», «test», «порт». Хорошо: DayZ BattlEye RCon (UDP 2305). В описание впишите, для чего порт нужен и кто им пользуется — это сэкономит время и вам, и поддержке.
Описание необязательно, но именно оно спасает, когда правил становится больше десятка.
7Готово
Нажмите «Готово» — правило появится в списке и начнёт действовать сразу. Перезагрузка не нужна. Зелёная галочка слева означает, что правило включено.
Новое правило встаёт в начало списка, а в панели справа появляются действия именно для него.
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: проверить и изменить готовое правило
Выделите правило в списке и нажмите Свойства в панели «Действия» — или просто дважды кликните по нему. Вкладка «Общие» показывает имя, описание, состояние и действие.
Галочка «Включено» — то же самое, что зелёная отметка в списке.
Вкладка «Протоколы и порты» — здесь проверяют, что протокол и номер порта именно те, которые нужны. Если при создании ошиблись, пересоздавать правило не нужно: поправьте значение здесь и нажмите «ОК».
Именно этот скриншот стоит приложить к тикету, если просите поддержку посмотреть, что не так.
Те же проверки из 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 символов.
- Без явного
RConPortBattlEye слушает случайный порт — открывать в брандмауэре будет попросту нечего. RestrictRCon 0нужен, чтобы через панель работали кик, бан и остановка сервера. Если параметра нет, действует значение1и эти действия блокируются.- Если сервер привязан к конкретному сетевому интерфейсу, дополнительно указывают
RConIPс тем же адресом.
После правки конфига сервер нужно перезапустить: BattlEye читает настройки только при старте.
Порядок диагностики, если панель всё равно не подключается
- Убедитесь, что редактировали правильный файл: в той же папке должна лежать библиотека
BEServer_x64.dllилиBEServer_x64.so. Нет её — папка не та. - Включите логи сервера (параметр запуска
-dologsиlogFileвserverDZ.cfg) и найдите вserver_console.logстроки, начинающиеся сBattlEye: там видно, какую конфигурацию RCon сервер прочитал на самом деле. - Проверьте, что порт слушается:
Get-NetUDPEndpoint -LocalPort 2305. - Подключитесь утилитой BE RCon с домашнего компьютера. Подключилось — дело в панели или её настройках; ошибка соединения — трафик не доходит, разбираемся с правилом и сетью.
Если не работает
Ошибки в самом правиле
- Перепутан протокол. Правило для TCP, а служба слушает UDP. Самая частая причина «правило есть, а не работает».
- Правило создано в «Правилах для исходящего подключения». Для входящих подключений нужен раздел входящих правил.
- Указан удалённый порт вместо локального. Локальный — это порт на вашем сервере.
- Отмечен один профиль из трёх. Сменился профиль сети — правило перестало действовать.
- Правило есть, но выключено. Посмотрите колонку «Включено» в списке.
Правило верное, а снаружи тишина
- Служба не запущена или слушает не тот порт. Проверьте
Get-NetUDPEndpoint/ss -lunp. - Порт занят другим процессом. Две службы на одном порту не уживаются.
- Проверка идёт с самого сервера. Так брандмауэр не проверяется вообще.
- Второй брандмауэр — антивирус со своим сетевым экраном или защитное ПО панели управления.
- Фильтрация трафика или защита от DDoS перед сервером режет нетипичный поток пакетов.
Брандмауэр операционной системы — не единственный рубеж на пути пакета, поэтому две последние причины проверяются последними, но встречаются регулярно.
Безопасность: открывайте ровно столько, сколько нужно
Каждое разрешающее правило — это дверь, которую видит весь интернет. Автоматические сканеры находят открытые порты за минуты, поэтому подход «открою побольше, на всякий случай» дорого обходится.
- Открывайте конкретные порты, а не диапазоны «с запасом». Нужен один порт — откройте один.
- Ограничивайте источник. Всё, что не должно быть публичным — панели управления, базы данных, служебные API, — открывайте только для нужных адресов. В свойствах правила это вкладка «Область»: переключите «Удаленный IP-адрес» на «Указанные IP-адреса» и добавьте свои.
Вкладка «Область»: верхний блок — адреса на стороне сервера, нижний — с каких адресов разрешено подключаться.
- Не выставляйте RDP и SSH в открытый интернет без ограничений. Порты
3389и22перебирают круглосуточно. Ограничьте область по IP, а лучше заведите VPN. - Не отключайте брандмауэр целиком. «Выключил — заработало» — это не решение задачи, а снятие всей защиты сервера разом. Правильный ответ — одно точное правило.
- Удаляйте правила, которые больше не нужны. Закрыли проект, сняли мод, перенесли сервис — уберите и правило.
- Давайте правилам понятные имена. Список из «Правило 1…12» невозможно поддерживать, и в итоге никто не рискует ничего удалять.
Не получилось — напишите нам
На выделенных серверах и облачных VPS NTH HOSTING вы управляете брандмауэром сами и можете создать любое правило. Если правило создано, служба слушает порт, а снаружи по-прежнему тишина — откройте тикет. Чтобы мы разобрались с первого сообщения, приложите:
- IP-адрес сервера, номер порта и протокол;
- скриншот правила — вкладка «Протоколы и порты»;
- что именно вы подключаете и какую ошибку показывает сервис;
- результат проверки, что служба слушает порт.
Не уверены, что делать, — не экспериментируйте на боевом сервере. Опишите задачу в тикете: мы либо подскажем точные шаги, либо настроим сами.