splify2
Начало

Обзор#

splify2 — набор проектов для роутеров на OpenWrt, которые решают одну задачу: выбранные сервисы идут через туннель на всех устройствах сети, остальное — напрямую. VPN на каждом телефоне, ноутбуке и телевизоре не нужен: правила живут на роутере.

Из чего состоит#

Проект Роль
splify2 Панель в LuCI (Сервисы → splify2): каталог сервисов, выходы, подписки, обновление списков, диагностика. Пишет спеку ядру и показывает его состояние
steer Ядро: переводит спеку в правила nftables, таблицы маршрутизации и наборы адресов одной атомарной транзакцией. Резолвер с fake-IP, сторож выходов, свои клиенты протоколов
steer-box-connector Пакет вместо sing-box для podkop и forkop: их конфиг переводится в спеку steer
xsteer Свой VPN-протокол с обликом TLS 1.3: хаб для сервера и клиенты
splify2-lists Каталог списков доменов и адресов для splify2

Ядро можно использовать и без панели: спека — обычный файл YAML или JSON, а у ядра есть CLI и управляющий сокет.

Чем отличается#

  • Маршрутизация в ядре Linux. Трафик не проходит через прокси на каждое соединение: метки nftables и таблицы маршрутизации отправляют пакет в нужный выход. Через процесс идут только туннели протоколов (VLESS, hysteria2, xsteer и другие), и то как устройство TUN.
  • Домены, а не только адреса. Резолвер отвечает на имена из списков служебным адресом из 198.18.0.0/15, а ядро Linux возвращает настоящий через DNAT. Это точнее списков адресов: один адрес CDN обслуживает сотни сайтов.
  • Отказоустойчивость. Выход может состоять из нескольких устройств и узлов подписки, группа — из нескольких выходов (первый живой, самый быстрый, выбор человека, балансировка). Когда не работает ничего, по умолчанию трафик правила останавливается, а не уходит в открытый интернет.
  • Для слабых роутеров. Одно ядро процессора, десятки мегабайт памяти, overlay на 6–7 МБ: ядро steer написано на C, модули протоколов ставятся отдельными пакетами по нужде.

С чего начать#