Исходящие подключения
Исходящие подключения используются для отправки данных. Доступные протоколы см. в разделе Исходящие протоколы.
OutboundObject
OutboundObject соответствует дочернему элементу поля outbounds в конфигурационном файле.
TIP
Первый элемент в списке используется как основной исходящий узел.
Если совпадений с правилами маршрутизации нет или ни одно правило не сработало, трафик отправляется через основной исходящий узел.
{
"outbounds": [
{
"sendThrough": "0.0.0.0",
"protocol": "название протокола",
"settings": {},
"tag": "тег",
"streamSettings": {},
"proxySettings": {
"tag": "another-outbound-tag",
"transportLayer": false
},
"mux": {},
"targetStrategy": "AsIs"
}
]
}2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sendThrough: address
IP-адрес, используемый для отправки данных.
Этот параметр используется, если на хосте настроено несколько IP-адресов.
Значение по умолчанию - "0.0.0.0".
Разрешается указывать блок IPv6 CIDR (например, 114:514:1919:810::/64).
Xray будет использовать случайный IP-адрес из этого блока для установления исходящих соединений.
Необходимо правильно настроить сетевое подключение, таблицу маршрутизации и параметры ядра, чтобы разрешить Xray привязываться к любому IP-адресу из этого блока.
Специальное значение origin — при использовании этого значения запросы будут отправляться с IP-адреса, через который было установлено соединение с локальной машиной.
Например, если на машине есть целый блок IPv4-адресов 11.4.5.0/24 и прослушивается 0.0.0.0 (все IPv4 и IPv6 адреса на сетевой карте), и клиент подключается к локальной машине через 11.4.5.14, то исходящие запросы также будут отправляться через 11.4.5.14. Если же клиент использует 11.4.5.10 для подключения к локальной машине, то исходящие запросы будут отправляться через 11.4.5.10. То же самое относится и к случаям, когда на машине есть целый блок/несколько IPv6-адресов.
Как и в описании для inbound, из-за особенностей UDP как протокола без установления соединения, Xray не может определить исходный целевой IP-адрес запроса, поступающего в ядро (например, в рамках одного и того же QUIC-соединения он может даже меняться), поэтому эта функция не может работать.
protocol: "blackhole" | "dns" | "freedom" | "http" | "loopback" | "shadowsocks" | "socks" | "trojan" | "vless" | "vmess" | "wireguard"
Название протокола соединения. Список доступных протоколов см. в разделе Исходящие протоколы в меню слева.
settings: OutboundConfigurationObject
Конкретные настройки зависят от протокола.
См. описание OutboundConfigurationObject для каждого протокола.
tag: string
Тег этого исходящего подключения, используемый для идентификации этого подключения в других настройках.
DANGER
Если это поле не пустое, его значение должно быть уникальным среди всех тегов.
streamSettings: StreamSettingsObject
Тип транспорта (transport) - это способ взаимодействия текущего узла Xray с другими узлами.
proxySettings: ProxySettingsObject
Конфигурация Outbound-прокси.
mux: MuxObject
Настройки Mux. Mux позволяет мультиплексировать несколько TCP-соединений через одно TCP-соединение. У Mux есть дополнительная функция: передача UDP-соединений как XUDP.
targetStrategy: "AsIs" | "UseIP" | "UseIPv6v4" | "UseIPv6" | "UseIPv4v6" | "UseIPv4" | "ForceIP" | "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4"
Если при исходящем подключении отправляется запрос к доменному имени, эта опция управляет тем, будет ли оно разрешено (и каким образом) в IP-адрес для отправки.
Значение по умолчанию — AsIs, то есть отправка на удаленный сервер «как есть». Значения всех параметров примерно соответствуют domainStrategy в sockopt.
TIP
Здесь контролируются проксируемые запросы. Если адресом исходящего прокси-сервера является доменное имя, и для этого домена необходимо выбрать стратегию разрешения, следует настроить domainStrategy в sockopt.
ProxySettingsObject
{
"tag": "another-outbound-tag",
"transportLayer": false
}2
3
4
tag: string
Если указан тег другого Outbound, данные, исходящие из этого Outbound, будут перенаправлены через указанный Outbound.
DANGER
Эта опция конфликтует с SockOpt.dialerProxy, используйте только один из этих вариантов по необходимости.
По умолчанию этот метод перенаправления не проходит через транспортный уровень (REALITY/XHTTP/gRPC...), то есть streamSettings данного Outbound не будут иметь эффекта.
Если вам требуется перенаправление с поддержкой транспортного уровня, используйте SockOpt.dialerProxy или установите transportLayer в true.
transportLayer: true | false
true преобразует эту настройку в SockOpt.dialerProxy для поддержки перенаправления на транспортном уровне. По умолчанию false (преобразование не выполняется).
MuxObject
Функция Mux позволяет мультиплексировать несколько TCP-соединений по одному TCP-соединению.
Подробнее см. Mux.Cool.
Mux предназначен для сокращения задержек при установлении TCP-соединений, а не для увеличения пропускной способности.
Использование Mux при просмотре видео, загрузке файлов или тестировании скорости обычно приводит к обратным результатам.
Mux нужно включать только на клиенте, сервер автоматически адаптируется.
MuxObject соответствует полю mux в OutboundObject.
{
"enabled": true,
"concurrency": 8,
"xudpConcurrency": 16,
"xudpProxyUDP443": "reject"
}2
3
4
5
6
enabled: true | false
Включить пересылку запросов через Mux.
Значение по умолчанию - false.
concurrency: number
Максимальное количество одновременных соединений. Минимальное значение 1, максимальное значение 128. Если параметр опущен или задан 0, то используется значение 8, любые значения больше 128 будут рассматриваться как 128, так как после достижения соединением максимального числа переиспользований (128) ему больше не будут назначаться новые подсоединения. .
Это значение определяет максимальное количество дочерних соединений, которые могут быть мультиплексированы по одному TCP-соединению.
Например, если concurrency равен 8, то при отправке 8 TCP-запросов клиентом Xray создаст только одно фактическое TCP-соединение, и все 8 запросов клиента будут передаваться по этому соединению.
Когда во всех Mux-соединениях исчерпан лимит дочерних соединений, ядро создаст новое соединение для их обслуживания. Если за короткий промежуток времени возникает большое количество одновременных дочерних соединений, число которых затем постепенно снижается, внутренний планировщик ядра будет стремиться распределять запросы между двумя соединениями, используя их попеременно, и оставит остальные соединения простаивать. После того как все дочерние соединения на простаивающих соединениях завершатся естественным образом, они будут закрыты для экономии ресурсов. Если общее количество дочерних соединений продолжает длительное время оставаться ниже значения concurrency, то после того как одно из соединений достигнет максимального числа переиспользований, ядро вернется к режиму одного соединения.
TIP
Если указать отрицательное значение, например -1, трафик TCP не будет проходить через Mux.
xudpConcurrency: number
Использовать новый агрегированный туннель XUDP (т.е. другое Mux-соединение) для проксирования UDP-трафика.
Укажите максимальное количество одновременных дочерних UoT-подключений.
Минимальное значение - 1, максимальное значение - 1024.
Если этот параметр опущен или равен 0, UDP-трафик будет использовать тот же путь, что и TCP-трафик (традиционное поведение).
TIP
Если указать отрицательное значение, например -1, трафик UDP не будет проходить через Mux.
Будет использоваться исходный способ передачи UDP-трафика для данного протокола прокси.
Например, Shadowsocks будет использовать нативный UDP, а VLESS будет использовать UoT.
xudpProxyUDP443: string
Управление обработкой проксируемого трафика UDP/443 (QUIC) в Mux:
- По умолчанию
reject- отклонять трафик (обычно браузеры автоматически переключаются на TCP HTTP/2). allow- разрешить трафик через Mux.skip- не использовать Mux для трафика UDP/443.
Будет использоваться исходный способ передачи UDP-трафика для данного протокола прокси.
Например,Shadowsocksбудет использовать нативный UDP, аVLESSбудет использовать UoT.