Возможности

По нескольким путям идёт сама сеть, а не отдельное приложение

Пять вещей, которые отличают транспорт на уровне IP от прокси и от обычного объединения каналов.

Прозрачный VPN

VPN / 01

Любой разрешённый IP-трафик без клиента внутри приложения

Полный туннель или заданные маршруты идут через utun. Внутри живут IPv4 и IPv6, TCP, UDP, DNS, ICMP и прочие разрешённые протоколы. Адрес самого транспорта из туннеля исключён, и исключён жёстко: при сбое правила соединение рвётся, а не утекает мимо.

  • Системный интерфейс вместо прокси SOCKS или HTTP
  • Явный MTU и своя фрагментация в транспорте
  • Сырой IP получает важность из собственного заголовка, а при тесном дедлайне первой уступает массовая передача

Многопутевость и переключение

PATH / 02

Путь живёт, только когда проверен его фактический выход

Привязки сокета к адресу недостаточно. PLY различает PROBING, ACTIVE, MUTED и DEAD, подтверждает независимость каналов пробами и не выдаёт две записи в таблице за два физических пути.

  • Пробы приходят на сервер с разных публичных адресов
  • Переключение переживает смену Wi-Fi и сотовой сети
  • Счётчики видно и в клиенте, и в Prometheus на сервере

Полоса или потери

MODE / 03

Три ступени, и видно, чем платишь за каждую

Несколько каналов дают две разные вещи: больше полосы или меньше потерь. balanced оставляет выбор механизма и числа копий аллокатору, который считает их на каждое сообщение. copies-N кладёт копию на N лучших пригодных путей, N от 2 до 255. all-paths отправляет каждое сообщение на каждый пригодный путь и стоит полосы во столько раз, сколько их набралось.

  • balanced стоит по умолчанию и выводит избыточность на сообщение, а не на класс трафика
  • Каждое плечо настраивается отдельно: [app] redundancy у клиента, [egress] redundancy у сервера
  • Поля с режимом на проводе нет, поэтому обратное плечо идёт по настройке сервера, а не по просьбе клиента

Выход через сервер

EGRESS / 04

Произвольные TCP и UDP выходят с адреса сервера

Сервер держит постоянный TUN и разбирает, что с пакетом делать: выпустить через аплинк с подменой адреса или отмаршрутизировать дальше как есть.

  • Один и тот же тракт обслуживает оба режима
  • Правила задаются списком сетей, а не набором портов
  • Смена прав отзывает прежний сеанс, а не ждёт его конца

Доступ и наблюдаемость

POLICY / 05

Права на L3 выдаются отдельно и проверяются на каждом пакете

Устройство получает статический адрес, разрешённый режим и список сетей. Источник пакета обязан совпасть с выданным адресом, иначе пакет не пройдёт.

  • Заведение устройства, отпечаток ключа и повторное рукопожатие
  • Prometheus, журнал событий, трассы и офлайн-выгрузка
  • Данные об ошибках за периметр заказчика не уходят

Режимы сервера

Один тракт, два способа выпустить трафик

forward

Разрешённые пакеты уходят через выбранный аплинк с MASQUERADE. Снаружи это обычный трафик сервера.

tun

Тот же тракт маршрутизирует пакеты дальше без подмены адресов. Подходит, когда сети надо соединить, а не спрятать.