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

查看 16|回复 0
作者:340746   
我的 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 走直连是否还能起到加密的作用
您需要登录后才可以回帖 登录 | 立即注册

返回顶部