Skip to content

Tor — sing-box

Исходящий Tor в sing-box запускает бинарный файл Tor как дочерний процесс и проксирует трафик через его встроенный SOCKS-порт. Параметры протокола здесь настраивают, как sing-box запускает этот процесс и управляет им — сам Tor должен быть установлен отдельно.

Исходящий

type: "tor":

ПолеТипПо умолчаниюДопустимые значенияОписание
executable_pathstring(PATH lookup)<file path>Путь к бинарному файлу Tor. Если не задан, sing-box ищет `tor` в PATH.
extra_args[]string[]<arg>Дополнительные аргументы командной строки, передаваемые Tor при запуске. Полезно для `--use-bridges`, `--ClientTransportPlugin` и т. п.
data_directorystring(temp dir)<dir path>Рабочий каталог Tor (кэшированные дескрипторы, консенсус и т. д.). Сохранение его между перезапусками ускоряет начальную загрузку.
torrcmap[string]string{}{<option>: <value>}Встроенные параметры torrc, передаваемые через управляющий протокол Tor. Здесь работают стандартные ключи torrc: `ExcludeNodes`, `ExitNodes`, `StrictNodes`.

Исходный код: option/tor.go:3-9 · зафиксировано на v1.13.15 (3708fa1)

Встраивает DialerOptions для нижележащего сокета — bind_interface, detour и т. д.

Примеры

Минимальный вариант — sing-box сам находит tor в PATH и использует значения по умолчанию:

json
{
  "outbounds": [
    { "type": "tor", "tag": "tor" }
  ]
}

Явно заданный бинарный файл и постоянный каталог данных:

json
{
  "outbounds": [
    {
      "type": "tor",
      "tag": "tor-persistent",
      "executable_path": "/usr/local/bin/tor",
      "data_directory": "/var/lib/sing-box/tor",
      "torrc": {
        "ExitNodes": "{de},{nl}",
        "StrictNodes": "1"
      }
    }
  ]
}

С мостами obfs4:

json
{
  "outbounds": [
    {
      "type": "tor",
      "tag": "tor-bridged",
      "torrc": {
        "UseBridges": "1",
        "ClientTransportPlugin": "obfs4 exec /usr/bin/obfs4proxy",
        "Bridge": "obfs4 1.2.3.4:443 ABCDEF... cert=... iat-mode=0"
      }
    }
  ]
}

Примечания

  • Бинарный файл Tor обязателен во время работы. sing-box не поставляет его в комплекте. В большинстве дистрибутивов tor доступен как пакет; на macOS используйте Homebrew.
  • По умолчанию data_directory — новый временный каталог при каждом запуске. Это самый медленный вариант: каждый запуск заново выполняет начальную загрузку консенсуса. Постоянный каталог экономит несколько секунд при старте.
  • Ключи torrc передаются через управляющий протокол Tor; значение должно быть ровно той строкой, которую ожидает Tor (без автоматического заключения в кавычки). Для многострочных значений torrc повторите ключ в extra_args.
  • У исходящего нет поля network — сам Tor не поддерживает UDP, поэтому исходящий по определению работает только по TCP.

Сравнение с другими ядрами

  • Xray-core не имеет исходящего Tor. Обходной путь — направить SOCKS-исходящий на SOCKS-порт системного Tor. См. Tor — Xray-core.
  • mihomo не имеет исходящего Tor. См. Tor — mihomo.

Исходный код: option/tor.go:3-9 · v1.13.15 (3708fa1)

Core Tutorial от Argsment