Skip to content

Исходящие

outbounds — массив вышестоящих целей. Каждый элемент — один OutboundDetourConfig: имя протокола, объект settings конкретного протокола и необязательные блоки транспорта (streamSettings), цепочек (proxySettings) и мультиплексирования (mux). Первый элемент массива — исходящий по умолчанию: трафик, не совпавший ни с одним правилом маршрутизации, направляется в него.

Параметры

ПолеТипПо умолчаниюДопустимые значенияОписание
protocolstringfreedom | direct | blackhole | block | loopback | http | socks | shadowsocks | vless | vmess | trojan | hysteria | dns | wireguardКаким обработчиком исходящих устанавливать соединение. Имя приводится к нижнему регистру перед поиском в реестре. `direct` — псевдоним `freedom`, `block` — псевдоним `blackhole`.
sendThrough*string0.0.0.0Локальный адрес источника для исходящих соединений. Принимает IP, CIDR (для каждого соединения берётся случайный адрес внутри него) или специальные домены `origin` / `srcip`.
tagstringУникальное имя этого исходящего. На него ссылаются правила маршрутизации, балансировщики, цепочки proxySettings и счётчики статистики.
settings*json.RawMessageОбъект настроек конкретного протокола; его декодирует обработчик, выбранный полем protocol. Формат для каждого протокола описан на соответствующей странице.
streamSettings*StreamConfigТранспорт и безопасность исходящих соединений (raw / ws / grpc / xhttp…, tls / reality). См. страницы «Транспорт» и «TLS».
proxySettings*ProxyConfigПустить этот исходящий цепочкой через другой, указанный по тегу. Поля — ниже.
mux*MuxConfigМультиплексирование Mux поверх нижележащего соединения. Поля — ниже.
targetStrategystringAsIsAsIs | UseIP | UseIPv4 | UseIPv6 | UseIPv4v6 | UseIPv6v4 | ForceIP | ForceIPv4 | ForceIPv6 | ForceIPv4v6 | ForceIPv6v4Как разрешать целевой домен перед соединением (сопоставляется без учёта регистра). Use* предпочитает указанные семейства с откатом, Force* отката не допускает. Неизвестное значение — ошибка при запуске.

Исходный код: infra/conf/xray.go:213-222 · зафиксировано на v26.7.28 (5ca6f4b)

Цепочки (proxySettings)

ПолеТипПо умолчаниюДопустимые значенияОписание
tagstringТег исходящего, через который ретранслировать трафик.
transportLayerboolfalsetrue | falseСтроить цепочку на транспортном уровне, а не на прикладном — эквивалент sockopt.dialerProxy, поэтому совмещать их нельзя.

Исходный код: infra/conf/transport_internet.go:312-317 · зафиксировано на v26.7.28 (5ca6f4b)

Мультиплексирование (mux)

ПолеТипПо умолчаниюДопустимые значенияОписание
enabledboolfalsetrue | falseВключить Mux для TCP-трафика через этот исходящий.
concurrencyint16Максимум одновременных потоков на одно физическое соединение. Отрицательное значение полностью отключает Mux, включая путь XUDP.
xudpConcurrencyint16Отдельный предел параллельности для XUDP-соединений (UDP поверх Mux).
xudpProxyUDP443stringrejectreject | allow | skipЧто делать с проксируемым трафиком UDP/443 (QUIC) внутри XUDP: отклонить (reject), разрешить (allow) или пропустить Mux (skip).

Исходный код: infra/conf/xray.go:102-107 · зафиксировано на v26.7.28 (5ca6f4b)

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

json
{
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "example.com",
            "port": 443,
            "users": [{ "id": "uuid", "encryption": "none" }]
          }
        ]
      },
      "streamSettings": { "security": "tls" }
    },
    { "tag": "direct", "protocol": "freedom", "settings": {} },
    { "tag": "block", "protocol": "blackhole", "settings": {} }
  ]
}

Примечания

  • Порядок важен: маршрутизация отправляет несовпавший трафик в первый исходящий. Держите прокси или freedom, которые должны быть умолчанием, на индексе 0.
  • proxySettings.tag конфликтует с streamSettings.sockopt.dialerProxy — конфигурация с обоими отклоняется при запуске. При transportLayer: true цепочка внутренне переписывается именно в этот sockopt.
  • sendThrough с CIDR выбирает для каждого соединения случайный адрес источника внутри диапазона — полезно с маршрутизируемым префиксом IPv6.
  • Протокол dns — особый исходящий, перехватывающий DNS-запросы; см. DNS.

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

  • sing-box моделирует ту же концепцию как плоский объект на каждую запись (type + tag + поля на одном уровне) и не имеет неявного правила «первый — по умолчанию»: умолчание задаётся route.final. См. Исходящие sing-box.
  • mihomo называет их proxies и всегда направляет трафик через группы прокси или правила, а не через упорядоченное умолчание.

Исходный код: infra/conf/xray.go:213-222 · v26.7.28 (5ca6f4b)

Core Tutorial от Argsment