Проблема: игровой сервер за 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 для обмена данными в реальном времени.
| Инструмент | HTTP | TCP | UDP | Нужна установка у игроков? |
|---|---|---|---|---|
| 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 Bedrock | UDP | 19132 | fxtunnel udp 19132 |
| Minecraft Java | TCP | 25565 | fxtunnel tcp 25565 |
| Valheim | UDP | 2456 | fxtunnel udp 2456 |
| Counter-Strike 2 | UDP | 27015 | fxtunnel udp 27015 |
| Terraria | TCP | 7777 | fxtunnel tcp 7777 |
| Factorio | UDP | 34197 | fxtunnel udp 34197 |
| ARK: Survival Evolved | UDP | 7777 | fxtunnel udp 7777 |
| Rust | UDP | 28015 | fxtunnel udp 28015 |
| Palworld | UDP | 8211 | fxtunnel udp 8211 |
| Satisfactory | UDP | 7777 | fxtunnel 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 мс | Заметно, если пинг уже на грани |
Как снизить задержку
- Выбирайте сервер туннеля ближе к игрокам. Если друзья в Европе — идеален европейский сервер туннеля. Расположение сервера туннеля важнее, чем overhead самого туннеля.
- Используйте проводное подключение на машине с игровым сервером. Wi-Fi добавляет 2–10 мс джиттера.
- Закройте ненужные туннели и приложения, потребляющие полосу пропускания, пока хостите игру.
- Мониторьте задержку с помощью инспектора трафика 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 игроков в большинстве игр.