V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
340746
V2EX  ›  问与答

想请问一下大家 Clash 是如何进行域名和 IP 规则匹配的

  •  
  •   340746 · 3 月 2 日 · 895 次点击

    我的 DNS 配置如下

    
    dns:
      enable: true  #是否启用,如为 false ,则使用系统 DNS 解析
      cache-algorithm: lru  #支持的算法:lru: Least Recently Used, 默认值 arc: Adaptive Replacement Cache
      prefer-h3: true  #DOH 优先使用 http/3
      listen: 0.0.0.0:1053  #DNS 服务监听,支持 udp, tcp
      ipv6: true  #是否解析 IPV6, 如为 false, 则回应 AAAA 的空解析
      enhanced-mode: fake-ip  #mihomo 的 DNS 处理模式
      fake-ip-range: 198.18.0.1/16  #fakeip 下的 IP 段设置,tun 的默认 IPV4 地址 也使用此值作为参考
      fake-ip-filter:  #fakeip 过滤,以下地址不会下发 fakeip 映射用于连接
        - 'geosite:private'
      fake-ip-filter-mode: blacklist  #可选 blacklist/whitelist ,默认 blacklist ,whitelist 即只有匹配成功才返回 fake-ip
      use-hosts: false  #是否回应配置中的 hosts ,默认 true
      use-system-hosts: true  #是否查询系统 hosts ,默认 true
      respect-rules: true  #dns 连接遵守路由规则,需配置 proxy-server-nameserver
      default-nameserver:  #默认 DNS, 用于解析 DNS 服务器 的域名,必须为 IP, 可为加密 DNS
        - tls://1.12.12.12:853
        - tls://223.5.5.5:853
      nameserver-policy:
        "geosite:private,cn,geolocation-cn": system
        "geoip:cn": system
      proxy-server-nameserver:  #代理节点域名解析服务器,仅用于解析代理节点的域名,如果不填则遵循 nameserver-policy 、nameserver 和 fallback 的配置
        - https://dns.alidns.com/dns-query
        - https://dns.pub/dns-query
      direct-nameserver:  #用于 direct 出口域名解析的 DNS 服务器,如果不填则遵循 nameserver-policy 、nameserver 和 fallback 的配置
        - system
      direct-nameserver-follow-policy: false  #是否遵循 nameserver-policy ,默认为不遵守,仅当 direct-nameserver 不为空时生效
      nameserver:  #默认的域名解析服务器
        - https://dns.cloudflare.com/dns-query
        - https://dns.google/dns-query
    
    

    我打算让国内的网站直接走系统 DNS,其他网站走国外 DNS
    规则部分的配置如下:

    rules:
      - IP-CIDR,0.0.0.0/32,REJECT
      - DOMAIN-REGEX,^ad\..*,REJECT
      - DOMAIN-REGEX,.*\.ad\..*,REJECT
      - GEOSITE,category-ads-all,REJECT
      - DOMAIN-KEYWORD,teracloud,DIRECT
      - GEOSITE,geolocation-cn,DIRECT
      - GEOSITE,private,DIRECT
      - GEOIP,cn,DIRECT
      - GEOSITE,CATEGORY-AI-!CN,🧠人工智能🧠
      - GEOSITE,DLSITE,🎌日本网站🎌
      - DOMAIN-SUFFIX,jp,🎌日本网站🎌
      - GEOSITE,category-cryptocurrency,🪙加密货币🪙
      - GEOSITE,youtube,🌍国外媒体🌍
      - MATCH,⚡自动选择⚡
    
    

    但是在使用 Clash 时能观察到 udp://8.8.4.4:443 走 DIRECT
    查了一下日志:

    Log(logLevel: LogLevel.info, payload: [TCP] mihomo --> dns.google:443 match Match using ⚡自动选择⚡[中国 - 台湾 - Pittqiao Network Information Co., Ltd. - 148], dateTime: 2026-03-02 17:13:37)
    Log(logLevel: LogLevel.debug, payload: probing TLS: opening TLS connection: tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config, dateTime: 2026-03-02 17:13:37)
    Log(logLevel: LogLevel.debug, payload: [https://dns.google:443/dns-query] using HTTP/3 for this upstream: QUIC was faster, dateTime: 2026-03-02 17:13:37)
    Log(logLevel: LogLevel.debug, payload: [Rule] use default rules, dateTime: 2026-03-02 17:13:37)
    Log(logLevel: LogLevel.debug, payload: ⚡自动选择⚡ UDP is not supported, dateTime: 2026-03-02 17:13:37)
    Log(logLevel: LogLevel.info, payload: [UDP] mihomo --> 8.8.4.4:443 doesn't match any rule using DIRECT, dateTime: 2026-03-02 17:13:37)
    

    想问一下大家为什么日志前面说 Google 的 dns 走 Match 了,后面的 IP 又走直连
    Clash 匹配域名和 IP 是什么顺序,什么情况下直接匹配域名,什么情况下解析出 IP 再进行匹配
    我配置的 Googledns 是 DOH 加密,那现在 udp://8.8.4.4:443 走直连是否还能起到加密的作用

    1 条回复
    340746
        1
    340746  
    OP
       3 月 2 日
    似乎解决了
    问题形成:
    设置 prefer-h3: true 导致 doh 请求走 quic 协议,quic 协议用的 udp,某些代理没有声明支持 udp 导致只能走直连
    解决方法:
    在覆写里修改 prefer-h3: false 或者为每个代理添加 udp 支持
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3149 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:26 · PVG 21:26 · LAX 06:26 · JFK 09:26
    ♥ Do have faith in what you're doing.