Конфигурация Tailscale

Chute включает встроенную нативную поддержку Tailscale. После настройки вы можете ссылаться на встроенную политику TAILSCALE из правил или групп политик, чтобы направлять трафик через ваш tailnet — обращаться к другим устройствам в tailnet, выходить через выходной узел или обращаться к подсетям, объявленным пирами.

В отличие от обычных прокси-протоколов, Tailscale — это не политика, заданная построчно в [Proxy]; он настраивается через единственный глобально уникальный раздел [Tailscale]. Он регистрирует узел на контрольном сервере с помощью auth key, без интерактивного входа через браузер.

Раздел Tailscale

Раздел [Tailscale] определяет всё, что нужно устройству для подключения к tailnet:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
control-server = https://controlplane.tailscale.com
hostname = my-device
exit-node = 100.101.102.103
accept-routes = true
force-derp = false

Примечание: во всём файле конфигурации допускается только один раздел [Tailscale]. Повторный раздел [Tailscale] считается ошибкой конфигурации. Это связано с тем, что движок Tailscale тяжеловесен, а диапазоны адресов tailnet взаимоисключающи — одновременно можно подключиться только к одному tailnet. Именованная форма Surge [Tailscale <имя>] читается как этот раздел; ограничение в один раздел сохраняется.

Параметры

Ключ Обязательно Описание
auth-key Да Auth key Tailscale. При использовании официальной плоскости управления должен начинаться с tskey-; сторонние контрольные серверы (например, Headscale) принимают собственные форматы ключей
control-server Нет Адрес контрольного сервера, должен быть URL вида http(s)://. Оставьте пустым, чтобы использовать официальную плоскость управления controlplane.tailscale.com
hostname Нет Имя устройства, сообщаемое в tailnet (MagicDNS-имя хоста)
exit-node Нет Выходной узел; принимает IP tailnet (100.x) или MagicDNS-имя. Оставьте пустым, чтобы не использовать выходной узел
accept-routes Нет Принимать ли подсетевые маршруты, объявленные пирами (логическое значение, по умолчанию false)
force-derp Нет Принудительно использовать только DERP-ретрансляцию и отключить прямые соединения (логическое значение, по умолчанию false)
direct-quality-guard Нет Отслеживать качество прямого пути и заранее переключаться на DERP при его ухудшении (логическое значение, по умолчанию false). Когда выключено, качество пути только записывается
peer-relay Нет peer-relay = true позволяет этому клиенту, когда прямой путь пробить не удаётся, использовать вместо DERP узел tailnet с запущенным UDP-ретранслятором (tailscale set --relay-server-port=<port>). Плоскость управления должна выдать tailscale.com/cap/relay, где это устройство указано в src, а узел-ретранслятор — в dst. Chute — только клиент ретрансляции и никогда не ретранслирует для других узлов. По умолчанию выключено
exit-dns Нет DNS, используемый для имён хостов, соединения с которыми идут через выходной узел: auto (по умолчанию, когда задан выходной узел — разрешение через DNS выходного узла), off или буквальный IP DNS-сервера, доступного через выходной узел
advertise-exit-node Нет Предлагать это устройство сети tailnet в качестве выходного узла (логическое, по умолчанию false). Только macOS — на iOS, tvOS и Android игнорируется с предупреждением
advertise-routes Нет Локальные подсети, которые это устройство готово маршрутизировать для tailnet, списком CIDR через запятую (например 192.168.1.0/24, 10.0.0.0/8). Только macOS

Написания Surge принимаются как псевдонимы: control-url вместо control-server и derp-only вместо force-derp.

Логические значения принимают следующие написания (без учёта регистра): true/false, 1/0, yes/no, on/off.

Примечание: неизвестные ключи игнорируются с предупреждением (они не блокируют загрузку конфигурации). Опечатка в ключе (например, force-derp, записанный как force_derp) незаметно отключит эту опцию — сверьтесь с таблицей выше.

Встроенная политика TAILSCALE

После настройки раздела [Tailscale] становится доступным встроенный идентификатор политики TAILSCALE — он стоит в одном ряду с DIRECT и REJECT и может напрямую использоваться в правилах и группах политик. Когда раздел [Tailscale] не настроен или Tailscale выключен, правила, ссылающиеся на TAILSCALE, обрабатываются как REJECT (fail-closed).

[Proxy Group]
Mesh = select, TAILSCALE, DIRECT

[Rule]
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
FINAL,DIRECT

Автоматическая маршрутизация

При включённом Tailscale Chute автоматически добавляет следующие три правила перед всеми вашими правилами, поэтому обычно не нужно вручную писать правила для доступа к tailnet:

DOMAIN-SUFFIX,ts.net,TAILSCALE
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
IP-CIDR6,fd7a:115c:a1e0::/48,TAILSCALE,no-resolve

Когда базовый домен MagicDNS сети tailnet не ts.net — развёртывание Headscale, — для него дополнительно добавляется правило DOMAIN-SUFFIX,<базовый домен>,TAILSCALE, перед правилами accept-routes.

Эти автоматически добавленные правила действуют только во время выполнения и никогда не изменяют ваш файл конфигурации. Если установлено accept-routes = true, подсети, объявленные пирами, также автоматически добавляются как соответствующие правила IP-CIDR / IP-CIDR6 и обновляются автоматически при добавлении или отзыве подсетей пирами.

Использование

Доступ к устройствам в tailnet

После настройки раздела [Tailscale] для обращения к другим устройствам в tailnet не нужны дополнительные правила — автоматически добавленные правила уже покрывают диапазоны tailnet и суффикс MagicDNS. Вы можете адресовать пиры напрямую по MagicDNS-имени или IP tailnet:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
hostname = my-iphone

[Rule]
FINAL,DIRECT

Теперь такие цели, как my-pc.<tailnet>.ts.net или 100.101.102.103, будут автоматически идти через Tailscale.

Выход через выходной узел

Установите TAILSCALE как цель FINAL, чтобы направить весь трафик, не подпавший под более конкретное правило, через выходной узел:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
exit-node = 100.101.102.103

[Rule]
FINAL,TAILSCALE

Примечание: сам по себе параметр exit-node не направляет трафик через выходной узел — необходимо также добавить правило, отправляющее трафик в TAILSCALE (например, FINAL,TAILSCALE). Без такого правила выходной узел настроен, но не используется; редакторы конфигурации Chute Mac, Chute iOS и Chute Android сообщают об этом, а редактор Chute tvOS — нет.

Приём подсетевых маршрутов

Когда устройство в tailnet выступает как subnet router и объявляет локальные подсети, включите accept-routes = true, чтобы получить доступ к этим подсетям; соответствующие правила маршрутизации добавляются автоматически:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
accept-routes = true

Сделать это устройство выходным узлом (только macOS)

Только macOS. iOS, tvOS и Android могут использовать выходной узел, но не могут им быть. Приведённые ниже ключи там тоже разбираются, но игнорируются с предупреждением.

Mac с Chute может сам быть выходным узлом, чтобы остальные ваши устройства выходили в интернет через него. Включите это на вкладке Конфигурация главного окна → Прокси → Tailscale → Работать как exit node для других устройств, в подменю Tailscale строки меню → Работать как exit node или прямо в конфигурации:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-exit-node = true

Если нужно поделиться только локальной сетью, а не полным выходом в интернет, перечислите подсети:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-routes = 192.168.1.0/24, 10.0.0.0/8

Объявление — это лишь предложение. Администратор должен одобрить маршруты в консоли управления Tailscale (в Headscale — командой headscale nodes approve-routes), и только после этого другие устройства смогут выбрать этот Mac. До тех пор в строке меню отображается Ожидание одобрения в консоли управления, и трафик не идёт.

После одобрения другие устройства выбирают его так же, как любой выходной узел, а строка меню показывает, сколько соединений этот Mac сейчас обслуживает.

Несколько моментов, которые стоит знать до включения:

  • Трафик других устройств использует интернет-подключение этого Mac и выходит наружу под его IP-адресом, поэтому он учитывается на этом подключении и относится к этой сети.
  • Пока Mac спит, выходной узел не работает. Включите в меню Tailscale пункт Не давать Mac засыпать во время работы — Mac будет бодрствовать ровно столько, сколько он одобрен и передаёт трафик. При закрытии крышки он всё равно уснёт: это не переопределяется, и у официального клиента Tailscale для macOS то же ограничение.
  • ICMP не пересылается, поэтому ping с другого устройства через этот выходной узел останется без ответа. На tailscale ping это не влияет — он не использует ICMP.

У официальных клиентов Tailscale для iOS и tvOS то же ограничение и по той же причине: сетевое расширение не может держать долго живущий путь пересылки.

Собственный контрольный сервер (Headscale)

Помимо официальной плоскости управления, Chute поддерживает самостоятельно размещённые контрольные серверы Headscale / Ionscale. Просто укажите соответствующий URL:

[Tailscale]
auth-key = your-headscale-preauth-key
control-server = https://headscale.example.com
hostname = my-device

Сторонние контрольные серверы не требуют префикса tskey- и принимают собственные auth key. Использование адреса http:// в открытом виде рекомендуется только в доверенной сети (например, для Headscale, размещённого локально).

Известные ограничения и рекомендации

Реализация Tailscale сосредоточена на возможностях, наиболее часто используемых в прокси-сценариях; некоторые функции официального клиента пока не поддерживаются. Обратите внимание на следующие поведенческие различия:

  1. Используйте force-derp = true только для диагностики. Обычно Chute предпочитает прямые UDP-соединения с пирами (disco hole-punching), которые, как правило, обеспечивают меньшую задержку и большую пропускную способность, чем DERP-ретрансляция. Если в конкретной сети прямые соединения постоянно нестабильны или медленнее DERP, сравните оба режима и включайте force-derp только для этой среды.

  2. Поддерживается только вход по auth key. SSO / интерактивный вход через браузер, Tailscale SSH, Taildrop и Funnel / serve не поддерживаются. На iOS, tvOS и Android Chute не может объявлять маршруты локальных подсетей или предоставлять это устройство как выходной узел — эти платформы подключаются только как потребители; на macOS поддерживается и то и другое, см. раздел «Сделать это устройство выходным узлом (только macOS)» выше.

  3. При использовании выходного узла общесистемный DNS остаётся локальным, но имена хостов, соединения с которыми идут через TAILSCALE, разрешаются через выходной узел. Имена MagicDNS разрешаются локально по карте tailnet. Для соединений, маршрутизируемых через выходной узел, имена хостов разрешаются через DNS выходного узла (peerapi ExitDNS или резолвер, заданный через exit-dns); установите exit-dns = off, чтобы оставить разрешение локальным. Глобальные резолверы и удалённые split-DNS-резолверы не поддерживаются.

  4. MagicDNS поддерживает только записи A / AAAA. Глобальные резолверы, split-DNS-маршруты (записи с выделенным резолвером) и не-адресные ExtraRecords (TXT / CNAME / SRV) игнорируются; при обнаружении в лог записывается предупреждение.

  5. Внутренний MTU прямого пути фиксирован на 1280. Обнаружения Path MTU нет; это консервативное значение предотвращает чёрные дыры на PPPoE / составных туннельных каналах. Путь через DERP-ретрансляцию не затрагивается.

  6. Tailnet Lock (сетевая блокировка) не поддерживается. В tailnet с включённой сетевой блокировкой ключ этого узла не будет подписан, а заблокированные пиры будут незаметно отбрасывать трафик от этого устройства.

  7. Перезапись адреса источника реализована; выходные узлы Mullvad по-прежнему не проверены. Маскарадные адреса capVer-104, которые может назначить пир (SelfNodeV4MasqAddrForThisPeer и его v6-близнец), соблюдаются, поэтому трафик к такому пиру несёт запрошенный адрес. Построенная поверх этого схема Mullvad с реальным сервисом не проверялась.

  8. Восстановление после смены сети зависит от системного уведомления. При переключении Wi-Fi / сотовой связи Chute оперативно перестраивает соединения; в редком случае, когда уведомление о смене сети не получено, восстановление откатывается к переподключению по watchdog примерно через 3 минуты.

  9. На мобильных устройствах число пиров ограничено. На iOS, tvOS и Android netmap урезается до 256 пиров — остаются пиры с наименьшими node ID, остальные отбрасываются с одним предупреждением; macOS сохраняет всех.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-30 15:11:19

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""