Какие соединения нужны
| Соединение | Направление | Назначение |
|---|---|---|
| Игровой TCP, обычно 30120 | Входящий на игровой узел | HTTP-сведения, согласование подключения, ресурсы |
| Игровой UDP, обычно 30120 | Входящий на игровой узел | Игровой сетевой обмен |
| HTTPS 443 | Исходящий с узла и клиента | Портал, публикация, доступ и шлюз OpenM |
| txAdmin TCP, обычно 40120 | Только loopback | Локальная панель и мастер |
| SQL-порт | Локально или в защищённой внутренней сети | База выбранного игрового режима |
Конкретные ресурсы, например голосовой модуль, могут иметь дополнительные сетевые требования. Проверяйте их отдельно. Не открывайте все порты «на всякий случай».
Локальная привязка
В мастере выберите «Локальная сеть / интернет». В управляемом конфиге появится 0.0.0.0:ИГРОВОЙ-ПОРТ для TCP и UDP. 0.0.0.0 не является адресом подключения для другого игрока и не должен попадать в карточку портала.
Проверьте прослушивание в PowerShell:
Get-NetTCPConnection -State Listen -LocalPort 30120 | Select-Object LocalAddress, LocalPort, OwningProcess
Get-NetUDPEndpoint -LocalPort 30120 | Select-Object LocalAddress, LocalPort, OwningProcess
Сверьте PID с процессом своего сервера. При занятом порте не завершайте процесс по одному имени EXE: на машине могут быть другие серверы. Сначала определите путь и назначение процесса.
Брандмауэр Windows
Следующий пример создаёт два входящих правила для стандартного игрового порта. Выполняется в PowerShell с повышенными правами после выбора вашего порта:
New-NetFirewallRule -DisplayName 'OpenM Game TCP 30120' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 30120 -Profile Any
New-NetFirewallRule -DisplayName 'OpenM Game UDP 30120' -Direction Inbound -Action Allow -Protocol UDP -LocalPort 30120 -Profile Any
Не выполняйте команды повторно без проверки: это может создать дублирующие правила. Посмотреть созданные правила:
Get-NetFirewallRule -DisplayName 'OpenM Game TCP 30120','OpenM Game UDP 30120' |
Select-Object DisplayName, Enabled, Direction, Action
Для отмены временного доступа отключите именно эти правила, не весь брандмауэр:
Disable-NetFirewallRule -DisplayName 'OpenM Game TCP 30120','OpenM Game UDP 30120'
В корпоративной среде эффективная политика может задаваться централизованно. Справка по параметрам: Microsoft New-NetFirewallRule.
Маршрутизатор и внешний адрес
Если игровой компьютер находится за NAT, закрепите его LAN-адрес и настройте перенаправление выбранного внешнего порта по обоим протоколам на фактический игровой порт компьютера. Пример логики:
Публичный адрес: внешний TCP 30120 → игровой компьютер: TCP 30120
Публичный адрес: внешний UDP 30120 → игровой компьютер: UDP 30120
Названия полей зависят от маршрутизатора. Не перенаправляйте игровой порт на виртуалку сайта только потому, что сайт находится там же: получателем должен быть реальный игровой процесс. Исключение возможно лишь при сознательно настроенном промежуточном сетевом реле, которое не является частью обычного мастера.
Если внешний порт отличается от локального, в портале и publisher.json указывайте внешний порт, а в мастере — локальный. Например, внешний 30130 может перенаправляться на внутренний 30120. Адрес из публикации должен соответствовать именно доступному клиентам endpoint.
CGNAT и двойной NAT
Сравните WAN-адрес маршрутизатора с адресом, который виден извне. Частные диапазоны и 100.64.0.0/10 на WAN часто означают, что перед вами есть ещё один NAT. В этой ситуации локальное правило маршрутизатора может быть недостаточно.
Решение зависит от сети: публичный адрес у провайдера, настройка вышестоящего маршрутизатора либо размещение игрового узла там, где входящие подключения доступны. Ключи OpenM и HTTPS-шлюз не заменяют эту настройку. Не рекламируйте сервер как доступный извне, пока это не проверено отдельным клиентом.
DNS
Можно использовать публичное DNS-имя с A-записью на IPv4 игрового узла. Добавляйте AAAA только при работающем IPv6-пути. Удалите устаревшие записи, которые ведут на другой сервер. Шлюз проверяет все полученные адреса; смешанный ответ с приватным адресом может быть отклонён.
DNS-имя для игрового endpoint не должно вести на обычный HTTP-прокси, который не поддерживает выбранный TCP/UDP-порт. Настройка веб-сайта через CDN-прокси не означает, что через него автоматически пойдёт игровая сеть.
Проверка извне
С другого подключения выполните:
Test-NetConnection play.example.org -Port 30120
Invoke-RestMethod 'http://play.example.org:30120/info.json'
TcpTestSucceeded=True относится к TCP; эта команда не подтверждает UDP-доступность. См. Microsoft Test-NetConnection. Успешный HTTP-ответ также не доказывает, что UDP настроен правильно. Проверка игрового UDP — реальный вход внешнего игрока и наблюдение за сессией.
При проверке из своей LAN может работать NAT loopback, а может не работать. Поэтому сочетайте локальную проверку, внешний HTTP и вход из независимой сети. После изменения порта или адреса синхронизируйте портал, мастер и публикацию.