Исходящие
outbounds — массив вышестоящих целей. Каждая запись — плоский объект: конверт type / tag плюс собственные поля выбранного типа на том же уровне. Правила «первый исходящий — по умолчанию» здесь нет: не совпавший ни с одним правилом трафик уходит в route.final.
Конверт
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
type | string | — | direct | block | selector | urltest | socks | http | shadowsocks | vmess | trojan | naive | tor | ssh | shadowtls | vless | anytls | hysteria | tuic | hysteria2 | Тип исходящего. Определяет, в какую структуру параметров декодируется остальная часть объекта. Незарегистрированное значение приводит к ошибке запуска "unknown outbound type". |
tag | string | — | — | Уникальное имя этого исходящего. На него ссылаются правила маршрутизации, 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; поля располагаются на том же плоском уровне, что и конверт.
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
detour | string | — | — | Устанавливать соединения через другой исходящий, указанный по его тегу. |
bind_interface | string | — | — | Сетевой интерфейс, к которому привязываются исходящие соединения. |
inet4_bind_address | *badoption.Addr | — | — | Привязываемый исходный IPv4-адрес. |
inet6_bind_address | *badoption.Addr | — | — | Привязываемый исходный IPv6-адрес. |
bind_address_no_port | bool | false | true | false | Устанавливать IP_BIND_ADDRESS_NO_PORT при привязке — откладывает выделение порта до connect. Только Linux. |
protect_path | string | — | — | Путь к Unix-сокету защитного демона Android VpnService; перед установкой соединения туда передаётся fd каждого сокета. |
routing_mark | FwMark | — | — | SO_MARK (fwmark), устанавливаемый на исходящих сокетах. Только Linux. |
reuse_addr | bool | false | true | false | Установить SO_REUSEADDR на исходящих сокетах. |
netns | string | — | — | Сетевое пространство имён, из которого устанавливаются соединения (имя или путь). Только Linux. |
connect_timeout | badoption.Duration | — | — | Тайм-аут установки TCP-соединения. Строка длительности, например "5s". |
tcp_fast_open | bool | false | true | false | Включить TCP Fast Open для исходящих соединений. |
tcp_multi_path | bool | false | true | false | Включить Multipath TCP для исходящих соединений. |
disable_tcp_keep_alive | bool | false | true | false | Отключить TCP keep-alive для исходящих соединений. |
tcp_keep_alive | badoption.Duration | — | — | Период простоя до начала keep-alive-проб. Строка длительности. |
tcp_keep_alive_interval | badoption.Duration | — | — | Интервал между keep-alive-пробами. Строка длительности. |
udp_fragment | *bool | false | true | false | Разрешить фрагментацию UDP-пакетов крупнее MTU вместо их отбрасывания. |
domain_resolver | *DomainResolveOptions | — | — | Какой DNS-сервер (по тегу) разрешает адрес сервера: либо просто строка-тег, либо объект с переопределениями для конкретного подключения. |
network_strategy | *NetworkStrategy | — | — | Стратегия выбора среди доступных сетей (например, default / hybrid / fallback). Только для платформенных сборок с поддержкой информации о сетях. |
network_type | badoption.Listable[InterfaceType] | — | — | Предпочитаемые типы сетей (wifi, cellular, ethernet, other) при использовании network_strategy. |
fallback_network_type | badoption.Listable[InterfaceType] | — | — | Типы сетей, на которые выполняется переход, когда предпочитаемые недоступны. |
fallback_delay | badoption.Duration | — | — | Задержка перед запуском резервного подключения (в стиле Happy Eyeballs). Строка длительности, например "300ms". |
domain_strategy | DomainStrategy | — | prefer_ipv4 | prefer_ipv6 | ipv4_only | ipv6_only | Стратегия выбора семейства адресов при разрешении домена сервера. |
Исходный код: option/outbound.go:67-93 · зафиксировано на v1.13.15 (3708fa1)
Общие поля сервера (ServerOptions)
Протокольные исходящие, подключающиеся к фиксированному серверу, встраивают ServerOptions.
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
server | string | — | — | Имя хоста или IP сервера. |
server_port | uint16 | — | — | Порт сервера. |
Исходный код: option/outbound.go:148-151 · зафиксировано на v1.13.15 (3708fa1)
Минимальный пример
{
"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)
