Порты Valheim и NAT: почему домашний сервер недоступен извне
Сначала проверьте, запущен ли выделенный сервер с -crossplay. Без этого параметра игрок подключается напрямую через Steam, а с ним используется промежуточный relay. Проброс портов для прямого режима не заменяет настройку подключения через Crossplay.
Игровой порт и Steam Query — разные вещи
| Назначение | Порт | Протокол |
|---|---|---|
| Игровое подключение | 2456 или -port | UDP |
| Steam Query, включая A2S | 2457 или -port + 1 | UDP |
| Внутренний Steamworks API | Случайный высокий порт на 127.0.0.1 | TCP; не пробрасывать в интернет. |
Ответ A2S подтверждает работу запроса информации о сервере, а не игрового входа. При другом значении -port Query-порт сдвигается вместе с ним: прибавьте один. Проверка только TCP также не подтверждает доступность игрового UDP.
Проверка прямого подключения
- Проверьте фактический -port и отсутствие -crossplay, прежде чем разбирать прямой вход.
- Дождитесь загрузки мира. В журнале сервера проверьте строки Zonesystem Start и DungeonDB Start: состояние Start означает готовность этих подсистем.
- Сверьте версии игры и выделенного сервера: несовпадение мешает входу.
- Проверьте подключение по LAN-адресу из своей сети, затем по внешнему IPv4 и игровому порту из другой сети.
- Если LAN работает, а внешний вход нет, проверьте входящие UDP-правила компьютера и NAT-проброс игрового и Query-порта на LAN-адрес сервера.
Valheim Dedicated Server не выполняет автоматический проброс через UPnP или NAT-PMP. В прямом режиме правила NAT остаются задачей владельца сети. Не открывайте случайный внутренний TCP-порт Steamworks и не отключайте защиту сети целиком ради проверки.
Как распознать ограничение выше роутера
Сравните WAN IPv4 в интерфейсе роутера с внешним IPv4, видимым в интернете. Несовпадение — признак дополнительного NAT, но само по себе не доказывает конкретную схему. Уточните у провайдера наличие CGNAT и возможность получить отдельный публичный IPv4.
При CGNAT домашний проброс не создаёт входящее правило на оборудовании провайдера. Для прямого доступа может понадобиться публичный IPv4 или другое размещение сервера. Стоимость и доступность адреса зависят от провайдера; универсальной цены нет.
Что проверять в Crossplay
Crossplay связывает сервер и игроков через relay. Для входа используют Join Code либо внешний IPv4 и игровой порт как идентификатор relay. Loopback или LAN-адрес не заменяют этот путь: в описанном режиме сервер не принимает входящие игровые пакеты напрямую от игроков.
Relay помогает работать за NAT, но добавляет сетевой переход. Задержки и разрывы после успешного входа не доказывают закрытый входящий порт. Источник также описывает конфликт регистрации за CGNAT, когда серверы на одном внешнем IPv4 выбирают одинаковый игровой порт; в таком случае можно изменить -port.
Порядок действий по результату
| Что наблюдается | Что проверить дальше |
|---|---|
| LAN-вход работает, прямой внешний вход нет | UDP firewall, NAT-проброс, наличие CGNAT. |
| A2S отвечает, игрок не входит | Игровой порт отдельно, пароль и версии. |
| Crossplay не принимает LAN-адрес | Join Code или внешний идентификатор relay. |
| Игрок входит, затем замечает задержки | Соединение и режим relay; не считать это доказательством закрытого входящего порта. |
Гайд был полезен?