Документация / Сеть и подключение

Сеть, порты и NAT

TCP/UDP, брандмауэр Windows, маршрутизатор, публичный адрес и проверки снаружи.

Какие соединения нужны

Соединение Направление Назначение
Игровой 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 и вход из независимой сети. После изменения порта или адреса синхронизируйте портал, мастер и публикацию.

Введите название, параметр или текст ошибки.

Esc — закрыть · Tab — выбрать результат