Маршрутизация

Выбирайте, какой трафик идёт через прокси, какой — напрямую, а какой блокируется, с помощью готовых профилей или собственных правил.

Маршрутизация решает, куда направляется каждое соединение: через прокси, напрямую или никуда. Встроенный профиль Default направляет всё через прокси, поэтому эта страница нужна, только если вы хотите иначе.

Как работает маршрутизация

Профиль маршрутизации — это список правил плюс outbound по умолчанию. Throne проверяет правила сверху вниз, и первое подходящее правило решает, куда пойдёт соединение. Если ни одно правило не подошло, используется outbound по умолчанию.

Outbound Куда идёт трафик
proxy Через запущенный профиль, а когда WARP включён — ещё и через WARP.
direct Прямо в интернет.
block Никуда. Соединение отклоняется.
warp-bypass Через запущенный профиль, но без WARP. См. WARP.
Сохранённый профиль Через этот профиль вместо запущенного. Только в расширенных правилах.

Одновременно активен один профиль маршрутизации. Переключить его можно в списке внизу меню Маршрутизация (Routing) или в меню трея → Выбор маршрутизации (Select Routing). Активное подключение перезапускается с новыми правилами. Группа также может использовать собственный профиль маршрутизации, см. Профиль маршрутизации для группы.

Скачивание готовых профилей

  1. Откройте Маршрутизация (Routing) → Скачать профили (Download Profiles) и выберите China, Iran или Russia.
  2. Оставьте флажок Автообновление (Auto update) установленным и нажмите OK.
  3. Выберите один из новых профилей внизу меню Маршрутизация (Routing). Само скачивание не делает его активным.
Профиль Что он делает
Bypass China, Bypass Iran, Bypass Russia Проксирует всё, кроме сайтов и IP-адресов этой страны и вашей локальной сети.
Proxy China Blocked, Proxy Russia Blocked Направляет всё напрямую, кроме сайтов, заблокированных в этой стране.
Proxy Antizapret, Proxy Refilter (Россия) Направляет всё напрямую, кроме сайтов из списка блокировок Antizapret или Re:filter.

Профиль «Bypass» подойдёт, если большинство сайтов, которые вы посещаете, находятся за рубежом. Профиль «Proxy … Blocked» пропускает через ваш сервер меньше трафика, но заблокированный сайт, которого нет в списке, не откроется.

Списки ведутся в репозитории throneproj/routeprofiles. Если скачивание не удаётся, выберите другое Зеркало наборов правил (Remote Rule-set Mirror) (см. Наборы правил) и повторите попытку.

Профили маршрутизации

Профили маршрутизации находятся на вкладке Маршрутизация (Route) окна Настройки (Settings) → Настройки маршрутизации (Routing Settings); это также первый пункт меню Маршрутизация (Routing). Если щёлкнуть профиль в меню Маршрутизация правой кнопкой мыши, он сразу откроется в редакторе. Изменения применяются, когда вы нажимаете OK; если подключение активно, нажмите Перезапустить (Restart) в уведомлении «Настройки изменены, перезапустите для применения» (Settings changed, restart to apply).

Есть три вида профилей:

Чтобы создать структурированный профиль:

  1. На вкладке Маршрутизация (Route) нажмите Создать (New) → Структурированный профиль (Structured profile).
  2. Введите Название (Name) и выберите Outbound по умолчанию (Default outbound).
  3. Добавьте правила на вкладке Основные настройки (Basic) или Дополнительно (Advanced) и нажмите OK.
  4. Сделайте профиль активным в меню Маршрутизация (Routing).

На вкладке DNS профилю можно задать собственные DNS-серверы, см. DNS для профиля маршрутизации. Вкладка Конечные точки (Endpoints) появляется, если у вас есть профили OpenVPN или OpenConnect, и запускает их рядом с прокси, см. раздельное туннелирование.

На вкладке Основные (Common) есть также эти настройки (только в расширенном режиме, см. Простой и расширенный режим):

Настройка Что делает
Стратегия разрешения доменов по умолчанию (Default Domain Strategy) Предпочтение IPv4 или IPv6, когда Throne определяет адрес сервера или сайта, который идёт напрямую.
Стратегия разрешения доменов в запросах (Resolve Domain Strategy) Определяет IP-адрес каждого домена до применения правил, так что IP-правила срабатывают и для доменов.
Зеркало наборов правил (Remote Rule-set Mirror) Откуда скачиваются наборы правил и профили, хранящиеся на GitHub. По умолчанию: jsDelivr (Cloudflare).

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

На вкладке Основные настройки (Basic) профиля есть четыре поля: Напрямую (Direct), Прокси (Proxy), Блокировать (Block) и Warp-bypass. Каждая строка в поле направляет подходящий трафик туда, куда указывает это поле.

Строка Что совпадает
domain:example.com Только example.com.
suffix:example.com example.com и все его поддомены.
keyword:example Любой домен, который содержит example.
regex:^cdn[0-9]*\.example\.com$ Домены, подходящие под регулярное выражение (синтаксис Go RE2).
ruleset:geosite-youtube Всё, что входит в набор правил, по имени или по URL файла .srs.
ip:10.0.0.0/8 Диапазон IP или отдельный адрес, например 1.2.3.4.
processName:Telegram.exe Программа по имени файла.
processPath:C:\Program Files\App\app.exe Программа по полному пути.
  • Пишите по одной записи в строке. Префиксы чувствительны к регистру: processName, а не processname.
  • Имя процесса должно совпадать точно, с учётом регистра и .exe в Windows. Точное имя показывает вкладка «Подключения».
  • Редактор отмечает строки, которые не может использовать. Исправьте их до переключения вкладок: при переключении они отбрасываются.

Пример: проксировать всё, кроме местных сайтов, и блокировать рекламу. Установите Outbound по умолчанию (Default outbound) в значение proxy. В поле Напрямую (Direct):

ruleset:geosite-ir
ruleset:geoip-ir

В поле Блокировать (Block):

ruleset:geosite-category-ads-all

Замените ir кодом своей страны, например cn или ru.

Пример: через прокси идут только одна программа и один сайт. Установите Outbound по умолчанию (Default outbound) в значение direct. В поле Прокси (Proxy):

processName:Telegram.exe
suffix:example.org

Каждое поле превращается в правила на вкладке Дополнительно (Advanced), например Simple Address Bypass для адресов из поля Напрямую и Simple Process Name Proxy для программ из поля Прокси. Правила добавляются в порядке Напрямую, Блокировать, Прокси, Warp-bypass, и срабатывает первое совпадение, поэтому строка в поле Прокси ни на что не влияет, если более широкая строка в поле Напрямую подходит под тот же трафик. Чтобы сделать исключение, например проксировать example.ir, когда geosite-ir идёт напрямую, добавьте suffix:example.ir в поле Прокси, затем на вкладке Дополнительно переместите Simple Address Proxy выше правила, которое содержит geosite-ir.

Расширенные правила

Вкладка Дополнительно (Advanced) показывает все правила профиля по порядку. Кнопки Поднять выше (Move Up) и Опустить ниже (Move Down) меняют порядок. Снимите флажок правила, чтобы отключить его, не удаляя; это работает и для правил из полей вкладки Основные настройки (Basic). В простом режиме эта вкладка появляется, только если в профиле есть правила, которые вкладка Основные настройки показать не может.

Чтобы добавить правило, нажмите Создать (New) и выберите Действие (Action). Затем отметьте нужные атрибуты на вкладке + и заполните их, по одной записи в строке.

Действие Что делает
route Направляет подходящий трафик в outbound правила. Новое правило использует direct, пока вы не отметите outbound и не выберете другой.
reject Блокирует подходящий трафик. В расширенных правилах используйте его вместо block.
hijack-dns Отвечает на DNS-запросы с помощью DNS Throne.
route-options Задаёт параметры, например override_address или tls_spoof, и переходит к следующим правилам.
sniff Определяет протокол и домен соединения и переходит дальше.
resolve Определяет IP-адрес домена и переходит дальше.
bypass Только в Linux. См. документацию sing-box.

route, route-options и bypass также предлагают tls_fragment и tls_record_fragment. Они разбивают TLS-рукопожатие, как параметры фрагментации TLS в профиле, что помогает соединениям direct с сайтами, которые фильтр блокирует по имени.

Атрибуты Что проверяют
domain, domain_suffix, domain_keyword, domain_regex Запрошенный домен.
ip_cidr, ip_is_private Адрес назначения.
rule_set Имена наборов правил или URL файлов .srs.
port, port_range Порт назначения, например 443 или 1000:2000.
source_ip_cidr, source_port и подобные Откуда пришло соединение, например с другого устройства в вашей сети.
process_name, process_path, process_path_regex Программа на этом компьютере.
network, protocol, ip_version tcp, udp или icmp; обнаруженный протокол, например tls или bittorrent; 4 или 6.
inbound mixed-in (порт прокси) или tun-in (режим TUN).
wifi_ssid, wifi_bssid Сеть Wi-Fi, к которой вы подключены. Недоступно в macOS.
invert Правило срабатывает, когда его условия не выполняются.

Внутри одного правила атрибуты домена, IP и rule_set срабатывают, если совпадает любой из них. Все остальные атрибуты тоже должны совпасть.

Чтобы направить трафик через конкретный сервер, отметьте outbound и выберите сохранённый профиль — он показан как [group] name. Throne запускает его рядом с профилем, который запустили вы. Профили дополнительного ядра (Extra Core) и полные пользовательские конфигурации так использовать нельзя.

Наборы правил

Набор правил (rule-set) — это список доменов или диапазонов IP в отдельном файле. Используйте его как ruleset:<name> в поле или в атрибуте rule_set расширенного правила.

  • Встроенные имена: их более 2000. Имена, начинающиеся с geosite-, содержат домены, например geosite-youtube или geosite-category-ads-all. Имена, начинающиеся с geoip-, содержат диапазоны IP, например geoip-ir или geoip-telegram. Редактор подсказывает имена при вводе.
  • Собственные файлы: URL любого бинарного набора правил sing-box. Имя файла должно содержать .srs.

Наборы правил скачиваются при запуске профиля. Маршрутизация (Routing) → Обновить наборы правил (Update Rule-Sets) скачивает свежие копии. Если GitHub в вашей сети заблокирован или работает медленно, измените Настройки маршрутизации (Routing Settings) → Основные (Common) → Зеркало наборов правил (Remote Rule-set Mirror). Зеркало также применяется к списку AdBlock и к профилям маршрутизации, которые хранятся на GitHub.

Удалённые профили

Удалённый профиль — это структурированный профиль, который Throne скачивает по URL, как профили из меню Скачать профили. Провайдеры также могут передать его ссылкой throne://remoteroute/.

Чтобы добавить его, на вкладке Маршрутизация (Route) нажмите Создать (New) → Удалённый профиль (Remote profile), введите URL, отметьте Автообновление (Auto update) и нажмите OK. По этому адресу может отдаваться ссылка throne://route/, её текст в Base64 или JSON профиля. Raw-профили не могут быть удалёнными.

Для автоматических обновлений нужен также параметр Настройки (Settings) → Основные настройки (Basic Settings) → Подписка (Subscription) → Автообновление профилей маршрутизации (Routing profiles auto update), который по умолчанию выключен (только в расширенном режиме). Чтобы обновить профиль сразу, нажмите Обновить (Update) на вкладке Маршрутизация (Route).

Профиль маршрутизации для группы

Группа может подключаться с собственным профилем маршрутизации вместо профиля из меню Маршрутизация (Routing). Например, серверы одного провайдера могут использовать Bypass Iran, а все остальные группы — Default.

  1. Щёлкните вкладку группы правой кнопкой мыши и выберите Редактировать выбранную группу (Edit selected Group).
  2. Выберите Профиль маршрутизации (Routing Profile). Вариант По умолчанию (…) (Default (…)) следует меню Маршрутизация.
  3. Нажмите OK.

Решает группа профиля, который вы запускаете. Для цепочки или автовыбора это группа самой цепочки или автовыбора, а не входящих в них профилей. Заголовок окна и всплывающая подсказка значка в трее показывают используемый профиль маршрутизации, а вкладка «Подключения» изменяет именно его. Профиль маршрутизации группы приносит с собой и свои настройки DNS, если они у него есть.

Из подписки

Некоторые провайдеры передают вместе с подпиской профиль маршрутизации в формате Happ. Чтобы использовать его, откройте параметры группы, отметьте Использовать профиль маршрутизации из подписки (Use the subscription's routing profile) в разделе Подписка (Subscription), нажмите OK и обновите подписку.

Throne сохраняет его как структурированный профиль маршрутизации с названием, которое дал провайдер. Если у группы Профиль маршрутизации (Routing Profile) — По умолчанию (…) (Default (…)), новый профиль становится профилем маршрутизации группы. Каждое обновление заменяет его правила. Настройки DNS из подписки никогда не используются.

  • Чтобы изменить его насовсем, клонируйте его кнопкой Дублировать (Clone) и выберите клон в поле Профиль маршрутизации (Routing Profile) группы.
  • Профиль принадлежит группе. При удалении группы удаляется и он.

Raw-профили

Raw-профиль — это полный объект route sing-box в формате JSON для возможностей, которых нет в редакторе правил. Создайте его кнопкой Создать (New) → JSON-профиль (Raw profile).

Outbound указываются числами: -1 — это proxy, -2 — direct, -5 — warp-bypass, а ID профиля — этот сохранённый профиль. После "outbound": редактор подсказывает ваши профили. Если final отсутствует, Throne использует proxy.

Имена встроенных наборов правил в raw-профилях не определены, и Throne не добавляет шаг DNS, который получают структурированные профили. Для режима TUN начинайте правила так:

{
  "rules": [
    { "action": "sniff" },
    { "protocol": "dns", "action": "hijack-dns" },
    { "domain_suffix": ["example.com"], "outbound": -2 }
  ],
  "final": -1
}

Запретить изменения (Prevent modifications) использует JSON точно в том виде, в каком он написан, что может сломать DNS, профили Xray и цепочки. AdBlock, Включить DNS-маршрутизацию (Enable DNS Routing) и действия вкладки «Подключения» не работают с raw-профилями, а Throne для Android не может их использовать.

Вкладка «Подключения»

Вкладка Подключения (Connections) внизу главного окна показывает открытые соединения, сгруппированные по программам, с адресом назначения, протоколом, outbound и объёмом трафика. Наведите курсор на столбец Outbound, чтобы увидеть правило, которое сработало для соединения; final означает, что ни одно правило не сработало.

Щёлкните соединение правой кнопкой мыши, чтобы изменить, куда идёт такой трафик:

  • Напрямую (Direct), Прокси (Proxy) или Блокировать (Block) показывают список целей с флажками: каждый уровень домена, например *.example.com, название сайта как ключевое слово, IP-адрес, если у соединения нет домена, и программу. Отмеченная цель добавляется в это поле используемого профиля маршрутизации и удаляется из других полей.
  • Другой сервер (Specific server) делает то же самое, но направляет цели через выбранный вами сервер.

Затем нажмите Перезапустить (Restart) в уведомлении «Настройки изменены, перезапустите для применения» (Settings changed, restart to apply). Цель добавляется в уже существующее правило этого поля. Если поле было пустым, его новое правило добавляется в конец списка, где более широкое правило выше может сработать первым, поэтому проверьте порядок на вкладке Дополнительно (Advanced).

Эти действия недоступны для raw-профилей, для профилей с Запретить изменения (Prevent modifications), для удалённых профилей с Автообновление (Auto update) и для профилей, которые обновляет подписка. Чтобы изменить удалённый профиль или профиль из подписки, сначала клонируйте его, см. Удалённые профили и Из подписки.

Если вкладки нет, включите Настройки (Settings) → Основные настройки (Basic Settings) → Интерфейс (Style) → Статистика подключений (Connection statistics) (только в расширенном режиме).

AdBlock

Маршрутизация (Routing) → Включить AdBlock (Enable AdBlock) блокирует рекламу в активном структурированном или удалённом профиле с помощью списка adblocksingbox из проекта 217heidai/adblockfilters. Он срабатывает раньше ваших собственных правил, поэтому реклама блокируется и в прямом, и в проксируемом трафике.

Если какой-то сайт перестал работать, выключите AdBlock, чтобы проверить, не блокирует ли его список. Чтобы блокировать рекламу только в одном профиле, вместо этого добавьте ruleset:geosite-category-ads-all в его поле Блокировать (Block).

Обмен профилями

Выберите профиль на вкладке Маршрутизация (Route) и нажмите Экспорт (Export) (Ctrl+C), чтобы скопировать его как ссылку throne://route/.

Чтобы импортировать профиль, щёлкните ссылку или скопируйте её и нажмите Ctrl+V в главном окне. Профиль добавится, но не станет активным. Импорт (Import) (Ctrl+V) на вкладке Маршрутизация (Route) также выбирает его, поэтому он станет активным, когда вы нажмёте OK.

Ссылка содержит название, outbound по умолчанию, правила (включая отключённые) и собственные настройки DNS профиля. Правила, которые направляют трафик в сохранённый профиль, ссылаются на него по имени; если на другом устройстве профиля с таким именем нет, они используют proxy. Конечные точки OpenVPN и OpenConnect передаются без учётных данных. Формат ссылки описан на странице Глубокие ссылки.

На Android

В Throne для Android есть те же профили маршрутизации, правила и наборы правил. Откройте Маршруты (Routing) в боковом меню и нажмите на профиль, чтобы сделать его активным. Отличия:

  • Правила для приложений. Поле Приложения (Apps) проверяет приложения Android; Неизвестные приложения (Unknown apps) — соединения, приложение которых не удаётся определить. Регулярное выражение имени пакета (Package name regex) проверяет имена пакетов. На компьютере эти правила никогда не срабатывают.
  • Правила для сети. Тип сети (Network type) проверяет Wi-Fi, мобильную сеть или Ethernet, а Лимитная сеть (Metered network) — лимитные сети. Версия для компьютера пропускает такие правила при импорте ссылки.
  • Правила для Wi-Fi требуют доступа к местоположению с вариантом «Разрешить в любом режиме» (Allow all the time) и включённой геолокации.
  • Raw-профили и конечные точки VPN из импортированных ссылок не поддерживаются.
  • AdBlock и Автообновление удалённых профилей (Auto update remote profiles) находятся в Настройки (Settings) → Маршрутизация (Routing).
  • Если набор правил не удаётся скачать, Всё равно подключиться (Connect anyway) подключает без него. Его правила ни с чем не совпадают, пока он не будет скачан через прокси.