UDP туннели
Описание
Общее описание функционала
UDP-туннелирование пересылает датаграммы между локальным UDP-сервисом и клиентами в интернете через инфраструктуру туннеля. Подходит для DNS, syslog, игровых протоколов и других сценариев, где важна низкая задержка и модель «без установления соединения», с пониманием, что потери и порядок остаются на совести UDP. Сервер выделяет публичный UDP-порт в заданном диапазоне и сопоставляет потоки по правилам сессий и ключей потока.
Как пользователь может использовать
- Разработчик публикует локальный DNS-резолвер или тестовый UDP-сервис для команды.
- Администратор собирает syslog или метрики с удалённых хостов на локальный коллектор.
- Пользователь подключается к игровому или стриминговому UDP-сервису за NAT.
- Пользователь задаёт в CLI локальный UDP listen и целевой адрес на стороне сервера согласно документации.
- Пользователь учитывает таймаут неактивности и максимальный размер датаграммы, настроенные оператором.
- Пользователь входит в бесплатную учётную запись перед созданием UDP-туннеля; гостевой режим для UDP недоступен.
- Отправленные и полученные датаграммы расходуют общий месячный лимит всех туннелей этой учётной записи.
Как это реализовано в сервисе
Клиент подтверждает зарегистрированную учётную запись, создаёт туннель с протоколом UDP и использует выбранный транспорт для передачи трафика. Бесплатного тарифа достаточно, если его лимиты не исчерпаны. Сервер слушает UDP на выделенном порту, сопоставляет пакеты с туннелем и пересылает их через защищённый канал к локальному приложению. Полезные данные каждой датаграммы учитываются один раз в нужном направлении; служебные данные транспорта в лимит не входят.
Как использовать через CLI-клиент
Основной сценарий — публикация локального UDP-сервиса (как в ngrok):
fortunnels udp 9000
fortunnels udp 192.168.1.10:9000
Клиент создаёт туннель, подключается к data-plane по WebSocket/smux и пересылает входящие датаграммы с публичного UDP-порта на локальный адрес.
Расширенный режим reverse-proxy (оба флага обязательны):
fortunnels udp 53 -udp-listen :5353 -udp-dst 127.0.0.1:53
UDP всегда требует учётную запись. Передайте действующий токен либо используйте -login user@example.test -pass-stdin. Подробности флагов -udp-listen и -udp-dst — в документации CLI-клиента.
Справочник API
Создание туннеля
POST /api/tunnels
Пример:
{
"protocol": "udp",
"target_addr": "127.0.0.1:5353"
}
Ответ: идентификатор туннеля и публичный UDP-адрес (схема udp://host:port или поля host/port — как возвращает ваш сервер).
Создание требует действующую сессию или Bearer-токен зарегистрированной учётной записи. Бесплатного тарифа достаточно в пределах его лимитов; гостевой UDP-режим недоступен.
Статус и удаление
GET / DELETE по контракту API туннелей с идентификатором (см. актуальные пути в справочнике сервера).
CLI
fortunnels в режиме udp с флагами локального прослушивания и удалённого назначения (см. -udp-listen, -udp-dst в справке клиента).
Инспектор UDP
Просмотр записанных датаграмм: GET /api/v1/inspector/udp/datagrams (отдельная возможность продукта; требует прав зарегистрированного пользователя, не гостя).
Ошибки
Датаграмма слишком большая
Пакет превышает udp_max_payload_bytes сервера — отбрасывается или не пересылается (наблюдаемо как отсутствие ответа на стороне UDP).
Нет свободного порта
Не удаётся выделить порт из udp_port_range — создание туннеля завершается ошибкой API.
Таймаут неактивности
Поток UDP закрыт после простоя; следующая датаграмма может инициализировать новый поток или быть потеряна в зависимости от клиента.
401 / 403 на API
Создание или управление без прав или при запрете протокола политикой.
Ограничения
- UDP не гарантирует доставку и порядок; приложение должно это учитывать.
- NAT и файрволы могут ограничивать входящий UDP к клиенту агента.
- Диапазон публичных портов и лимиты размера задаются конфигурацией; нет отдельного глобального «выключателя UDP» в современной модели — доступ контролируется диапазоном, ACL и протоколом туннеля.
- Устаревшие флаги вроде -udp-enabled у сервера не используются; их наличие в скриптах приведёт к ошибке запуска.