返回
Featured image of post CFW 使用中的一些收集

CFW 使用中的一些收集

TUN 模式

经过了解,Tun 模式是 Clash Core 中相当好用的一个功能,传统的系统代理是接管系统的代理,然后让本来就走系统代理的软件通过 Clash 分流去实现科学上网,而 Tun 模式则是直接虚拟一张网卡,强制所有的流量都走 Clash 网卡,使得本来不走代理的一些软件也可以强制科学上网,比如 Windows 的终端还有部分 UWP 应用。

配置

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 114.114.114.114
    - 8.8.8.8
  fallback:
    - https://8888.google/dns-query
    - https://1.0.0.1/dns-query
    - https://dns.twnic.tw/dns-query
    - https://doh.opendns.com/dns-query
    - https://dns-nyc.aaflalo.me/dns-query
    - https://dns.aa.net.uk/dns-query
    - https://sg.adhole.org/dns-query
    - https://kaitain.restena.lu/dns-query
    - https://hydra.plan9-ns1.com/dns-query
    - https://jp.tiar.app/dns-query
    - https://doh.asia.dnswarden.com/adblock
  nameserver-policy: {}
  fake-ip-filter:
    - +.stun.*.*
    - +.stun.*.*.*
    - +.stun.*.*.*.*
    - +.stun.*.*.*.*.*
    - "*.n.n.srv.nintendo.net"
    - +.stun.playstation.net
    - xbox.*.*.microsoft.com
    - "*.*.xboxlive.com"
    - "*.msftncsi.com"
    - "*.msftconnecttest.com"
    - WORKGROUP
tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

其中第一部分 dns 是用于解析域名,境内网址会交由nameserver解析,然后得到 IP,所以此处一般使用国内运营商的 DNS 服务,例如阿里和腾讯。然后当nameserver解析得到被墙污染的地址时,触发 Fallback,域名会交给 fallback 部分的境外 DNS 服务解析,得到真实的 IP。

Tun 部分则较为简单,stack有两种模式,分别是systemgVisor,虽然不知道有什么区别,但是都说system模式的请求更底层,效率更高。

但是去查看 Clash 的 Issue 的时候发现,其实 Tun 模式是从混合配置 (Mixin) 中独立出来的,于是又去研究了一下什么是 Mixin。

Mixin

Mixin,CFW 对其的解释是开启时强制覆盖原有的配置,在研究后发现只要在 Mixin 中写上的公共属性,就会强制覆盖掉全局属性,例如我的机场规则中存在Rules属性,有几千条分流。

image-20240115210237549

但是当我在 Mixin 中同样写下rules属性后,就会强制覆盖掉原有的rules属性。所以为了防止更新时我们的设置被覆盖,不管是机场订阅更新还是 CFW 更新,都会顶掉我们自己的配置。

PS:有一说一,Clash Core 删库跑路,CFW 也跑路,这俩还有更新见鬼了。

所以我们使用 Mixin 来启动 Tun 模式更为方便,也可以在 Mixin 中直接配置我们自定义的一些规则。

配置

首先打开 Clash 的 Mixin 配置,点击齿轮即可。

image-20240115215300100

然后进入配置界面,将刚才在 Tun 模式中的内容照搬过来然后改一改格式。

mixin:
  dns:
    enable: true
    enhanced-mode: fake-ip
    use-hosts: false
    default-nameserver:
      - 223.5.5.5
      - 119.29.29.29
    fake-ip-range: 198.18.0.1/16
    fake-ip-filter:
      - "dns.msftncsi.com"
      - +.stun.*.*
      - +.stun.*.*.*
      - +.stun.*.*.*.*
      - +.stun.*.*.*.*.*
      - "*.n.n.srv.nintendo.net"
      - +.stun.playstation.net
      - xbox.*.*.microsoft.com
      - "*.*.xboxlive.com"
      - "*.msftncsi.com"
      - "*.msftconnecttest.com"
      - WORKGROUP
    nameserver:
      - https://doh.pub/dns-query
      - https://dns.alidns.com/dns-query
      - https://doh.360.cn/dns-query
    fallback:
      - tls://dns.google
      - https://1.0.0.1/dns-query
      - https://doh.dns.sb/dns-query
      - https://dns.cloudflare.com/dns-query
      - https://dns.twnic.tw/dns-query
      - tls://8.8.4.4:853
    fallback-filter:
      geoip: true
      geoip-code: CN
      geosite:
        - gfw
      ipcidr:
        - 240.0.0.0/4
      domain:
        - "+.google.com"
        - "+.facebook.com"
        - "+.youtube.com"

  tun:
    enable: true
    stack: system
    dns-hijack:
      - any:53
      - tcp://any:53
    auto-route: true
    auto-detect-interface: true

这样我们只需要打开混合配置就可以开启 Tun 模式。

移动热点问题

移动热点问题很抽象,怎么说呢,我的卧室距离主路由器很远,所以会导致 WiFi 信号很差,但是我的笔记本用的是网线直连光猫,所以我就一直使用 Windows 的移动热点功能给我开热点,但是当我开始使用 Tun 模式后,发现 Tun 开启后,移动热点能开但是无法上网,于是我去 Issue 里看,果然发现不止我有这个问题,解决方法很简单但不能一劳永逸。

  • 首先打开控制面板->网络共享中心->更改适配器选项
  • 先打开移动热点,然后开启混合配置。此时适配器中会出现两个新网卡。
  • 在 Clash 的网卡上右键,属性->共享->允许其他网络用户通过比计算机的 Internet 连接来连接 (N)->选择移动热点网卡

然后我们的移动热点就可以正常上网了,但是需要注意,这玩意很奇怪,老蹦,一会能一会不能,我的评价是一坨。

预处理配置

前提

这玩意我为啥会研究呢,很简单,有些分流规则不合我心意,比如 Spotify,我的账号地区设置的是美国,而且没有开 Premium,所以我每 14 天都需要重新切换到美国线路去验证一回账号,所以我干脆就想,能不能直接把 Spotify 直接分流到美国线路,然后就发现了预处理配置这玩意。

规则

这东西的关键词和普通的关键词不太一样,有表格列出来。

配置功能
append-rules数组合并至原配置 rules 数组后
prepend-rules数组合并至原配置 rules 数组前
append-proxies数组合并至原配置 proxies 数组后
prepend-proxies数组合并至原配置 proxies 数组前
append-proxy-groups数组合并至原配置 proxy-groups 数组后
prepend-proxy-groups数组合并至原配置 proxy-groups 数组前

很明显,含义说的很清楚,我们主要使用的就是prepend-rules,这个可以把我们自定义的规则放到最前面,优先级更高,可以覆盖掉本来的分流。效果如下

image-20240115220934236

上面就是我们添加的规则,可以看到出现在最上边而且改变了分流。

编写

这个东西在 Clash 的设置->配置->预处理配置,点击编辑打开编写界面。

parsers: # array
  - url: https://sub.niceduck.cloud/api/v1/client/subscribe?token=6fa7e6efaa0af93bff2577adfb20fb28
    yaml:
      prepend-rules:
        - DOMAIN-SUFFIX,wallhaven.cc,♻️ 自动选择
        - DOMAIN-SUFFIX,bard.google.com,【1x】隧道丨美国 01
        - DOMAIN-SUFFIX,ai.google.dev,【1x】隧道丨美国 01
        - DOMAIN-SUFFIX,makersuite.google.com,【1x】隧道丨美国 01
        - DOMAIN-SUFFIX,cdn.winget.microsoft.com,🚀 节点选择
        - DOMAIN-SUFFIX,router.bittorrent.com,DIRECT

首先是parsers顾名思义,解析器,传入的是一个数组,但我们这里只有一个订阅,所以没必要写成数组。然后是 URL,这个地方填订阅地址,他会根据不同的订阅实行不同的配置。

然后下面是一个标准的 yaml 文件格式,使用prepend-rules使我们的规则出现在最前面,下面的参数有说法

这个地方其实是 Clash 的规则,而 Clash 的规则有好多种匹配方式,总体分 3 种:类型,匹配内容,策略。

DOMAIN-SUFFIX:域名后缀匹配
DOMAIN:域名匹配
DOMAIN-KEYWORD:域名关键字匹配
IP-CIDR:IP段匹配
SRC-IP-CIDR:源IP段匹配
GEOIP:GEOIP数据库(国家代码)匹配
DST-PORT:目标端口匹配
SRC-PORT:源端口匹配
PROCESS-NAME:源进程名匹配
RULE-SET:Rule Provider规则匹配
MATCH:全匹配

我们只讲几个常用的

域名规则

DOMAIN

域名规则,如果请求的域名完全匹配,就会使用此规则

rules:
  - DOMAIN,google.com,auto

比如上面的,我们访问 google.com 就会出发 auto 的规则,而如果访问的是 mail.google.com,就无法触发。

DOMAIN_SUFFIX

域名后缀规则,如果请求的域名后缀匹配,则会匹配上此规则

例:

“google.com"匹配"www.google.com”、“mail.google.com"以及"google.com”,但是不匹配"content-google.com"。

rules:
  - DOMAIN-SUFFIX,google.com,auto

DOMAIN_KEYWORD

域名关键词规则,如果请求的域名中包含关键字,则会匹配上此规则

rules:
  - DOMAIN-KEYWORD,ad,REJECT

剩下的我基本用不上,想了解可以去[虚空终端](规则配置 - 虚空终端 Docs (metacubex.one)) 处了解详细规则的编写。

还有一点,预处理规则写在这个文件里,但是同样可以使用 Mixin 进行强制覆盖或者二次添加。

先写这么多,后面的还没用上,用上再说。

Licensed By 猫南北
最后更新于 2025 年 10 月 22 日 22:44