Kill Switch

Блокируйте весь трафик, который идёт не через Throne, даже когда ни один профиль не запущен, и восстановите подключение, если kill switch отрезал вас от сети.

Начиная с версии 1.4.0, в Throne есть kill switch. Пока он включён, компьютер может отправлять трафик только через Throne: через режим TUN, через локальный прокси-порт или как собственные соединения Throne. Всё остальное блокируется, даже когда ни один профиль не запущен. Если прокси останавливается или соединение обрывается, приложения не могут вернуться к вашему обычному подключению.

Что он делает

Kill switch работает, пока работает Throne, независимо от того, запущен профиль или нет:

Ситуация Что проходит
Профиль запущен в режиме TUN Всё, потому что весь трафик идёт через адаптер TUN.
Профиль запущен только с системным прокси Приложения, которые используют прокси. Приложения, которые его игнорируют, блокируются.
Ни один профиль не запущен Почти ничего: только локальная сеть и исключения, перечисленные ниже.

На сам Throne это не влияет: его ядро всегда может подключаться к вашим серверам и отправлять трафик, который ваши правила направляют в direct. Полный список см. в разделе Что разрешено всегда.

Kill switch перестаёт действовать, когда Throne завершается. Он перестаёт действовать и при аварийном завершении Throne, поэтому сбой не отрежет вас от сети, но и защищать после этого не будет. Используйте режим TUN вместе с kill switch: тогда, пока запущен профиль, все приложения продолжают работать.

Включение

  1. Откройте Настройки (Settings) → Основные настройки (Basic Settings) → Безопасность (Security).
  2. Отметьте Kill Switch.
  3. Нажмите OK.

Kill switch нужны те же права, что и режиму TUN; см. Требования. В Linux и macOS включение перезапускает ядро Throne, а вместе с ним и запущенный профиль. Пока kill switch запускается, Throne откладывает запуск профиля.

Как проверить, что он работает:

  • В логе появляется «[Kill switch] On: only traffic through Throne can leave this device.» (включён: с этого устройства может уходить только трафик через Throne).
  • В заголовке окна и во всплывающей подсказке значка в трее отображается [Kill switch].
  • На кнопке запуска появляется маленький замок. Всплывающая подсказка кнопки сообщает, что kill switch делает сейчас:
Замок Подсказка Значение
Серый «Kill switch: starting…» (запускается) Kill switch запускается.
Зелёный «Kill switch: on — traffic only flows through Throne's Tun» (включён — трафик идёт только через TUN Throne) Профиль запущен в режиме TUN.
Жёлтый «Kill switch: Tun is not running, so most traffic is blocked» (TUN не работает, поэтому большая часть трафика блокируется) Ни один профиль не запущен, или режим TUN выключен.
Красный «Kill switch is not active» (kill switch не активен) или «Kill switch блокирует трафик» (Kill switch is blocking traffic) С kill switch возникла проблема; см. Когда он не может работать.

Настройка сохраняется. Kill switch снова запускается при каждом запуске Throne.

Что разрешено всегда

  • Ядро Throne (ThroneCore): подключения к вашим серверам, трафик, который ваши правила направляют в direct, тесты задержки (URL test) и DNS-запросы собственных DNS-серверов Throne. Программы профилей дополнительного ядра (Extra Core) тоже разрешены.
  • Адаптер TUN. Всё, что попадает в адаптер TUN Throne.
  • Loopback (127.0.0.1, ::1). Так приложения обращаются к локальному прокси-порту.
  • Локальная сеть, если в Настройки (Settings) → Настройки режима TUN (Tun Settings) не выключен параметр Обход частного диапазона (Private Range Bypass). Локальными считаются такие диапазоны: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16, 224.0.0.0/4, 255.255.255.255, fc00::/7, fe80::/10 и ff00::/8. Ваши собственные изменения в списке Обход частного диапазона этот список не меняют.
  • Базовые сетевые функции: DHCP и DHCPv6, обнаружение соседей и маршрутизаторов IPv6, а также сообщения о группах multicast (IGMP и MLD). Компьютер сохраняет свой сетевой адрес.
  • Throne API. Когда Throne API слушает сетевой адрес, его ответы клиентам проходят.

Даже когда локальная сеть разрешена, DNS-запросы (порты 53 и 853) других программ к локальным адресам блокируются. DNS-сервер в вашем роутере отправил бы их дальше в обход туннеля. В Linux Throne предупреждает, когда в /etc/resolv.conf указан такой сервер: «the system DNS server … is on the local network and the kill switch blocks DNS to it» (системный DNS-сервер … находится в локальной сети, и kill switch блокирует DNS-запросы к нему). В режиме TUN используйте systemd-resolved, который Throne направляет в туннель, или DNS-сервер за пределами вашей локальной сети.

Всё остальное блокируется, например:

  • Собственные запросы Throne, такие как обновления подписок, проверки обновлений и регистрация WARP. Они работают только в режиме TUN или пока профиль запущен с включённым параметром Настройки (Settings) → Основные настройки (Basic Settings) → Прочее (Miscellaneous) → Использовать прокси (Use proxy) или Системный прокси (System Proxy).
  • Трафик, который этот компьютер пересылает для других устройств, контейнеров или виртуальных машин, если он не идёт через адаптер TUN и не остаётся в локальной сети.
  • Трафик других VPN-приложений.

В macOS соединения, открытые в момент запуска kill switch, один раз обрываются. Приложения подключаются заново.

Как он работает

Throne запускает отдельный защитный процесс — ThroneCore --guard. Он добавляет правила брандмауэра, каждые 5 секунд проверяет, что они на месте, и удаляет их, когда Throne останавливает его, завершается или аварийно закрывается.

  • Linux: таблица nftables с именем throne-guard-…. Ядро Linux удаляет её, когда защитный процесс завершается. Ядро Throne распознаётся по группе: оно переключается на группу с ID 1950896719, и программы Extra Core тоже работают с этой группой.
  • macOS: якорь pf с именем com.apple/000.throne-guard.…. Защитный процесс включает pf на то время, пока он ему нужен. Ядро Throne распознаётся по тому же ID группы, что и в Linux. Если защитный процесс завершился, не удалив свои правила, Throne удаляет их при следующем запуске своего ядра.
  • Windows: фильтры Windows Filtering Platform (WFP) с именем «Throne kill switch». Windows удаляет их, когда защитный процесс завершается. ThroneCore.exe и программы профилей Extra Core распознаются по пути. Когда вы запускаете профиль Extra Core, Throne сначала добавляет его программу в kill switch («[Kill switch] Allowing the extra core …» — разрешается дополнительное ядро …).

Если другая программа удалит правила или выключит брандмауэр, Throne снова запустит kill switch, но не чаще одного раза в 30 секунд.

Требования

Система Что нужно kill switch
Windows Throne работает от имени администратора, и запущена служба Windows Служба базовой фильтрации (Base Filtering Engine).
Linux Ядро работает от root благодаря биту SUID. Именно так Throne настраивает права для режима TUN. Ядра, у которого есть только возможности (capabilities, setcap), недостаточно. Linux 5.12 или новее с nftables и метками conntrack (CONFIG_NFT_CT и CONFIG_NF_CONNTRACK_LABELS).
macOS Ядро работает от root благодаря биту SUID, как для режима TUN. /etc/pf.conf должен загружать якоря com.apple, как это происходит по умолчанию.

Как Throne настраивает эти права, см. в разделе Права для режима TUN.

Когда он не может работать

Если kill switch включён, но не может запуститься или перестаёт работать, Throne показывает «Kill switch is not active» (kill switch не активен) с указанием причины. В заголовке окна отображается [Kill switch: not active]. Кнопки:

  • Restart as Administrator (Windows) или Grant Privileges (Linux и macOS) — когда не хватает прав. Они работают так же, как для режима TUN.
  • Retry — при других проблемах.
  • Disable Kill Switch — выключает настройку.

Пока kill switch включён, но не активен, ничего не блокируется, а Throne не запускает профили. В логе появляется «[Kill switch] Not starting …: the kill switch is not active.» (… не запускается: kill switch не активен). Так вы никогда не будете пользоваться профилем в уверенности, что защищены, когда защиты нет. Устраните проблему или выключите kill switch.

У причины есть код. Он появляется в логе («[Kill switch] Not active: …») и в поле kill_switch_error в Throne API:

Код Значение
privilege Не хватает прав: Throne не работает от имени администратора (Windows) или у ядра нет прав root (Linux, macOS).
unsupported Эта система не может запустить kill switch: например, Linux без nftables, старше 5.12 или без меток conntrack, ядро в Linux с возможностями (capabilities) вместо root, настройка pf без якорей com.apple или остановленная Служба базовой фильтрации (Base Filtering Engine).
config Kill switch отклонил свои настройки, например из-за недопустимого адреса TUN.
tampered Другая программа удалила правила или выключила брандмауэр, и повторный запуск не помог.
crash, timeout, internal Защитный процесс остановился или не был готов в течение 15 секунд. Часто помогает Retry.
overridden Только headless Throne: он запущен с --no-kill-switch.

Kill switch блокирует трафик

В Linux ядро должно переключиться на группу kill switch. Там, где это невозможно, например в контейнере или пространстве имён пользователей без CAP_SETGID, kill switch продолжает блокировать трафик, но Throne отказывается запускать профили. В заголовке окна и во всплывающей подсказке значка в трее отображается [Kill switch блокирует трафик] ([Kill switch is blocking traffic]), а предупреждение предлагает только Disable Kill Switch. Тогда у компьютера нет доступа к интернету, пока вы не выключите kill switch.

Выключение

Используйте любой из способов:

  • Снимите флажок Настройки (Settings) → Основные настройки (Basic Settings) → Безопасность (Security) → Kill Switch и нажмите OK.
  • Щёлкните правой кнопкой мыши по кнопке запуска → Disable Kill Switch. Throne спросит «Turn off the kill switch? Traffic that does not go through Throne will no longer be blocked.» (выключить kill switch? Трафик, который идёт не через Throne, больше не будет блокироваться). Нажмите Disable Kill Switch.
  • Нажмите Disable Kill Switch в предупреждении kill switch.

В логе появляется «[Kill switch] Off.» (выключен). Приложения снова могут использовать ваше обычное подключение.

Если kill switch отрезал вас от сети

Настройки Throne работают без доступа к интернету. Откройте их и выключите kill switch, как описано выше.

Если Throne не отвечает:

  1. Закройте Throne или завершите его в диспетчере задач. Защитный процесс заметит это и удалит свои правила в течение нескольких секунд.
  2. Если трафик всё ещё блокируется, завершите защитный процесс сами:
    • Windows: в диспетчере задач на вкладке Подробности (Details) завершите все процессы ThroneCore.exe. Windows удаляет фильтры вместе с процессом. Перезагрузка Windows тоже их удаляет.
    • Linux: выполните sudo pkill -f 'ThroneCore --guard'. Ядро Linux удаляет таблицу вместе с процессом.
    • macOS: выполните sudo pkill -f 'ThroneCore --guard'. Если правила остались, снова запустите Throne: его ядро удалит их. Или выведите список якорей командой sudo pfctl -a com.apple -s Anchors и очистите тот, имя которого начинается с 000.throne-guard., командой sudo pfctl -a 'com.apple/000.throne-guard.…' -F all. Перезагрузка macOS тоже их удаляет.
  3. Запустите Throne и выключите kill switch, прежде чем делать что-либо ещё. Он запускается вместе с Throne, пока вы его не выключите.

На Android

В Throne для Android нет kill switch. В Android есть свой: назначьте Throne постоянной VPN (always-on VPN) и включите «Block connections without VPN» (блокировать подключения без VPN). См. Постоянная VPN.

Throne в режиме headless

В headless Throne есть тот же kill switch. Включите его командой thronectl settings set kill_switch=true. Отличия:

  • Права зависят от способа установки. В Linux kill switch нужен юнит, работающий от root, или ядро с битом SUID; одни лишь возможности (capabilities) дают unsupported. См. Права в Linux.
  • Когда kill switch не может работать, headless Throne записывает причину в лог, отклоняет профили (kill_switch_inactive) и сообщает kill_switch_failed.
  • Если kill switch отрезал вас от компьютера, один раз запустите Throne с --no-kill-switch. См. Восстановление доступа.