sing-box 的 dns 规则是怎么路由的?

272 天前
 jamesjammy061

这里简化一下配置把 json 转为 yaml 表示

俺代码也去扒了一下没大看懂,暂且理解为从上到下,按照先后顺序一条条匹配的,如果没有匹配到任何一条,那么就走 final

如果在 tun mode 下,sing-box 会进行 dns 劫持吗

dns:
  final: dns_proxy
  independent_cache: true
  strategy: prefer_ipv4
  servers:
    - { tag: dns_proxy, address: 8.8.8.8, detour: 默认 }
    - { tag: dns_resolver, address: 223.5.5.5, detour: DIRECT }
  rules:
    - { rule_set: [ MainlandNetwork ], server: dns_resolver }
    - { rule_set: [ AboardNetwork, GeoSite@category-anticensorship, GeoSite@tld-!cn, GeoSite@gfw, GeoSite@geolocation-!cn ], server: dns_proxy }
    - { rule_set: [ GeoSite@cn, GeoSite@tld-cn ], server: dns_resolver }
    - { outbound: [ any ], server: dns_resolver }

按照这个规则,比如说当前域名是 3vc6d6355d917116360892063vc6d635.edns.ip-api.com

ip-api.com 应该是没有在上面任何一条 rule_set 中,那么是否会命中 outbound: any

测试了一下 tun mode ,发现会有 dns 泄露

但是 http proxy 不会,有点不太明白这个逻辑,按这个逻辑来说应该任何没有命中 rule_set 的域名都应该走 223.5.5.5 请求 dns

已经禁用 Windows 智能多宿主名称解析

2849 次点击
所在节点    问与答
6 条回复
SenLief
272 天前
strict_route
kuaizi
272 天前
outbound
匹配出站。
any 可作为值用于匹配任意出站。

解析你代理服务器域名用的
没有匹配规则的话,默认走 sever 第一个,也就是你的 8.8.8.8
jamesjammy061
272 天前
@kuaizi 感谢。我也有在 singbox 官方 issue 问过,但是发现好像会死循环,8.8.8.8 又会走 detour 。有没有方法像 clash meta 的 proxy_nameserver 一样,使得解析代理服务器域名走单独的 dns ,直接出站
garryforreg420
227 天前
@jamesjammy061
outbound: any
这条就是用来解析代理服务器域名的
himan85
163 天前
这个 outbound:any 我也困惑了好一下子,其实匹配的是你本地服务器到代理服务器的 outbound ,所以自然也不会匹配到任何你要访问的最终服务器域名了
sikeer
130 天前
@himan85 几乎每个人开始接触 sb 都会问这个问题的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1027924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX