sing-box的DNS与route(简化文字版本)

🧠 一、先建立“分层模型” 分成 3 层系统: 🟦 第1层:DNS 解析层(只负责“把域名变成IP”) dns.rules[] dns.servers[].detour dns.servers[].domain_resolver dns.final 🟩 第2层:连接决策层(决定“流量走哪条路”) route.rules[] route.final 🟥 第3层:拨号执行层(真正“连出去”) outbounds[].detour outbounds[].domain_resolver route.default_domain_resolver 👉 一句话理解: DNS层:查地址 Route层:选路径 Outbound层:怎么走 🔥 二、最核心一条链路(把所有东西串起来) 我们用一个完整例子👇 🎯 场景 访问: youtube.com 🧩 STEP 1️⃣:DNS 查询(进入 dns.rules) 请求:youtube.com 👉 匹配 dns.rules → server = remote_dns 🧩 STEP 2️⃣:处理 DNS server 自身 remote_dns = cloudflare-dns.com 👉 用 dns.servers[].domain_resolver 优先级: dns.servers[].domain_resolver > route.default_domain_resolver 👉 得到: cloudflare-dns.com → IP 🧩 STEP 3️⃣:DNS 查询如何发出去? 👉 用: ...

2026年4月3日 · 2 分钟 · 冇文化

sing-box的DNS与route

sing-box 9大核心配置项全解析(100%匹配1.14.0+最新官方文档) 以下内容严格基于 sing-box 官方最新文档定义,先讲全链路执行总框架,再逐个拆解每个配置项的官方定义、生效边界、优先级与坑点,最后梳理它们的相互影响关系,并通过完整场景串联所有配置。 dns.servers[].domain_resolver outbounds[].domain_resolver route.default_domain_resolver dns.servers[].detour outbound.detour dns.rules[] route.rules[] dns.final route.final 一、全局执行总框架 sing-box 从启动到用户访问的完整生命周期,分为两大核心阶段,所有配置项都在这两个阶段里各司其职,顺序不可逆: 【第一阶段:sing-box 启动初始化】 ↓ 1. 解析所有域名形式的出站(代理节点):优先用 outbound 自己的 domain_resolver,兜底用 route.default_domain_resolver ↓ 2. 按 outbound.detour 建立链式代理隧道,完成代理网络初始化 ↓ 3. 初始化 DNS 模块,加载 dns.servers、dns.rules、dns.final 【第二阶段:用户访问运行时】 ↓ 1. 用户发起域名访问 → 进入 DNS 模块 ↓ 2. dns.rules 从上到下匹配,命中即停止,决定用哪个 dns.server 解析;全不命中走 dns.final ↓ 3. 选中的 dns.server 执行解析: a. 若DNS服务器是域名(如DoH),先用自己的 domain_resolver 解析自身域名,解决鸡生蛋死锁 b. 按 dns.server.detour 指定的出站,发送DNS查询请求,拿到目标域名的IP ↓ 4. 拿到IP后,进入路由模块 ↓ 5. route.rules 从上到下匹配,命中即停止,决定流量走哪个 outbound;全不命中走 route.final ↓ 6. 按 outbound.detour 完成链式代理转发,最终访问目标服务 graph TD A[启动初始化] –> B[解析代理节点域名] B –> C{outbound是否配置domain_resolver?} C –>|是| D[用outbound.domain_resolver解析] C –>|否| E[用route.default_domain_resolver解析] D & E –> F[建立链式代理隧道] F –> G[用户访问google.com] ...

2026年4月3日 · 5 分钟 · 冇文化