Tor — sing-box
Исходящий Tor в sing-box запускает бинарный файл Tor как дочерний процесс и проксирует трафик через его встроенный SOCKS-порт. Параметры протокола здесь настраивают, как sing-box запускает этот процесс и управляет им — сам Tor должен быть установлен отдельно.
Исходящий
type: "tor":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
executable_path | string | (PATH lookup) | <file path> | Путь к бинарному файлу Tor. Если не задан, sing-box ищет `tor` в PATH. |
extra_args | []string | [] | <arg> | Дополнительные аргументы командной строки, передаваемые Tor при запуске. Полезно для `--use-bridges`, `--ClientTransportPlugin` и т. п. |
data_directory | string | (temp dir) | <dir path> | Рабочий каталог Tor (кэшированные дескрипторы, консенсус и т. д.). Сохранение его между перезапусками ускоряет начальную загрузку. |
torrc | map[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)
