🔧 使用 V2RayN + Sing-box 解决 DNS 劫持问题(完整配置指南-共两步)
第一步:切换 sing-box 内核
前往 V2RayN → 设置 → 参数设置 → Core 类型设置,
将所有核心(Vmess/VLESS/Trojan/Socks 等)统一设置为 sing-box,确保所有代理流量都通过 sing-box 内核传输与管理。
第二步:配置 Sing-box DNS(防止被本地劫持)
进入 V2RayN → DNS设置 → sing-box DNS设置,将 左侧 HTTP/SOCKS 的 DNS 设置 替换为如下内容(右侧 TUN 模式配置可忽略,如未启用 TUN 模式):
{
"servers": [
{
"tag": "remote",
"address": "tcp://8.8.8.8",
"strategy": "prefer_ipv6",
"detour": "proxy"
},
{
"tag": "local",
"address": "https://dns.alidns.com/dns-query",
"strategy": "prefer_ipv6",
"detour": "direct",
"address_resolver": "remote"
},
{
"tag": "block",
"address": "rcode://success"
}
],
"rules": [
{
"rule_set": [
"geosite-cn"
],
"server": "local"
},
{
"rule_set": [
"geosite-category-ads-all"
],
"server": "block"
}
],
"final": "remote"
}🧠 配置讲解
🔄 DNS 查询过程详解
以你访问一个中国网站为例,例如 www.baidu.com,查询流程如下:
www.baidu.com属于geosite-cn→ 使用"server": "local"。"local"指向的是阿里 DoH 地址(https://dns.alidns.com/dns-query)。要访问
dns.alidns.com本身,需要解析这个域名 → 交给"address_resolver": "remote"。"remote"使用 8.8.8.8,通过代理查询(即 DNS 查询被保护,不走本地网络)。得到
www.baidu.com的 IP(国内地址) → routing 规则判断为中国 IP → 流量走 direct(直连)。
总结一句话:
国内域名走阿里加密 DoH 查询,阿里 DNS 本身也由远端查询(避免污染),整个链路避开了本地运营商的劫持与污染。
🔒 为什么这样配置能彻底防止 DNS 劫持?
本地运营商劫持的目标是传统 UDP 53 端口查询(如
223.5.5.5);使用 HTTPS 加密 DNS(DoH)+ 远程解析 DNS 服务器地址,彻底避免泄漏和重定向;
你即便处于强干扰网络,Sing-box 的 DNS 流量也走了代理,不会被干扰;
配合广告域名 block,可显著减少弹窗、跟踪、遥测等连接失败日志刷屏问题。