Проблема: игровой сервер за NAT

У вас мощная машина дома, игровой сервер установлен и настроен, друзья хотят подключиться. Но есть одна проблема: ваша машина за NAT. Провайдер выдаёт серый IP через CGNAT, роутер не позволяет пробрасывать порты, или вы просто не хотите открывать порты в домашней сети. Игроки не могут достучаться до вашего сервера, потому что сеть блокирует входящие соединения.

Это фундаментальная проблема самостоятельного хостинга игровых серверов: сервер должен принимать входящие UDP-соединения от игроков, но NAT и файрвол блокируют любой входящий трафик. Традиционные решения — проброс портов, статический IP, VPN — либо невозможны, либо дороги, либо требуют от каждого игрока установки софта. Туннель решает это одной командой.

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

Игрок A ──UDP──▶ ╳  ┌─────────────────────┐
                     │  NAT / Роутер       │
Игрок B ──UDP──▶ ╳  │  (нет проброса)     │
                     │  CGNAT / динамич. IP│
Игрок C ──UDP──▶ ╳  └──────────┬──────────┘
                                │
                         ┌──────▼──────┐
                         │ Игровой     │
                         │ сервер      │
                         │ 192.168.1.10│
                         │ :25565      │
                         └─────────────┘

Почему традиционные решения не работают для игровых серверов

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

Проброс портов на роутере требует доступа к настройкам роутера и публичного IP (не CGNAT). Многие домашние провайдеры используют CGNAT, где десятки клиентов делят один публичный IP. Проброс портов попросту невозможен. Даже если у вас есть публичный IP, постоянно открытый UDP-порт делает вашу домашнюю сеть уязвимой. Риски подробнее разобраны в статье «Как открыть localhost из интернета».

Статический IP от провайдера стоит денег (часто $5–15/месяц), привязывает к конкретному провайдеру и всё равно требует настройки файрвола. Проблему CGNAT он не решает — некоторые провайдеры вообще не предлагают статический IP для домашних тарифов.

VPN-сети (Tailscale, ZeroTier) создают зашифрованную сеть между машинами, но требуют от каждого игрока установки VPN-клиента, регистрации аккаунта и подключения к вашей сети. Для простой игровой сессии с друзьями просить всех ставить VPN — это слишком.

UDP-туннель — это одна команда на серверной машине. Игроки подключаются к публичному адресу без установки чего-либо. Без настроек роутера, без статического IP, без VPN-аккаунтов.

Как UDP-туннель работает для игровых серверов

UDP-туннель создаёт публичный адрес, на который пересылаются все входящие UDP-датаграммы к вашему локальному игровому серверу. Клиент fxTunnel на вашей машине устанавливает исходящее TLS-соединение с сервером fxTunnel и регистрирует UDP-туннель на конкретный локальный порт. Сервер выделяет публичный UDP-порт и начинает принимать подключения игроков.

Механика протокола подробнее разобрана в статье «Как работает TCP и UDP туннелирование».

Решение: UDP-туннель делает сервер доступным

Игрок A ──UDP──▶ ┌──────────────────────────┐
                 │  fxTunnel Server          │
Игрок B ──UDP──▶ │  tunnel.fxtun.dev:52001   │
                 │                           │
Игрок C ──UDP──▶ │  ┌──────────────────────┐ │
                 │  │ Виртуальные сессии    │ │
                 │  │ Игрок A → Sess #1     │ │
                 │  │ Игрок B → Sess #2     │ │
                 │  │ Игрок C → Sess #3     │ │
                 │  └──────────┬───────────┘ │
                 └─────────────┼─────────────┘
                               │ TLS-соединение
                               │ (исходящее с вашей машины)
                 ┌─────────────┼─────────────┐
                 │  NAT / Роутер             │
                 └─────────────┼─────────────┘
                               │
                 ┌─────────────▼─────────────┐
                 │  Ваша машина               │
                 │  fxTunnel Client           │
                 │                            │
                 │  ┌──────────────────────┐  │
                 │  │ Декапсуляция         │  │
                 │  │ Sess #1 → UDP :25565 │  │
                 │  │ Sess #2 → UDP :25565 │  │
                 │  │ Sess #3 → UDP :25565 │  │
                 │  └──────────────────────┘  │
                 │            │               │
                 │     ┌──────▼──────┐        │
                 │     │ Игровой     │        │
                 │     │ сервер      │        │
                 │     │ :25565      │        │
                 │     └─────────────┘        │
                 └────────────────────────────┘

UDP-датаграммы каждого игрока поступают на сервер fxTunnel, который группирует их по адресу:порту отправителя в виртуальные сессии. Датаграммы инкапсулируются во фреймы и пересылаются через TLS-соединение на вашу машину. Клиент fxTunnel декапсулирует фреймы и отправляет «сырые» UDP-датаграммы на локальный порт игрового сервера. Ответные датаграммы идут обратным путём.

Ключевой момент: игрокам ничего не нужно устанавливать. Они подключаются к tunnel.fxtun.dev:52001 как к обычному игровому серверу. Туннель полностью прозрачен.

Почему fxTunnel — единственный вариант для UDP-игровых серверов

Большинство инструментов туннелирования вообще не поддерживают UDP. Это критическое ограничение для игровых серверов, потому что подавляющее большинство мультиплеерных игр используют UDP для обмена данными в реальном времени.

ИнструментHTTPTCPUDPНужна установка у игроков?
fxTunnelДаДаДаНет
ngrokДаДаНет
Cloudflare Tunnel (free)ДаНетНет
TailscaleДа (VPN)Да (VPN)Да (VPN-клиент)
ZeroTierДа (VPN)Да (VPN)Да (VPN-клиент)
boreНетДаНет

fxTunnel – единственный инструмент туннелирования с нативной поддержкой UDP, где игроки подключаются напрямую без установки какого-либо ПО. Подробнее об этом – в сравнении ngrok vs Cloudflare Tunnel vs fxTunnel.

Быстрый старт: одна команда для хостинга игрового сервера

Установка

# Установка fxTunnel (Linux/macOS/Windows)
curl -fsSL https://fxtun.dev/install.sh | bash

# Проверка
fxtunnel --version

Создание UDP-туннеля

# Пробрасываем UDP-порт игрового сервера в интернет
fxtunnel udp 25565

fxTunnel выведет публичный адрес:

fxTunnel v1.x — tunnel is active
Protocol:    UDP
Public addr: tunnel.fxtun.dev:52001
Forwarding:  tunnel.fxtun.dev:52001 → localhost:25565

Press Ctrl+C to stop

Скажите игрокам подключиться к tunnel.fxtun.dev:52001. Готово.

Настройка для конкретных игр

Minecraft Bedrock Edition (UDP)

Minecraft Bedrock Edition использует UDP на порте 19132 по умолчанию. Это версия для консолей, мобильных устройств и Windows 10/11.

1. Настройка сервера — редактируем server.properties:

# server.properties (Minecraft Bedrock)
server-name=My Tunneled Server
server-port=19132
server-portv6=19133
max-players=10
view-distance=16
tick-distance=4
online-mode=true

2. Запуск игрового сервера:

# Запускаем Bedrock Dedicated Server
./bedrock_server

3. Создание туннеля:

# Пробрасываем UDP-порт Bedrock
fxtunnel udp 19132
# → tunnel.fxtun.dev:52001

4. Игроки подключаются, добавляя сервер в Minecraft:

  • Адрес: tunnel.fxtun.dev
  • Порт: 52001

Примечание: Minecraft Java Edition использует TCP, а не UDP. Для Java Edition используйте fxtunnel tcp 25565.

Valheim (UDP)

Valheim использует UDP на портах 2456–2458. Порт 2456 — игровой, 2457 — порт запросов, 2458 — зарезервирован.

1. Настройка сервера — скрипт запуска:

#!/bin/bash
# start_valheim.sh
./valheim_server.x86_64 \
  -name "My Valheim Server" \
  -port 2456 \
  -world "MyWorld" \
  -password "secretpassword" \
  -public 0

Установите -public 0, чтобы сервер не регистрировался в публичном списке серверов (адрес туннеля не совпадёт с ожидаемым).

2. Создание туннеля:

# Пробрасываем игровой порт Valheim (UDP)
fxtunnel udp 2456
# → tunnel.fxtun.dev:52001

# Пробрасываем порт запросов отдельно (если нужен для браузера серверов)
fxtunnel udp 2457
# → tunnel.fxtun.dev:52002

3. Игроки подключаются, вводя адрес в Steam:

  • Steam → Вид → Серверы → Избранное
  • Добавить сервер: tunnel.fxtun.dev:52001
  • Или подключиться напрямую в игре: tunnel.fxtun.dev:52001

Counter-Strike 2 (UDP)

CS2 использует UDP на порте 27015 по умолчанию.

1. Запуск сервера:

# Выделенный сервер CS2
./cs2 -dedicated \
  -port 27015 \
  +game_type 0 \
  +game_mode 1 \
  +map de_dust2 \
  +sv_setsteamaccount YOUR_GSLT_TOKEN

2. Создание туннеля:

# Пробрасываем UDP-порт CS2
fxtunnel udp 27015
# → tunnel.fxtun.dev:52001

3. Игроки подключаются через консоль:

connect tunnel.fxtun.dev:52001

Terraria (TCP)

Terraria использует TCP на порте 7777. Используйте TCP-туннель:

# Пробрасываем TCP-порт Terraria
fxtunnel tcp 7777
# → tunnel.fxtun.dev:41234

Игроки подключаются, вводя tunnel.fxtun.dev и порт 41234 в меню мультиплеера.

Factorio (UDP)

Factorio использует UDP на порте 34197 по умолчанию.

# Пробрасываем UDP-порт Factorio
fxtunnel udp 34197
# → tunnel.fxtun.dev:52001

Игроки подключаются, вводя tunnel.fxtun.dev:52001 в меню мультиплеера.

Справочник: порты игр

ИграПротоколПорт по умолчаниюКоманда fxTunnel
Minecraft BedrockUDP19132fxtunnel udp 19132
Minecraft JavaTCP25565fxtunnel tcp 25565
ValheimUDP2456fxtunnel udp 2456
Counter-Strike 2UDP27015fxtunnel udp 27015
TerrariaTCP7777fxtunnel tcp 7777
FactorioUDP34197fxtunnel udp 34197
ARK: Survival EvolvedUDP7777fxtunnel udp 7777
RustUDP28015fxtunnel udp 28015
PalworldUDP8211fxtunnel udp 8211
SatisfactoryUDP7777fxtunnel udp 7777

Задержки: что важно знать для игр

Сколько лага добавляет туннель? Пинг – самый важный фактор для онлайн-игр, особенно в соревновательных жанрах. Вот что стоит знать.

Что добавляет туннель

fxTunnel добавляет +1–5 мс overhead к базовой задержке сети между игроком и сервером туннеля. Это складывается из:

  • Инкапсуляция/декапсуляция — оборачивание UDP-датаграмм во фреймы добавляет небольшую задержку обработки.
  • Дополнительный сетевой узел — трафик идёт Игрок → Сервер fxTunnel → Ваша машина вместо Игрок → Ваша машина напрямую. Однако если ваша машина за CGNAT, прямое соединение всё равно невозможно.

Разбор задержки

Игрок ──[30мс]──▶ fxTunnel Server ──[2мс overhead]──▶ Ваша машина
                                                       (игровой сервер)

Общая задержка: 30мс базовая + 2мс туннель = 32мс
Без туннеля (если бы прямое было возможно): 30мс

Overhead туннеля: ~2мс (+6.7%)

Для большинства игр дополнительные 2–5 мс незаметны:

Тип игрыДопустимая задержкаВлияние туннеля
Выживание/песочница (Minecraft, Valheim, Factorio)< 150 мсНезначительное
Кооператив/RPG (Terraria, ARK)< 100 мсНезначительное
Соревновательные шутеры (CS2, Valorant)< 50 мсЗаметно, если пинг уже на грани

Как снизить задержку

  1. Выбирайте сервер туннеля ближе к игрокам. Если друзья в Европе — идеален европейский сервер туннеля. Расположение сервера туннеля важнее, чем overhead самого туннеля.
  2. Используйте проводное подключение на машине с игровым сервером. Wi-Fi добавляет 2–10 мс джиттера.
  3. Закройте ненужные туннели и приложения, потребляющие полосу пропускания, пока хостите игру.
  4. Мониторьте задержку с помощью инспектора трафика fxTunnel для выявления узких мест.

Запуск туннеля как фоновой службы

Для игрового сервера, который должен быть доступен 24/7 (или хотя бы когда машина включена), настройте автоматический запуск туннеля.

Служба systemd (Linux)

# /etc/systemd/system/fxtunnel-game.service
[Unit]
Description=fxTunnel - Game server UDP tunnel
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/fxtunnel udp 25565
Restart=always
RestartSec=5
User=gameserver
Environment=FXTUNNEL_TOKEN=your-auth-token-here

[Install]
WantedBy=multi-user.target
# Активация и запуск
sudo systemctl daemon-reload
sudo systemctl enable fxtunnel-game
sudo systemctl start fxtunnel-game

# Проверка статуса
sudo systemctl status fxtunnel-game

Работа совместно с Docker

Если игровой сервер запущен в Docker, вы можете создать туннель с хоста:

# Запускаем игровой сервер в Docker
docker run -d -p 25565:25565/udp --name minecraft-bedrock itzg/minecraft-bedrock-server

# Создаём туннель на проброшенный порт
fxtunnel udp 25565

Этот сценарий подробнее описан в статье «Docker + Tunnel: доступ к контейнерам из интернета».

Советы по производительности

Скорость загрузки (Upload)

Главное узкое место домашнего хостинга игровых серверов — скорость загрузки (upload). Каждый подключённый игрок потребляет upload-полосу вашего соединения. Типичная мультиплеерная игра использует 30–100 КБ/с на игрока.

ИгроковПримерный upload
4 игрока0.5–1 Мбит/с
10 игроков1–3 Мбит/с
20 игроков3–6 Мбит/с

Проверьте скорость загрузки через speedtest-cli или любой онлайн-тест. Если upload ниже 5 Мбит/с, ограничьте количество игроков соответственно.

Ресурсы сервера

Сам туннель потребляет минимум CPU и памяти. Узкое место — игровой сервер. Общие рекомендации:

  • CPU: 2+ ядра для большинства игровых серверов. Minecraft и Factorio особенно требовательны к CPU.
  • RAM: минимум 4 ГБ для Minecraft, 2 ГБ для Valheim, 1 ГБ для Terraria.
  • Хранилище: используйте SSD для файлов игрового мира. Скорость дискового I/O влияет на tick rate.

Несколько игровых серверов

Если вы хостите несколько игровых серверов, создайте отдельный туннель для каждого:

# Minecraft Bedrock на порте 19132
fxtunnel udp 19132 &

# Valheim на порте 2456
fxtunnel udp 2456 &

# Factorio на порте 34197
fxtunnel udp 34197 &

Каждый туннель получает свой публичный адрес. На бесплатном тарифе можно запускать несколько туннелей одновременно. Пользовательские домены, инспектор трафика и повтор запросов доступны от $5/месяц, а выделенная поддержка с 10+ туннелями – от $10/месяц.

Безопасность

Игровые серверы — частая цель DDoS-атак и несанкционированного доступа. Туннель добавляет уровень защиты, потому что ваш реальный IP никогда не раскрывается игрокам.

Ваш IP остаётся скрытым

Игроки подключаются к tunnel.fxtun.dev, а не к вашему домашнему IP. Даже если кто-то решит запустить DDoS-атаку, она придётся на сервер туннеля, а не на вашу домашнюю сеть. Сервер fxTunnel рассчитан на такие нагрузки.

Аутентификация игрового сервера

Всегда включайте аутентификацию на игровом сервере:

  • Minecraft: установите online-mode=true в server.properties для аутентификации через Mojang.
  • Valheim: используйте флаг -password для требования пароля.
  • CS2: используйте Game Server Login Token (GSLT) для аутентификации через Steam.

Файрвол на вашей машине

Даже с туннелем настройте файрвол, чтобы ограничить прямой доступ к порту игрового сервера. Только клиент fxTunnel должен иметь к нему доступ:

# Разрешаем только localhost доступ к игровому порту
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw enable

Игровой сервер слушает на localhost, а клиент fxTunnel подключается к нему локально. Внешний трафик не попадает на порт напрямую.

FAQ

Можно ли захостить игровой сервер за NAT без проброса портов?

Конечно. fxTunnel создаёт UDP-туннель, который даёт вашему локальному серверу публичный адрес. Друзья подключаются к этому адресу, трафик идёт через туннель на вашу машину. Никаких настроек роутера, статических IP или обходных путей для CGNAT.

Какую задержку добавляет UDP-туннель для игрового сервера?

Ожидайте дополнительные 1-5 мс поверх базового пинга. Для песочниц и выживалок вроде Minecraft, Valheim, Terraria это не ощущается вообще. В соревновательных шутерах типа CS2 станет заметно только если пинг и так на грани. Выбор сервера туннеля поближе к игрокам важнее самого оверхеда.

Какие игры работают через UDP-туннель?

Любая игра с UDP-серверным протоколом: Minecraft Bedrock, Valheim, CS2, Terraria, Factorio, ARK, Rust и многие другие. Для игр на TCP (например, Minecraft Java Edition) используйте fxtunnel tcp.

Другие инструменты туннелирования поддерживают UDP для игровых серверов?

По сути нет. ngrok работает только с TCP и HTTP. Бесплатный тариф Cloudflare Tunnel ограничен HTTP. Tailscale и ZeroTier используют VPN-сети, которые требуют от каждого игрока установки клиента. fxTunnel на данный момент – единственный инструмент с нативной поддержкой UDP, где игрокам ничего не нужно устанавливать.

Сколько игроков могут подключиться через UDP-туннель?

Со стороны туннеля ограничений нет. Узкое место – железо вашего сервера и скорость upload. Домашнее подключение с upload от 10 Мбит/с спокойно тянет 10-20 игроков в большинстве игр.