先确认域名由谁解析,再配置国内域名优先使用国内 DNS、其他域名使用经代理访问的加密 DNS。本文面向需要修改 V2Ray 或 Xray 配置的用户,提供 DNS 与路由配套片段,并说明 v2rayN 中的应用方式、回退行为及验证边界,避免把“填了 DoH 地址”误当成所有应用都已接管解析。
一、先区分应用解析、内核解析和服务端解析
DNS 设置首先要解决的是“查询是否经过这里”。应用把域名交给代理时,内核可能为了路由判断或直连而解析,也可能把域名交给代理服务器,由服务端解析。应用若先在本机把域名变成 IP,再把 IP 交给代理,客户端的 dns 段不一定参与这次查询。
这条流程描述的是需要本地解析的分支,不代表每次代理连接都要先查询本地 DNS。使用域名规则即可选出代理出站时,目标域名可能直接送到远端。此时,本地 DNS 日志没有该域名,不足以说明配置失效。
- 系统 DNS:由操作系统网络设置指定。只开启系统代理,不会自动把所有系统 DNS 请求交给 V2Ray。
- 内核 DNS:由配置中的
dns定义,供内核的相关解析逻辑使用。它不是自动监听系统 53 端口的服务。 - 浏览器安全 DNS:可能由浏览器自己通过 HTTPS 查询,绕开操作系统解析器。
- 服务端 DNS:代理出站把域名送到远端后,解析结果取决于远端的 DNS 与网络环境。
二、servers、domains、queryStrategy 分别控制什么
servers 定义可用解析服务器;服务器对象中的 domains 定义优先匹配哪些域名;queryStrategy 控制查询的地址族。三者分别解决“问谁”“优先问谁”和“要哪种地址”,不要把它们与网站连接的出站规则混为一项。
国内优先解析
- address
223.5.5.5- port
53- domains
geosite:cn- skipFallback
true
优先处理命中国内域名集合的查询,不参与未匹配域名的常规回退。
其余域名解析
- address
https://1.1.1.1/dns-query- 传输
- HTTPS,默认端口 443
- domains
- 不指定,作为回退解析服务器
- 查询策略
- 继承顶层
UseIPv4
还需给该 DoH 目标配置代理路由,不能只填写解析地址。
domains 不是“只有这些域名能使用此服务器”的访问控制表。匹配域名通常获得优先查询资格,其他域名仍可能通过回退机制使用某台服务器。这里给国内服务器加上 skipFallback: true,就是为了避免它进入未匹配域名的回退列表;这不等于关闭全部 DNS 回退。
| 设置值 | 解析行为 | 使用前提 |
|---|---|---|
UseIP | 允许查询 IPv4 与 IPv6 地址 | 确认实际使用的出站具备所需地址族的连通性 |
UseIPv4 | 只查询 IPv4 地址 | 适合先隔离 IPv6 问题的排查阶段 |
UseIPv6 | 只查询 IPv6 地址 | 需要可用的 IPv6 网络与对应目标地址 |
本文使用 UseIPv4 缩小排查范围,不表示 IPv4 一定更快。若网络与节点的 IPv6 均正常,可以改为 UseIP 再验证。它只影响这套内置 DNS 的查询,不会全局禁用系统 IPv6。
三、境内外分流解析的 dns 配置片段
下面是配置顶层的 dns 片段,不是可单独运行的完整客户端配置。合并到现有 JSON 时,应替换原有同名字段,不能在同一对象里重复添加两个 dns。使用 geosite:cn 前,还要确认运行目录中的域名规则数据可用。
{
"dns": {
"queryStrategy": "UseIPv4",
"servers": [
{
"address": "223.5.5.5",
"port": 53,
"domains": [
"geosite:cn"
],
"skipFallback": true
},
{
"address": "https://1.1.1.1/dns-query"
}
]
}
}
- 命中
geosite:cn的域名,优先交给223.5.5.5查询,以保留国内服务常见的就近解析结果。 - 没有命中优先匹配项的域名,使用回退列表中的 DoH 服务器;国内服务器因
skipFallback被排除。 - 国内优先查询失败时,在未额外关闭回退的情况下,仍可能尝试 DoH。这个片段表达的是优先级,而非绝对隔离。
若业务要求国内域名失败后也绝不向其他解析器查询,需要按实际内核支持情况设计严格的回退策略,不能靠调整数组顺序猜测行为。V2Ray 与 Xray 的扩展字段及支持范围并非始终相同,复制其他内核的高级字段前先检查当前内核文档与启动日志。
这里采用带 IP 的 DoH 地址,减少“先解析 DNS 服务器域名”的引导依赖。若换成带域名的 DoH 服务,还要安排该域名的初始解析,避免解析器为了找到自身而循环等待。DoH 的 TLS 证书验证应保留,不能通过关闭验证来处理连接错误。
四、给 DNS 查询本身配置出站路由
加密解析与代理传输是两件事。DoH 负责保护到解析服务器这一段查询内容;路由决定连接解析服务器时走直连还是代理。若远端 DoH 在当前网络无法直连,只填 URL 仍会超时。下例将 DoH 的目标 IP 送到代理,将国内 DNS 送到直连。
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"ip": [
"1.1.1.1/32"
],
"port": "443",
"outboundTag": "proxy"
},
{
"type": "field",
"ip": [
"223.5.5.5/32"
],
"port": "53",
"outboundTag": "direct"
},
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
}
]
}
}
proxy 与 direct 是此例约定的出站标签,必须与现有 outbounds 中的 tag 完全一致。把这几条规则合并到现有路由靠前的位置,不要覆盖已有的完整规则。未匹配流量仍由后续规则或默认出站处理,本片段没有替你定义默认出站。
- 普通 HTTPS DNS 地址:本例的
https://查询通过内核的路由调度处理,因此配套设置 DoH 目标路由。 - 带本地直连语义的地址形式:例如支持该形式的内核中的
https+local://,其行为不同,不应直接套用本例的代理路由预期。 - 代理节点使用域名:还要先保证节点地址能独立解析,否则可能出现“访问远端 DNS 需要代理,建立代理又需要该 DNS”的依赖环。
routing.domainStrategy 与 dns.queryStrategy 不是同一个设置。这里的 AsIs 表示路由不为 IP 规则主动解析域名;如果改为 IPIfNonMatch,则会在域名规则未匹配时尝试解析再匹配 IP 规则。需要按 IP 分流时再启用,不要为了“让 DNS 生效”盲目更改它。
五、在 v2rayN 中应用并验证
先备份当前配置,再修改 DNS。v2rayN 会根据界面设置生成内核配置,直接编辑临时生成文件可能在切换节点或重启内核后被覆盖。常见界面入口为「设置」→「DNS 设置」;不同界面版本的栏目可能调整,应确认正在编辑所用内核对应的 DNS 设置,而不是另一个内核的字段。
- 确认内核与配置来源。检查当前节点使用的内核。本文 JSON 面向 V2Ray/Xray 配置结构;其他内核的 DNS 字段不能直接照搬。
- 分别保存 DNS 与路由。DNS 编辑区域只填写该区域要求的对象,不要把整个顶层 JSON 塞进单个服务器输入框。路由标签以实际生成配置为准。
- 重启内核并看启动日志。先处理 JSON 语法、未知字段、规则数据缺失等错误,再测试网页。内核没有成功启动时,网络测试没有比较意义。
- 控制测试变量。选一个国内服务域名和一个需要代理访问的域名,记录应用是否使用自身的安全 DNS。修改后重启测试应用,避免复用已有连接。
- 观察连接路径。必要时临时提高日志级别,检查到
1.1.1.1:443的连接是否命中代理出站,到223.5.5.5:53的查询是否直连;排查后恢复原日志级别。
判断依据:先确认查询路径,再比较解析结果
只看到网页打开,不能证明分流正确。应先确认查询确实进入预期解析器,再确认 DoH 连接经过代理;只有这两项成立,后续的解析结果对比才有意义。
在 Windows 运行 ipconfig /flushdns 可以清除系统 DNS 缓存,但不会同时清除浏览器自身缓存和内核全部缓存。单独执行 nslookup 通常测试的是系统指定解析器,不能用它直接证明内核 dns 段已经生效。
六、防 DNS 污染的边界与常见故障
防污染的核心是让目标域名的查询走到可信解析器,并保护查询传输过程。国内 UDP DNS 仍是明文查询;本文保留它是为了国内服务的解析适配,不代表该分支具备与 DoH 相同的传输保护。若该分支出现异常,应改用当前内核支持且网络可达的加密解析方案,再重新验证路由。
填了 DoH,为什么还是提示解析超时?
先检查代理节点是否可用,再看 1.1.1.1:443 是否命中代理规则。若节点地址本身是域名,还要排除引导解析依赖环。日志出现证书时间错误时,先校准系统时间,不要关闭证书验证。
国内网站变慢,是不是分流没有命中?
先确认域名是否被当前 geosite:cn 数据覆盖,再检查启动日志中有无规则文件加载错误。网站还可能请求多个资源域名,应逐个查看,不能只根据地址栏中的主域名判断所有请求的解析路径。
DNS 检测网页显示了其他地区,算泄漏吗?
不一定。检测页面通常反映处理测试查询的递归解析器出口,并不直接等于客户端所在地。核对浏览器安全 DNS、服务端解析和本地内核解析三条路径,再判断是否有本应受保护的查询从本地明文发出。
已有正确 IP,网页为什么仍然打不开?
DNS 只负责返回地址,不保证 TCP、TLS 或后续传输可用。确认解析结果后,继续检查出站规则、节点连接和目标端口。若只在启用 IPv6 后失败,可暂用 UseIPv4 做对照测试,再处理 IPv6 连通性。
同一域名由不同解析器返回不同地址,也不一定是污染。内容分发网络可能根据解析器位置和网络策略返回不同节点;反过来,返回一个看似合理的公网地址,也不能证明解析结果可信。不要仅凭两个地址不一致就写静态映射,静态地址可能过期,还会绕过正常的服务调度。
- 每次只更改一个变量:解析服务器、查询地址族或出站路由,避免同时修改后无法定位原因。
- 临时调试日志可能包含访问域名与连接信息,分享日志前应删除订阅地址、认证信息和其他敏感内容。
- 最终检查应同时覆盖国内访问、代理访问和内核重启后的配置持久性,而不只是一次网页刷新。