ECH and Sniffing: Explaining when to block QType 65 (#767)

This commit is contained in:
Meow
2025-12-01 08:49:42 +00:00
committed by GitHub
parent 35f4c6b65c
commit d24233eb73
2 changed files with 12 additions and 11 deletions
+9 -8
View File
@@ -75,17 +75,18 @@
> `sniffing`: [SniffingObject](#sniffingobject)
流量探测主要作用于在透明代理等用途.
比如一个典型流程如下:
流量探测主要作用于在透明代理等用途,比如一个典型流程如下:
1. 如有一个设备上网,去访问 abc.com,首先设备通过 DNS 查询得到 abc.com 的 IP 是 1.2.3.4,然后设备会向 1.2.3.4 去发起连接.
2. 如果不设置嗅探,Xray 收到的连接请求是 1.2.3.4,并不能用于域名规则的路由分流.
3. 当设置了 sniffing 中的 enable 为 true,Xray 处理此连接的流量时,会从流量的数据中,嗅探出域名,即 abc.com
4. Xray 会把 1.2.3.4 重置为 abc.com.路由就可以根据域名去进行路由的域名规则的分流
1. 如有一个设备上网,去访问 abc.com,首先设备通过 DNS 查询得到 abc.com 的 IP 是 1.2.3.4, 然后设备会向 1.2.3.4 去发起连接。
2. 如果不设置嗅探,Xray 收到的连接请求是 1.2.3.4, 并不能用于域名规则的路由分流。
3. 当设置了 sniffing 中的 enable 为 true,Xray 处理此连接的流量时,会从流量的数据中,嗅探出域名,即 abc.com。
4. Xray 会把 1.2.3.4 重置为 abc.com。路由就可以根据域名去进行路由的域名规则的分流。
因为变成了一个向 abc.com 请求的连接, 就可以做更多的事情, 除了路由域名规则分流, 还能重新做 DNS 解析等其他工作.
因为变成了一个向 abc.com 请求的连接,就可以做更多的事情,除了路由域名规则分流,还能重新做 DNS 解析等其他工作。
当设置了 sniffing 中的 enable 为 true, 还能嗅探出 bittorrent 类型的流量, 然后可以在路由中配置"protocol"项来设置规则处理 BT 流量, 比如服务端用来拦截 BT 流量, 或客户端固定转发 BT 流量到某个 VPS 去等.
当设置了 sniffing 中的 enable 为 true,还能嗅探出 bittorrent 类型的流量,然后可以在路由中配置 "protocol" 项来设置规则处理未加密的 BT 流量,比如服务端用来拦截未加密的 BT 流量,或客户端固定转发 BT 流量到某个 VPS 去等。
注意:较新的浏览器可能使用 ECH 加密 Client Hello, 此时 Xray 只能看到 Outer Hello 中的域名,可能需要考虑劫持 DNS 或者手动在浏览器配置关闭 ECH.
### SniffingObject
+3 -3
View File
@@ -38,10 +38,10 @@ DNS 是一个出站协议,主要用于拦截和转发 DNS 查询。
> `blockTypes`: array
为一个int数组,屏蔽数组中的查询类型,如 `"blockTypes":[65,28]` 表示屏蔽type 65(HTTPS) 和 28(AAAA)
为一个 int 数组,屏蔽数组中的查询类型,如 `"blockTypes": [65,28]` 表示屏蔽 type 65(HTTPS) 和 28(AAAA). 常见用途包括屏蔽 type 65 以阻止浏览器发起 ECH.
由于 `nonIPQuery` 默认 drop 所有非 A 和 AAAA 查询, 所以需要将其设置为 skip 本选项才能进一步发挥作用。当然也可以不修改,单纯用来屏蔽A或者AAAA来屏蔽 ipv4/ipv6 查询, 但非常不推荐那么做,建议在内置DNS的 `queryStrategy` 对相关内容进行设置。
由于 `nonIPQuery` 默认 drop 所有非 A 和 AAAA 查询, 所以需要将其设置为 skip 本选项才能进一步发挥作用。当然也可以不修改,单纯用来屏蔽 A 或者 AAAA 来屏蔽 IPv4/IPv6 查询,但非常不推荐那么做,建议在内置 DNS 的 `queryStrategy` 对相关内容进行设置。
注:当只使用 `blockTypes` 屏蔽 A 或 AAAA 时, 如果 `nonIPQuery` 设置为了 `reject` 那么屏蔽方式也会是返回 DNS reject 而不是丢弃
注意:当只使用 `blockTypes` 屏蔽 A 或 AAAA 时, 如果 `nonIPQuery` 设置为了 `reject` 那么屏蔽方式也会是返回 DNS reject 而不是丢弃。
## DNS 配置实例 <Badge text="WIP" type="warning"/>