Mihomo(Clash.Meta) 匹配路由规则的 DNS 配置 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tunetoystory
V2EX    宽带症候群

Mihomo(Clash.Meta) 匹配路由规则的 DNS 配置

  •  
  •   tunetoystory 2024-09-21 22:01:43 +08:00 8926 次点击
    这是一个创建于 404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考资料:

    先贴我的的 dns 配置

    dns: enable: true listen: 0.0.0.0:7874 ipv6: false enhanced-mode: redir-host respect-rules: true # 附加参数 #RULES 为遵守路由规则进行连接,等同于 respect-rules nameserver: # 指定使用 dns 路由规则进行连接 # nameserver-policy 未匹配的域名将使用以下 dns 解析 - tls://8.8.8.8#dns - tls://1.1.1.1#dns proxy-server-nameserver: - https://120.53.53.53/dns-query - https://223.5.5.5/dns-query nameserver-policy: # 白名单分组使用运营商 dns 解析 "geosite:private,onedrive,microsoft@cn,apple,apple-cn,category-games@cn,cn": - 运营商 dns # 自定义白名单分组同样使用 运营商 dns 解析 "rule-set:custom-direct": - 运营商 dns 

    解释一下我的场景,路由器上使用 mihomo 插件,白名单模式,未开启 ipv6 ,使用 geosite 规则,路由规则如下:

    rules: - GEOIP,lan,DIRECT,no-resolve - GEOSITE,private,DIRECT # 高优先级标注需要代理的规则防止被后面的直连规则影响 - GEOSITE,google,其他 - GEOSITE,google-cn,其他 - RULE-SET,openai,OpenAI # 以下为直连 - GEOSITE,onedrive,DIRECT - GEOSITE,microsoft@cn,DIRECT - GEOSITE,apple,DIRECT - GEOSITE,apple-cn,DIRECT - GEOSITE,steam@cn,DIRECT - GEOSITE,category-games@cn,DIRECT - GEOSITE,cn,DIRECT - GEOIP,CN,DIRECT - RULE-SET,custom-direct,DIRECT # 剩余全代理 - MATCH,其他 

    配置思路如下:

    1. 将我认为直连能获得更佳体验的分组打上 DIRECT 规则并且使用运营商 dns 进行解析,获得国内 CDN 加成,比如 apple, ms, dji, steam 等。
    2. 未使用 fallback 配置,避免直连解析耗时较长。
    3. 使用 rule-providers 自定义直连规则降低 nameserver-policy 配置复杂度。
    第 1 条附言    2024-10-09 09:37:45 +08:00

    根据网友对 no-resolve 的解释和我最近的实践,dns 和 rules 部分更新如下:

    dns: enable: true listen: 0.0.0.0:7874 ipv6: false enhanced-mode: redir-host respect-rules: true # 和代理规则一致, 没有匹配 nameserver-policy 规则的统一走国外 dns nameserver: - tls://8.8.4.4 - tls://1.1.1.1 proxy-server-nameserver: - https://120.53.53.53/dns-query - https://223.5.5.5/dns-query nameserver-policy: # google 优先使用国外 dns 和下面的代理规则一致,可以解决 play 无法下载问题, 否则会被下面的 cn list 匹配使用国内 dns 解析到错误 ip "geosite:google": - tls://8.8.4.4 - tls://1.1.1.1 "geosite:private,onedrive,microsoft@cn,apple,category-games@cn,cn": - 119.29.29.29 - 223.5.5.5.5 # 自定义直连域名使用国内 dns "rule-set:custom-direct-domain": - 119.29.29.29 - 223.5.5.5.5 rules: # 禁用 quic 后部分国内服务访问缓慢只能关闭 #- AND,(AND,(DST-PORT,443),(NETWORK,UDP)),(NOT,((GEOSITE,cn))),REJECT # quic - GEOIP,lan,DIRECT,no-resolve - GEOSITE,private,DIRECT # 禁用 quic 后部分国内服务访问缓慢只能关闭 #- AND,(AND,(DST-PORT,443),(NETWORK,UDP)),(NOT,((GEOIP,CN))),REJECT # quic # 高优先级分组, 保证 Google 所有域名走代理 - GEOSITE,google,其他 - GEOSITE,onedrive,DIRECT - GEOSITE,microsoft@cn,DIRECT - GEOSITE,apple,DIRECT - GEOSITE,steam@cn,DIRECT - GEOSITE,category-games@cn,DIRECT - GEOSITE,cn,DIRECT - GEOIP,CN,DIRECT,no-resolve # 自定义, 将 ipset 和 domain list 分开有匹配性能更好 - RULE-SET,custom-direct-domain,DIRECT - RULE-SET,custom-direct-ip,DIRECT,no-resolve - MATCH,其他 
    23 条回复    2024-11-14 17:02:36 +08:00
    vvhy
        1
    vvhy  
       2024-09-22 01:52:46 +08:00
    geoip 没加 no-resolve
    可以用 wireshark 抓包确认一下
    tunetoystory
        2
    tunetoystory  
    OP
       2024-09-22 08:39:08 +08:00 via iPhone
    @vvhy 查了下确实很多人都像你说的这样配置,但是不理解为什么已经匹配到 ip 规则,说明已经解析过了,还需要指定不解析呢
    Rebron1900
        3
    Rebron1900  
       2024-09-22 11:44:28 +08:00
    大佬,openclash 的 meta 内核能用吗?
    tunetoystory
        4
    tunetoystory  
    OP
       2024-09-22 11:47:29 +08:00
    @Rebron1900 能用,但是注意根据自己的实际情况调整
    vvhy
        5
    vvhy  
       2024-09-22 13:00:45 +08:00 via Android
    @Rabbit52 比如浏览器发出一个域名的请求,如果不加 no-resolve ,clash 就会先把域名解析成 ip ,再判断 ip 规则是否满足
    tunetoystory
        6
    tunetoystory  
    OP
       2024-09-22 14:49:20 +08:00 via iPhone
    @vvhy 文档的意思好像 no-resolve 的参数只适用于 ip 集,不是域名,我就没搞懂了

    https://wiki.metacubex.one/config/rules/#no-resolve
    JohnSmith
        7
    JohnSmith  
       2024-09-23 12:30:26 +08:00
    @Rabbit52 #2 mihomo 的实现,不会去依赖 rules 之间的顺序的,也就是不会带上下文
    tunetoystory
        8
    tunetoystory  
    OP
       2024-09-23 13:06:25 +08:00
    @JohnSmith 我的意思是 ip 集的规则它为什么需要 no-resolve 参数呢,本来就有 ip 了呀
    remidre
        9
    remidre  
       2024-09-27 08:39:05 +08:00   1
    @Rabbit52 解析是从上至下的,假如有个域名[www.google.com]要走你的规则,一上来碰到的是 ip 集,clash 会先把域名解析成 ip 去匹配你的 ip 集,如果命中了就走你的 ip 规则,没命中就走后面的域名规则,但它已经被解析成 ip 了,后续就不会走你的域名规则了。所以一般 ip 类规则的放后面,或者加 no-resolve ,强制不解析
    tunetoystory
        10
    tunetoystory  
    OP
       2024-09-27 10:15:04 +08:00 via iPhone
    @remidre 感谢 解释的很清楚,那看来 match 前加 no-resolve 的可能会代理上一些没在列表内的 cn ip ,不过这本来就是预期内的。
    1014982466
        11
    1014982466  
       2024-09-29 12:28:54 +08:00
    问一下大佬, listen: 0.0.0.0:7874 后面端口号是随便写?要不要写 DNS 的 53 端口?我看有的教程随便写,有的写 53 ,有的写 5353
    tunetoystory
        12
    tunetoystory  
    OP
       2024-09-29 12:56:00 +08:00
    @1014982466 随便写,只要不被占用就行,如果在路由器上运行 53 肯定已经被占用了,如果是提供 dns 服务可以用 53
    wcnmm
        13
    wcnmm  
       2024-10-14 01:15:40 +08:00 via Android
    有一点要指出,你用了 redir-host ,no-reslove 就没用了。no-reslove 是给 fake-ip 用的
    tunetoystory
        14
    tunetoystory  
    OP
       2024-10-14 16:52:50 +08:00
    @wcnmm 这个倒是没有查到文档诶,方便指一下路吗?
    wcnmm
        15
    wcnmm  
       2024-10-15 05:29:13 +08:00
    @Rabbit52 官方文档以前有关于 redir-host 和 fake-ip 的解析流程。去年起好像就找不到了
    https://wiki.metacubex.one/config/dns/diagram/ 而这个并不是讲 redirr-hsot / fake-ip 特性的
    以下是回忆内容,会部分细节不准的地方,大致流程我确定是对的:
    redir-host 就是本地请求 ip ,返回的结果仅用于规则判断,再发起代理(同时发送域名给节点)
    fake-ip 就是返回假 ip 先用于规则判断,再连接。(直接就是本地请求,代理就是发送域名远程解析)

    比较之下,就是 redir-host 一定会进行一次本地解析。你也可以直接打开面板看看 inner 类型,代表核心主动发出的请求,在代理环境且规则配置无误的情况下( fake-ip 给 ip 规则添加了 no-resolve 或者 ip 规则排靠后) fake-ip 是不会发起 dns 请求的,而 redir-host 就会有长连接
    zhf883680
        16
    zhf883680  
       362 天前
    respect-rules: true
    开启了这个 还需要配置 nameserver-policy 吗
    respect-rules 都规定 dns 连接遵守路由规则了
    正好在疑问这个东西
    tunetoystory
        17
    tunetoystory  
    OP
       361 天前
    @zhf883680 按照我对文档的理解这个选项和 tls://8.8.8.8#dns 后面这个 #dns 是一样的效果, 意思是连接 dns 服务时遵循代理规则, 也就是说 8.8.8.8 如果在代理规则里面代理, 那么 dns 查询就要代理, 或者指定 #dns 走 dns 分组规则. 和 nameserver-policy 应该没关系
    Awes0me
        18
    Awes0me  
       351 天前
    套用了你的模板挺多这种 warning 的,不知道怎么回事

    [TCP] dial DIRECT (match GeoSite/cn) 127.0.0.1:50427 --> qny.smzdm.com:443 error: connect failed: dial tcp 154.85.73.15:443: i/o timeout dial tcp 154.85.73.17:443: i/o timeout dial tcp 154.85.73.16:443: i/o timeout
    tunetoystory
        19
    tunetoystory  
    OP
       351 天前
    @Awes0me 我也有很多这样的日志,不知道为何,但是用起来也没有什么问题
    Awes0me
        20
    Awes0me  
       351 天前
    @Rabbit52 我用起来问题还是蛮大的... 国内网站明显很慢
    Awes0me
        21
    Awes0me  
       351 天前   1
    @Rabbit52 改用 https://hk.v2ex.com/t/1015534 这个 L20 的,挺好
    tunetoystory
        22
    tunetoystory  
    OP
       350 天前
    @Awes0me 你看内容, 其实差不多的
    Awes0me
        23
    Awes0me  
       350 天前
    @Rabbit52 看起来是差不多,我也不是很懂网络,不过他这个日志挺干净的,打开国内网页也挺快
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5242 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 08:05 PVG 16:05 LAX 01:05 JFK 04:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86