Fail-closed
При падении туннеля kill-switch намеренно остаётся включённым до авторестарта или перехода на другой ключ группы.
Запуск туннеля — около десяти шагов. Покажем главные шесть. Прокрутите страницу: схема справа меняется вместе с шагами.
Если в системе уже есть чужой TUN-адаптер, клиент отказывается стартовать и объясняет причину. Два туннеля одновременно — это путаница маршрутов.
Физические адаптеры подчиняются туннелю: IPv6 выключается, DNS указывает на резолвер туннеля, отключается умный выбор DNS Windows.
Проверяются владельцы и права каталогов, а бинарники сверяются с эталоном по SHA-256. При несовпадении атомарный staging заменяет их.
Конфигурация генерируется и проверяется командой sing-box check -c. Только после этого запускается ядро.
Клиент ждёт, пока адаптер получит Status=Up. Трафик приложений теперь идёт в Wintun и дальше в ядро.
Только теперь включается блокировка. Правило привязано к алиасу интерфейса, и до появления адаптера оно просто не создалось бы.
При падении туннеля kill-switch намеренно остаётся включённым до авторестарта или перехода на другой ключ группы.
Если безопасность не доказана, клиент блокирует трафик или помечает «не проверено», но не рапортует об успехе.
Манифест изменений пишется атомарно. После падения приложения состояние восстанавливается, а в strict-режиме блокировка остаётся до вашего решения.
Туннель — это не «включил и забыл». Клиент постоянно проверяет, что трафик действительно идёт туда, куда должен.
Проверка egress-IP каждые 15 секунд.
TCP-проба прокси, три промаха — proxy-down без роняния TUN.
Бэкофф 2, 5, 10 секунд, затем failover по группе.
Выход через физический адаптер считается утечкой.
Все шаги описаны в README и реализованы в открытом репозитории.