Skip to content

Исходящие

outbounds — массив вышестоящих целей. Каждая запись — плоский объект: конверт type / tag плюс собственные поля выбранного типа на том же уровне. Правила «первый исходящий — по умолчанию» здесь нет: не совпавший ни с одним правилом трафик уходит в route.final.

Конверт

ПолеТипПо умолчаниюДопустимые значенияОписание
typestringdirect | block | selector | urltest | socks | http | shadowsocks | vmess | trojan | naive | tor | ssh | shadowtls | vless | anytls | hysteria | tuic | hysteria2Тип исходящего. Определяет, в какую структуру параметров декодируется остальная часть объекта. Незарегистрированное значение приводит к ошибке запуска "unknown outbound type".
tagstringУникальное имя этого исходящего. На него ссылаются правила маршрутизации, route.final, групповые исходящие и поле detour при установке соединений.

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

Поля конкретных типов описаны на страницах протоколов: Direct, HTTP и SOCKS, Shadowsocks, VMess, Trojan, Naive, Tor, SSH, VLESS, AnyTLS, Hysteria2, TUIC. selector и urltest — групповые исходящие, выбирающие среди других тегов.

Общие поля подключения (DialerOptions)

Каждый устанавливающий соединения исходящий встраивает DialerOptions; поля располагаются на том же плоском уровне, что и конверт.

ПолеТипПо умолчаниюДопустимые значенияОписание
detourstringУстанавливать соединения через другой исходящий, указанный по его тегу.
bind_interfacestringСетевой интерфейс, к которому привязываются исходящие соединения.
inet4_bind_address*badoption.AddrПривязываемый исходный IPv4-адрес.
inet6_bind_address*badoption.AddrПривязываемый исходный IPv6-адрес.
bind_address_no_portboolfalsetrue | falseУстанавливать IP_BIND_ADDRESS_NO_PORT при привязке — откладывает выделение порта до connect. Только Linux.
protect_pathstringПуть к Unix-сокету защитного демона Android VpnService; перед установкой соединения туда передаётся fd каждого сокета.
routing_markFwMarkSO_MARK (fwmark), устанавливаемый на исходящих сокетах. Только Linux.
reuse_addrboolfalsetrue | falseУстановить SO_REUSEADDR на исходящих сокетах.
netnsstringСетевое пространство имён, из которого устанавливаются соединения (имя или путь). Только Linux.
connect_timeoutbadoption.DurationТайм-аут установки TCP-соединения. Строка длительности, например "5s".
tcp_fast_openboolfalsetrue | falseВключить TCP Fast Open для исходящих соединений.
tcp_multi_pathboolfalsetrue | falseВключить Multipath TCP для исходящих соединений.
disable_tcp_keep_aliveboolfalsetrue | falseОтключить TCP keep-alive для исходящих соединений.
tcp_keep_alivebadoption.DurationПериод простоя до начала keep-alive-проб. Строка длительности.
tcp_keep_alive_intervalbadoption.DurationИнтервал между keep-alive-пробами. Строка длительности.
udp_fragment*boolfalsetrue | falseРазрешить фрагментацию UDP-пакетов крупнее MTU вместо их отбрасывания.
domain_resolver*DomainResolveOptionsКакой DNS-сервер (по тегу) разрешает адрес сервера: либо просто строка-тег, либо объект с переопределениями для конкретного подключения.
network_strategy*NetworkStrategyСтратегия выбора среди доступных сетей (например, default / hybrid / fallback). Только для платформенных сборок с поддержкой информации о сетях.
network_typebadoption.Listable[InterfaceType]Предпочитаемые типы сетей (wifi, cellular, ethernet, other) при использовании network_strategy.
fallback_network_typebadoption.Listable[InterfaceType]Типы сетей, на которые выполняется переход, когда предпочитаемые недоступны.
fallback_delaybadoption.DurationЗадержка перед запуском резервного подключения (в стиле Happy Eyeballs). Строка длительности, например "300ms".
domain_strategyDomainStrategyprefer_ipv4 | prefer_ipv6 | ipv4_only | ipv6_onlyСтратегия выбора семейства адресов при разрешении домена сервера.

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

Общие поля сервера (ServerOptions)

Протокольные исходящие, подключающиеся к фиксированному серверу, встраивают ServerOptions.

ПолеТипПо умолчаниюДопустимые значенияОписание
serverstringИмя хоста или IP сервера.
server_portuint16Порт сервера.

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

Минимальный пример

json
{
  "outbounds": [
    {
      "type": "shadowsocks",
      "tag": "proxy",
      "server": "example.com",
      "server_port": 8388,
      "method": "2022-blake3-aes-128-gcm",
      "password": "<base64-key>"
    },
    { "type": "direct", "tag": "direct" }
  ],
  "route": { "final": "proxy" }
}

Примечания

  • Исходящий dns объявлен устаревшим в 1.11.0 и удалён в 1.13.0 — его настройка приводит к ошибке; перехват DNS теперь является действием правила. Исходящий wireguard также удалён: вместо него используйте конечную точку WireGuard.
  • shadowsocksr зарегистрирован только как заглушка, возвращающая ошибку (удалён в 1.6.0). hysteria, tuic, hysteria2 и исходящий naive требуют сборки с тегом with_quic (официальные релизные бинарники его включают).
  • detour сцепляет исходящие по тегу; цепочка, замыкающаяся сама на себя, — ошибка запуска.
  • Когда server — домен, разрешение выполняется согласно domain_resolver / domain_strategy; без них применяется DNS по умолчанию из маршрутизации.

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

  • Xray-core вкладывает поля протокола в settings, сцепляет исходящие через proxySettings и считает первый элемент массива целью маршрутизации по умолчанию. См. Исходящие Xray.
  • mihomo называет их proxies, а групповые типы (select, url-test, fallback, load-balance) вынесены в отдельные группы прокси, а не в типы исходящих.

Исходный код: option/outbound.go:19-23 · v1.13.15 (3708fa1)

Core Tutorial от Argsment