From fb95880d75ca12b6b3adb8d498704ff744fa485e Mon Sep 17 00:00:00 2001
From: Meow <197331664+Meo597@users.noreply.github.com>
Date: Fri, 19 Jun 2026 07:36:02 +0800
Subject: [PATCH] Loopback outbound: Add `sniffing`
https://github.com/XTLS/Xray-core/pull/6326
---
docs/config/outbounds/loopback.md | 23 ++++++++++++++---------
docs/en/config/outbounds/loopback.md | 23 ++++++++++++++---------
docs/ru/config/outbounds/loopback.md | 23 ++++++++++++++---------
3 files changed, 42 insertions(+), 27 deletions(-)
diff --git a/docs/config/outbounds/loopback.md b/docs/config/outbounds/loopback.md
index ff044e43..351fe32c 100644
--- a/docs/config/outbounds/loopback.md
+++ b/docs/config/outbounds/loopback.md
@@ -2,6 +2,15 @@
Loopback 是一个环回出站,用于将流量重新送回 routing 处理,而无需离开核心。
+::: tip 用途
+
+- 在只能指定出站、不能直接写 `balancerTag` 的地方,借由 Loopback 间接使用 balancer
+ 例如链式代理中的 `proxySettings`、`dialerProxy` 和负载均衡中的 `fallbackTag`
+- 流量已经分流过一次后,再按更多条件继续细分
+ 比如由同一组路由规则分流后的 TCP 流量和 UDP 要走不同的出站
+
+:::
+
## OutboundConfigurationObject
`OutboundConfigurationObject` 对应 [`OutboundObject`](../outbound.md) 中的 `settings` 项。
@@ -12,9 +21,10 @@ Loopback 是一个环回出站,用于将流量重新送回 routing 处理,
{
// ...
"protocol": "loopback",
- // [!code focus:3]
+ // [!code focus:4]
"settings": {
- "inboundTag": "TagUseAsInbound"
+ "inboundTag": "TagUseAsInbound",
+ "sniffing": {}
}
}
]
@@ -27,11 +37,6 @@ Loopback 是一个环回出站,用于将流量重新送回 routing 处理,
该标识可以在路由中用于 `inboundTag`,表示该出站中的数据会以这个 tag 重新进入路由,并被对应的规则再次处理。
-::: tip 用途
+> `sniffing`: [SniffingObject](../inbound.md#sniffingobject)
-- 在只能指定出站、不能直接写 `balancerTag` 的地方,借由 Loopback 间接使用 balancer
- 例如链式代理中的 `proxySettings`、`dialerProxy` 和负载均衡中的 `fallbackTag`
-- 流量已经分流过一次后,再按更多条件继续细分
- 比如由同一组路由规则分流后的 TCP 流量和 UDP 要走不同的出站
-
-:::
+流量探测,具体配置和 [入站代理](../inbound.md#sniffingobject) 的相同。默认为不开启。
diff --git a/docs/en/config/outbounds/loopback.md b/docs/en/config/outbounds/loopback.md
index 2c96fd87..c00f2a1e 100644
--- a/docs/en/config/outbounds/loopback.md
+++ b/docs/en/config/outbounds/loopback.md
@@ -2,6 +2,15 @@
Loopback is a loopback outbound used to send traffic back to routing for further processing without leaving the core.
+::: tip Uses
+
+- In places where only an outbound can be specified and `balancerTag` cannot be written directly, Loopback can be used to indirectly use a balancer.
+ For example, `proxySettings` and `dialerProxy` in chained proxies, and `fallbackTag` in load balancing.
+- After traffic has already been routed once, it can be further subdivided based on more conditions.
+ For example, TCP traffic and UDP traffic routed by the same set of routing rules can be sent to different outbounds.
+
+:::
+
## OutboundConfigurationObject
`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](../outbound.md).
@@ -12,9 +21,10 @@ Loopback is a loopback outbound used to send traffic back to routing for further
{
// ...
"protocol": "loopback",
- // [!code focus:3]
+ // [!code focus:4]
"settings": {
- "inboundTag": "TagUseAsInbound"
+ "inboundTag": "TagUseAsInbound",
+ "sniffing": {}
}
}
]
@@ -27,11 +37,6 @@ The inbound tag used when re-entering routing.
This tag can be used as `inboundTag` in routing, indicating that data from this outbound will re-enter routing with this tag and be processed again by the corresponding rules.
-::: tip Uses
+> `sniffing`: [SniffingObject](../inbound.md#sniffingobject)
-- In places where only an outbound can be specified and `balancerTag` cannot be written directly, Loopback lets you use a balancer indirectly.
- For example, `proxySettings` and `dialerProxy` in chained proxies, and `fallbackTag` in load balancing.
-- After traffic has already been routed once, it can be further subdivided using more conditions.
- For example, TCP traffic and UDP traffic split by the same set of routing rules can be sent to different outbounds.
-
-:::
+Traffic sniffing. The specific configuration is the same as that of [Inbound](../inbound.md#sniffingobject). Disabled by default.
diff --git a/docs/ru/config/outbounds/loopback.md b/docs/ru/config/outbounds/loopback.md
index fb7bcdc0..e23bbc39 100644
--- a/docs/ru/config/outbounds/loopback.md
+++ b/docs/ru/config/outbounds/loopback.md
@@ -2,6 +2,15 @@
Loopback — это outbound с возвратом трафика, который отправляет трафик обратно в `routing` для повторной обработки, не выводя его за пределы ядра.
+::: tip Применение
+
+- В местах, где можно указать только outbound и нельзя напрямую задать `balancerTag`, Loopback позволяет косвенно использовать балансировщик.
+ Например, `proxySettings` и `dialerProxy` в цепочках прокси, а также `fallbackTag` при балансировке нагрузки.
+- После того как трафик уже был разделен один раз, его можно дополнительно детализировать по другим условиям.
+ Например, TCP- и UDP-трафик, разделенные одной и той же группой правил routing, можно направить в разные outbound.
+
+:::
+
## OutboundConfigurationObject
`OutboundConfigurationObject` соответствует элементу `settings` в [`OutboundObject`](../outbound.md).
@@ -12,9 +21,10 @@ Loopback — это outbound с возвратом трафика, которы
{
// ...
"protocol": "loopback",
- // [!code focus:3]
+ // [!code focus:4]
"settings": {
- "inboundTag": "TagUseAsInbound"
+ "inboundTag": "TagUseAsInbound",
+ "sniffing": {}
}
}
]
@@ -27,11 +37,6 @@ Loopback — это outbound с возвратом трафика, которы
Этот тег можно использовать в routing как `inboundTag`; это означает, что данные из этого outbound снова войдут в routing с этим тегом и будут повторно обработаны соответствующими правилами.
-::: tip Применение
+> `sniffing`: [SniffingObject](../inbound.md#sniffingobject)
-- В местах, где можно указать только outbound и нельзя напрямую задать `balancerTag`, Loopback позволяет косвенно использовать балансировщик.
- Например, `proxySettings` и `dialerProxy` в цепочках прокси, а также `fallbackTag` в балансировке нагрузки.
-- Если трафик уже был разделен один раз, его можно дополнительно детализировать по другим условиям.
- Например, TCP-трафик и UDP-трафик, разделенные одной и той же группой правил routing, можно направить в разные outbound.
-
-:::
+Распознавание трафика; настройки такие же, как у [входящего прокси](../inbound.md#sniffingobject). По умолчанию отключено.