Refine domainStrategy

This commit is contained in:
Meow
2026-09-12 06:38:54 +08:00
parent ab204432b9
commit 46c680b71b
9 changed files with 90 additions and 42 deletions
+14 -5
View File
@@ -4,20 +4,29 @@
Xray 内置的 DNS 模块,主要有三大用途:
- 在路由阶段,解析域名为 IP, 并且根据域名解析得到的 IP 进行规则匹配以分流。<br>
是否解析域名用以分流,与路由模块中 `routing.domainStrategy` 的值有关,只有在设置以下两种值时,才会使用内置 DNS 服务器进行 DNS 查询:
- "IPIfNonMatch", 请求目标是域名且不附带 IP 时,先用其它条件进行一轮匹配,若本轮没有命中任何一条路由规则,则对这个域名使用内置 DNS 服务器进行 DNS 查询,并且使用查询返回的 IP 地址再重新进行一轮路由匹配。
- "IPOnDemand", 请求目标是域名且不附带 IP 时,当路由匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配。
- 在路由阶段,解析域名为 IP, 并且根据域名解析得到的 IP 进行规则匹配以分流。
::: details 详细说明
是否解析域名用以 IP 分流,取决于 `routing.domainStrategy` 的值,只有在设置以下两种值时,才有可能使用内置 DNS 服务器进行 DNS 查询:
- `"IPIfNonMatch"`:第一轮路由匹配未命中任何规则时,只要存在包含 `ip` 条件的规则且目标包含域名,就会使用内置 DNS 解析域名。
- `"IPOnDemand"`:只要目标包含域名,并遇到包含 `ip` 条件的规则,就会使用内置 DNS 解析域名。
- 在出站阶段,解析目标域名,用于连接或发送给远端代理服务器:
:::
- 在出站阶段,解析目标域名,用于连接或发送给远端代理服务器。
::: details 详细说明
- 如在 VLESS 出站中,将 `targetStrategy` 设置为 `UseIP`,会先通过本地的内置 DNS 模块解析被代理请求的目标域名,再将解析得到的 IP 发给远端代理服务器。
- 如在 VLESS 出站中,将 `sockopt.domainStrategy` 设置为 `UseIP`,会通过内置 DNS 模块解析 VLESS 服务器的域名,再连接解析得到的 IP。
- 如在 Freedom 出站中,将 `sockopt.domainStrategy` 设置为 `UseIP`,会通过内置 DNS 模块解析请求的目标域名,再连接解析得到的 IP。
- 如在 Wireguard 出站中,协议不允许传递域名作为目标,可选用内置 DNS 模块解析为 IP。
:::
- TUN/透明代理时通过路由和 DNS 出站组合,以劫持 DNS 流量到此模块;或利用 [Tunnel](./inbounds/tunnel.md) 直接对外暴露 53 端口充当递归 DNS 服务器。
::: details 详细说明
- 只支持最基本的 IP 查询(A 和 AAAA 记录),CNAME 记录将会重复查询直至返回 A/AAAA 记录为止。其它查询不会进入内置 DNS 服务器,而是根据你在出站中的配置可以丢弃或透传给其它服务器。
:::
## DNS 处理流程
域名将先执行 Hosts 映射检查(详见 `hosts` 字段),若没有查出需要的 IP,则继续使用 DNS 服务器进行查询。