标签 Clash 下的文章

前言

最近在闲鱼上淘了一个二手 macbook m1 air 16+512,想着把 windows 上的 singbox 搬过去。因为之前都是跑的纯内核,所以这时也打算用纯内核来跑。

遇到第一个问题,配置文件是 1.11 时候写的,但是很多带 provider 的 singbox 修改版,都没有历史版本,不打 tag,编译出来的都是最新版本,或者是有 1.11 Tag,Fork 了一下自己跑 Github action,但是编译出来的是原版。或者是原仓库之前 action 跑过的,很多产物都已经失效了无法下载。

后面只能尝试用 1.12 版本,找了一个仓库 lux5am/sing-box,这个看着是挺不错的,然后下载了个 1.12 版本,但是配置跑不起来,一直报错 loop on detour: direct

+0800 2026-01-21 20:07:33 INFO network: updated default interface en0, index 11
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set geosite-microsoft from URL: https://github.com/CHIZI-0618/v2ray-rules-dat/raw/refs/heads/release/singbox_rule_set/geosite-microsoft.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-ads-all from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-category-ads-all.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set cn-domain from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-games@cn from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-games@cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set alibaba from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-alibaba.srs
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to github.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain github.com
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain raw.githubusercontent.com
+0800 2026-01-21 20:07:33 DEBUG dns: lookup failed for github.com: loop on detour: direct

改了半天配置,又去参考了一下别人的,或者是换另外一个仓库的 1.12 修改版,最终都跑不起来,折腾了好久最终是放弃了。然后想着,如果后面又遇到这种问题,再加上 singbox 的配置语法经常变更,后面又得折腾一下,想了想还是换内核吧。

那也没啥好选了,只能是 mihomo 了。于是就弄了一下这玩意的开机自启。

配置开机自启

主要是参考:OKHK ✨ macOS 上 配置 Launchctl 运行 Clash Meta(Mihomo)内核服务
其实里面文件的路径应该是能变的,但是我为了复制方便,直接就用文章的了 。

核心文件准备

sudo mv mihomo-darwin-arm64-v1.19.19 /usr/local/bin/clash
sudo chown root clash
sudo chmod +x clash
mkdir -p /Users/app/.config/clash
mv config.yaml /Users/app/.config/clash
chmod 644 /Users/app/.config/clash/config.yaml

launchctl 配置文件

/usr/local/bin/start_clash_with_dns.sh:设置 dns + 启动核心

#!/bin/bash set -e

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export HOME="/Users/app" timeout=120
elapsed=0
while [ $elapsed -lt $timeout ]; do if scutil --dns | grep -q "nameserver"; then
        networksetup -setdnsservers Wi-Fi 198.18.0.2
        echo "$(date) DNS:198.18.0.2" >> /Users/app/.config/clash/clash_dns.log
        break fi sleep 5
    elapsed=$((elapsed + 5))
done exec /usr/local/bin/clash -d /Users/app/.config/clash


/Library/LaunchDaemons/clash.plist:launchctl plist 配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>clash</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/usr/local/bin/start_clash_with_dns.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Users/app/.config/clash</string> <key>StandardOutPath</key> <string>/Users/app/.config/clash/clash_stdout.log</string> <key>StandardErrorPath</key> <string>/Users/app/.config/clash/clash_stderr.log</string> </dict> </plist> 


授予权限:

sudo chown root /Library/LaunchDaemons/clash.plist
sudo chmod 644 /Library/LaunchDaemons/clash.plist
sudo chown root /usr/local/bin/start_clash_with_dns.sh
sudo chmod +x /usr/local/bin/start_clash_with_dns.sh

启动服务

第一次启动用下面的命令,如果是已经 load 过的,用下面的 alias 的 startclash。
反复 load 会出错或者是 unload 还没有 load 的也会出错,但是错误日志没有具体怎么写,这里提醒一下。

sudo launchctl load /Library/LaunchDaemons/clash.plist

一些常用命令

重启

sudo launchctl unload /Library/LaunchDaemons/clash.plist
sudo launchctl load /Library/LaunchDaemons/clash.plist

alias 用于方便手动控制:

alias stopclash='sudo launchctl stop clash && networksetup -setdnsservers Wi-Fi Empty && sudo launchctl list | grep clash' alias startclash='sudo launchctl start clash && networksetup -setdnsservers Wi-Fi 192.168.0.2 && sudo launchctl list | grep clash' 

uu 远程连接不上

tun 启动之后不知道为什么 uu 远程用不了,显示没有网络链接。
问了一下 AI,给了一些方法,现在虽然是解决,但我不知道具体是哪个命令解决的。
这里我都贴出来有遇到的老友可以试一试这一些方法,如果关闭 clash 之后没有网络,可以开关一下 wifi,这样就有网络了。

sudo route -n flush
sudo ifconfig en0 down
sudo ifconfig en0 up
sudo pkill -f "uu\|tun" sudo rm /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

sudo route -n flush 这个可以执行多次,时不时执行一下,比如关闭 uu 远程之后,打开了之后。
如果实在不行就把 uu 远程卸载了,重启电脑,再安装上,然后再试试。不行的话就再执行一下上面这些命令。
查看路由表: netstat -rn -f inet


📌 转载信息
转载时间:
2026/1/24 06:41:06

在我的上一篇文章中阐述了如何配置 clash 防止 AI 降智访问的方法,但是经过实战我发现机场连接本身存在动态更新的特性,只要更新,我们写入的东西就没了,但是我摸索出了新的方法

点击订阅,右键选择扩展脚本
然后自定义扩展脚本

function main(config) {
  // -------------------------------------------------------
  // 第一步:定义你的落地节点(我的是那个美国家宽 IP)
  // -------------------------------------------------------
  const landingProxy = {
    "name": "家宽",
    "type": "socks5",
    "server": "秘密",
    "port": 12324,
    // 注意:如果你的 SOCKS5 有账号密码,请填写在引号内;没有则留空
    "username": "秘密", 
    "password": "秘密", 
    // 关键参数:指定前置代理为“运载火箭”策略组
    "dialer-proxy": "运载火箭" 
  };

  // 将这个自定义节点加入到节点列表中
  if (!config['proxies']) {
    config['proxies'] = [];
  }
  config['proxies'].push(landingProxy);

  // -------------------------------------------------------
  // 第二步:定义“运载火箭”策略组(负责过墙的中转组)
  // -------------------------------------------------------
  
  // 这里我们需要从机场原本的节点里,筛选出你想要的“IEPL”节点
  // 假设 config.proxies 里包含了机场的所有节点
  // 我们用正则筛选名字里包含 "IEPL""专线" 的节点
  // 如果你想用机场所有的节点,可以直接引用机场原本的组名(通常叫 "Proxy""节点选择")
  
  const providerProxies = config['proxies']
    .filter(p => /IEPL|专线/.test(p.name)) // 筛选名字包含 IEPL 或 专线 的节点
    .map(p => p.name);

  const tunnelGroup = {
    "name": "运载火箭",
    "type": "select", // 手动选择线路,如果想自动测速换成 url-test
    "proxies": providerProxies.length > 0 ? providerProxies : ["DIRECT"] // 防止筛选为空报错
  };

  // -------------------------------------------------------
  // 第三步:定义 OpenAI 策略组(最终使用的组)
  // -------------------------------------------------------
const targetGroup = {
    "name": "oopenai", // 已修改:避开冲突的自定义名字
    "type": "select",
    "proxies": ["家宽"] // 只走家宽
  };

  // -------------------------------------------------------
  // 第四步:将策略组加入配置 (插入到最前面)
  // -------------------------------------------------------
  if (!config['proxy-groups']) config['proxy-groups'] = [];
  config['proxy-groups'].unshift(tunnelGroup);
  config['proxy-groups'].unshift(targetGroup);

  // -------------------------------------------------------
  // 第五步:注入您提供的所有规则
  // -------------------------------------------------------
  // 注意:所有规则的末尾都已指向 "oopenai"
  const myRules = [
    // --- Google / Gemini ---

    "DOMAIN-SUFFIX,notebooklm.google.com,oopenai",
    
    // --- OpenAI Core & CDN ---
    "DOMAIN,browser-intake-datadoghq.com,oopenai",
    "DOMAIN,chat.openai.com.cdn.cloudflare.net,oopenai",
    "DOMAIN,openai-api.arkoselabs.com,oopenai",
    "DOMAIN,openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net,oopenai",
    "DOMAIN,openaicomproductionae4b.blob.core.windows.net,oopenai",
    "DOMAIN,production-openaicom-storage.azureedge.net,oopenai",
    "DOMAIN,static.cloudflareinsights.com,oopenai",
    "DOMAIN-SUFFIX,ai.com,oopenai",
    "DOMAIN-SUFFIX,algolia.net,oopenai",
    "DOMAIN-SUFFIX,api.statsig.com,oopenai",
    "DOMAIN-SUFFIX,auth0.com,oopenai",
    "DOMAIN-SUFFIX,chatgpt.com,oopenai",
    "DOMAIN-SUFFIX,chatgpt.livekit.cloud,oopenai",
    "DOMAIN-SUFFIX,client-api.arkoselabs.com,oopenai",
    "DOMAIN-SUFFIX,events.statsigapi.net,oopenai",
    "DOMAIN-SUFFIX,featuregates.org,oopenai",
    "DOMAIN-SUFFIX,host.livekit.cloud,oopenai",
    "DOMAIN-SUFFIX,identrust.com,oopenai",
    "DOMAIN-SUFFIX,intercom.io,oopenai",
    "DOMAIN-SUFFIX,intercomcdn.com,oopenai",
    "DOMAIN-SUFFIX,launchdarkly.com,oopenai",
    "DOMAIN-SUFFIX,oaistatic.com,oopenai",
    "DOMAIN-SUFFIX,oaiusercontent.com,oopenai",
    "DOMAIN-SUFFIX,observeit.net,oopenai",
    "DOMAIN-SUFFIX,openai.com,oopenai",
    "DOMAIN-SUFFIX,openaiapi-site.azureedge.net,oopenai",
    "DOMAIN-SUFFIX,openaicom.imgix.net,oopenai",
    "DOMAIN-SUFFIX,segment.io,oopenai",
    "DOMAIN-SUFFIX,sentry.io,oopenai",
    "DOMAIN-SUFFIX,stripe.com,oopenai",
    "DOMAIN-SUFFIX,turn.livekit.cloud,oopenai",
    "DOMAIN-KEYWORD,openai,oopenai",
    
    // --- IP Rules (No Resolve) ---
    "IP-CIDR,24.199.123.28/32,oopenai,no-resolve",
    "IP-CIDR,64.23.132.171/32,oopenai,no-resolve",
    
    // --- Apple Private Relay / Intelligence ---
    "DOMAIN-SUFFIX,apple-ready.fastly-edge.com,oopenai",
    "DOMAIN-SUFFIX,apple-relay.apple.com,oopenai",
    "DOMAIN-SUFFIX,apple-relay.cloudflare.com,oopenai",
    "DOMAIN-SUFFIX,cp4.cloudflare.com,oopenai",
    "DOMAIN-SUFFIX,gateway.icloud.com,oopenai",
    "DOMAIN-SUFFIX,guzzoni.apple.com,oopenai",
    "DOMAIN-SUFFIX,gspe1-ssl.ls.apple.com,oopenai",
    "DOMAIN-SUFFIX,smoot.apple.com,oopenai"
  ];

  // 将规则插入到列表最头部,确保绝对优先
  if (!config['rules']) config['rules'] = [];
  config['rules'] = [...myRules, ...config['rules']];

  return config;
}

这样就好啦!落地服务器您只需要自己配置即可,该配置方案适用于 openai 的全系列,不涉及 gemini, 如果有需要自行询问 AI 进行修改即可.


📌 转载信息
转载时间:
2026/1/21 22:19:54

大家好,最近在折腾虚拟网卡(TUN)模式下的分流逻辑,踩了一个非常经典的坑:网页浏览正常,但 Reeder 等原生 App 在开启 TUN 后死活无法同步。
结论先行:在 TUN + fake-ip 模式下,把业务域名加入 fake-ip-filter,可能会因为同步 Real DNS 失败,导致原生 App 在握手前直接断连。

折腾一圈后发现,这不仅是规则问题,更涉及底层 DNS 解析逻辑。分享出来供大家参考,也想请教下各位在大规模节点和自动化维护上有什么高招。

在我的案例中,App 同步失败的根源在于我把个人域名放进了 fake-ip-filter

过程:开启 TUN 模式后,由于域名在 Filter 列表中,Clash 会强制进行真实解析(Real IP)。
当时上游 DNS 刚好返回了 SERVFAIL,导致 Clash 拿不到目标 IP,连接在握手前就直接断开,报 dns resolve failed

解决办法:将域名移出 Filter,让 Clash 直接返回 Fake-IP 给 App,解析给 Clash 后台异步处理。

目前我搭建了一个简单的“三通道”入口,方便日常使用(配合 zeroomega 等工具):

  • 7897 (Mixed):通过订阅的规则表来分流。
  • 7898 (Direct):直连。
  • 7899 (Proxy):代理。

虽然目前的方案解决了“能用”的问题,但维护起来还是不够优雅,想请教下大家:

  • 是否有基于访问日志 / DNS 请求的自动化方案
  • 能否自动归纳并同步更新 Clash 的 rule-providers 或 fake-ip-filter
  • 在多节点、大规模配置下,有没有更优雅的维护思路

最近因为 AI 封号潮,很多佬友不敢用来路不明的节点,甚至想开全局代理保平安。
但是开全局又会导致访问国内网站变慢、B 站卡顿,最要命的是可能进不去公司内网。

折腾了一圈,发现最稳的方案还是 Clash 负责无脑全局(防泄露),SwitchyOmega 负责白名单直连(保体验)

分享一下我的配置作业,主打一个零信任,希望能帮到有同样需求的佬友。


核心逻辑

采用 “零信任 / 白名单模式” 。默认假设所有流量都需要走代理(以保护 AI 账号安全),只有明确被信任的国内域名和内网 IP 才允许直连。

1. Clash 端设置(地基)

  • 运行模式Global(全局模式)。确保由 Clash 接管一切,不留死角。
  • 系统代理开启。(:如果开启后导致公司内网 VPN 客户端冲突或掉线,请改为关闭;关闭后浏览器依然有效,但 特定软件需手动设置代理)。
  • TUN 模式关闭
  • 节点选择:手动锁定一个稳定的美国节点(不要自动测速跳变)。

2. SwitchyOmega 插件设置(核心)

  • 情景模式:选择 auto switch(自动切换)。
  • 默认情景模式(最后一行):设置为 proxy(即指向 Clash)。
  • 规则列表设置
    • 规则列表格式必须选择 Switchy(关键!为了更好支持通配符 *)。
    • 规则列表规则:设置为 [直接连接]

3. 白名单配置代码(复制即用)

后续大家可以根据自己的浏览习惯,遇到慢的国内网站就加进去。
auto switch 的规则列表正文中,清空原内容,粘贴以下代码:

; --- 本机与内网 (规范化) ---
127.0.0.1
::1
localhost
192.168.*.*
10.*.*.*
172.16.*.*
172.17.*.*
172.18.*.*
172.19.*.*
172.20.*.*
172.21.*.*
172.22.*.*
172.23.*.*
172.24.*.*
172.25.*.*
172.26.*.*
172.27.*.*
172.28.*.*
172.29.*.*
172.30.*.*
172.31.*.*

; --- 安全与技术站 (微步/52/CSDN/博客园) ---
*.threatbook.cn
*.threatbook.com
*.x.threatbook.com
*.fofa.info
*.52pojie.cn
*.csdn.net
*.oschina.net
*.gitee.com
*.cnblogs.com
*.juejin.cn
*.jianshu.com

; --- 核心大厂主站 ---
*.cn
*.baidu.com
*.bdstatic.com
*.qq.com
*.weixin.qq.com
*.aliyun.com
*.taobao.com
*.tmall.com
*.jd.com
*.163.com
*.126.com
*.zhubajie.com
*.feishu.cn
*.dingtalk.com
*.zhihu.com
*.zhimg.com

; --- 视频与娱乐 (B站/抖音) ---
*.hdslb.com
*.bilivideo.com
*.bilivideo.cn
*.douyin.com
*.byteimg.com

; --- 常用公共 CDN (解决图片/样式不加载) ---
*.alicdn.com
*.gtimg.com
*.gtimg.cn
*.qpic.cn
*.qlogo.cn
*.qhimg.com
*.qiniucdn.com
*.upyun.com
*.bootcss.com
*.staticfile.org


方案优势解析

1. 极致的账号安全性(防封号)

  • 原理: 传统的 “黑名单模式”(GFWList)是 “知道被墙的才走代理”。这意味着如果有漏网之鱼(比如 OpenAI 新开了个域名),你的真实 IP 就会瞬间暴露,导致封号。
  • 本方案: 采用 “默认代理”。哪怕是你从未访问过的国外网站,或者 OpenAI 偷偷调用的后台 API,都会强制走美国节点。 这彻底杜绝了 IP 泄露的可能性。

2. 彻底剥离 “机场依赖”

  • 痛点: 以前你不仅要挑机场,还要看机场的规则写得好不好。如果机场规则烂,访问微步就会变慢,访问 ChatGPT 就会断连。
  • 本方案: 你不再依赖机场的规则。Clash 只负责无脑转发,分流的智慧掌握在你自己的浏览器里。哪怕换个最烂的机场,分流依然精准。

3. 极低的维护成本(符合成本论)

  • 操作: 以后如果发现某个国内网站(比如某政府网)变慢了,点击浏览器插件图标 → 添加条件直接连接
  • 对比: 不需要去改 Clash 的 YAML 代码,不需要重启软件,不需要找文档。1 秒钟解决问题。


补充讨论:关于 Flclash 脚本与本方案的取舍

评论区有人分享了这个大佬的方案,写得非常棒: [Flclash 覆写脚本分享 3 - 隐藏了部分策略组,并引入了节点过滤 - 开发调优 - LINUX DO](

**Flclash 覆写脚本分享 3 - 隐藏了部分策略组,并引入了节点过滤 **

)

结合我自己的 网安工作场景AI 重度使用需求,分享一下为什么我倾向于坚持 「Clash Global (全局) + SwitchyOmega (白名单)」

1. 安全哲学的根本区别:Fail-Safe vs Fail-Open

  • 脚本 / 规则分流(黑名单逻辑):依赖 GFWList 和 GeoIP。如果 OpenAI 突然启用了新域名,或者规则库更新不及时,流量可能会因为匹配不到规则而误走直连,导致 真实 IP 泄露。这对于 AI 保号 是致命的。
  • 浏览器白名单(零信任逻辑):我的方案是默认所有流量走代理(Global)。只有我显式信任的域名(如微步、百度、内网)才直连。未知 = 代理。这种 “宁可误杀,绝不漏放” 的机制,能给 AI 账号提供 100% 的安全环境。

2. 业务稳定性 vs 节点速度

  • 脚本使用了 url-test 自动测速。这会导致出口 IP 在不同节点间跳变。看 YouTube 没问题,但对于风控严格的 ChatGPT/Claude,IP 频繁变动是封号大忌
  • 在全局模式下,我手动锁定一个稳定的美国节点,哪怕它延迟高一点,但它是静态的。生产力环境,稳定性 > 速度。

3. 内网 / VPN 的兼容性

  • 在复杂的企业内网或挂着 VPN 办公时,系统级的 TUN 模式有时会和 VPN 客户端抢路由表。
  • 将分流控制在浏览器应用层(SwitchyOmega),可以完美绕过系统路由冲突,实现挂着梯子查资料的同时,丝滑访问 10.x / 172.x 的内网资产。


特别说明:关于 “系统代理” 开不开?

文中建议大家 “开启” 系统代理,但这里有个前提:

  • 如果你不开系统代理:浏览器由插件接管没问题,但 反重力 默认会直连(连不上),需要在软件内手动填 127.0.0.1:7890
  • 如果你开启系统代理:TG 等软件能直接用,很方便。但如果你电脑上还装了 EasyConnect、AnyConnect 等企业 VPN,开启系统代理可能会导致路由冲突(VPN 连不上或梯子断流)。

结论: 没冲突就开着(省事);有冲突就关掉(保内网),然后手动给 反重力 填代理。

白名单可以去 GitHub 上搜
注意: 千万不要把这些列表全选复制进 SwitchyOmega!

  1. 太长了(几万行),会拖慢浏览器匹配速度。
  2. 没必要,我们是 “零信任”,只加自己常用的即可。

进阶技巧:如何知道该加哪个域名? > > 如果你发现访问淘宝或 B 站时,排版乱了或者图片裂了,说明有 CDN 域名走了代理。 > 一招解决: > 1. 按 F12 打开开发者工具,切到 Network (网络) 标签。 > 2. 刷新网页(F5)。 > 3. 找红色的或者加载特别慢的请求,看它的 Domain (域名) 列。 > 4. 比如你看到 [img.alicdn.com](http://img.alicdn.com/) 很慢,就把 *.alicdn.com 加到 SwitchyOmega 的列表里。


📌 转载信息
原作者:
techq
转载时间:
2026/1/19 18:32:42

原公益节点帖子

mihomo (clash) ECH 订阅地址

这个地址仅供测试,它无法改动,只支持 mihomo (clash) https://download.nature.qq.com/SnsShare/Windy/1768620180_b65eb5ff_ech-mihomo

前言

公益节点的域名,用的人一多,就会被墙,我注册了好多域名,也死了一堆,在不断抗争中不断头大。

抗封锁的进展

这几天在 TG 群里看到 CMLiussss 更新了 v2ray/mihomo/singbox 一些 ECH 相关的功能。

ech 是什么?

ech 就是把你真实访问的目标加密传给 cloudflare,
但是 cloudflare 能解密真实目标,对外只知道你往 cloudflare-ech.com 连接。
全球大量免费的 cloudflare 套餐都强制开启 ech,
墙如果杀掉 cloudflare-ech.com 会导致大量误伤。
所以目前看还是挺稳的

存在的问题

但是 sing-box/xray/shadowRocket(小火箭) 等软件,需要固定的 ech 密钥,cloudflare 的 ech 是四个小时一变,就算要做订阅,也是需要设置 4 小时更新一次,用起来不是很方便。

推荐的方法

mihomo (clash 系列的继承者) 能自动抓取 ech 密钥,非常方便。


订阅里依然使用 sni.111000.de5.net 这个被大部分地区屏蔽的域名,但不影响使用。

推荐客户端

安卓端:ClashMetaForAndroid v2.11.22 Releases · MetaCubeX/ClashMetaForAndroid · GitHub

苹果端:clash mi ‎Clash Mi App - App Store

PC 端 / 路由器 (nikki),基本都能更新内核,更新到 v1.19.18 及以上版本即可。


📌 转载信息
转载时间:
2026/1/18 09:41:59

可以在这里分享需要频繁定制的个性化 clash 规则.

其实我开始是想做一个 clash 配置管理中心,不过刚刚立项,就和 RyanVan 佬的项目 https://ryan-ai.de 撞车了,然后人家完成度已经很高了,就不是很有必要再折腾一遍.

不过我这里还是有一个比较好的功能点是可以结合起来用的.

这个小功能可以按照 clash 的 rule-provider 规范 (参见规则集合内容 - 虚空终端 Docs) 定义规则提供者

比如我定义的这个:
https://cr-hub.jsonsong.top/rules/ai-us
是我目前在使用的,需要走美国家宽的路由规则.
其他规则我一般是走 hk.

使用方式是,定义 rule-provider 和指定分组


📌 转载信息
转载时间:
2026/1/12 10:03:13

先说结论:Clash 规则问题,在订阅(以 RyanVan 佬的 SubBoost Clash 配置为例)最后一行添加上 “ - DOMAIN-SUFFIX,bing.com, 微软服务” (不包括 “ ') 即可解决

一开始,本来开开心心的用着萧佬的公益机场和 RyanVan 佬的 SubBoost Clash 配置,在网上乱逛,想玩玩谷歌的 Gemini
在 bing 上搜索 Gemini ,按理来说第一个搜索结果就是 Gemini ,但实际是一堆广告营销号,感到十分难受(

很快发现问题,发现 bing 搜索域名理应是 bing.com ,但现在却是 cn.bing.com
但我现在的代理是开着的,且以前没有出现过这种问题,RyanVan 佬的 SubBoost Clash 配置中的 “微软服务” 也设置了非大陆代理
但是在 RyanVan 佬的 SubBoost Clash 配置代理组中的 “国内服务” 配置节点和开启全局就不会出现这种情况。
于是打开 Clash 的 “连接” 界面
过滤 bing.com
发现 www.bing.com 是经过代理的
但是却有很多的 bing.com 后缀域名没有被代理,如 r.bing.com th.bing.com
然后聪明的小脑瓜想到,直接在配置文件里添加代理所有 bing.com 后缀的域名不就行了吗?!
但俺对 clash 规则一窍不通,然后去搜索一些资料去浅浅了解一下(俺一开始打开浏览器是干啥得到???)
于是就在配置文件里添加了 “ - DOMAIN-SUFFIX,bing.com, 微软服务”
嘻嘻嘻,还真成功了 uwu

感觉这技术含量挺低很简单的,但俺却没有是网上搜索到多少教程(?)故记录 owo


📌 转载信息
原作者:
Xiao_Q
转载时间:
2026/1/11 08:43:30

1. 背景

SubBoost 是一个在线 Clash 订阅增强服务。可以将机场订阅或节点转换为优化的 Clash 配置文件,支持自定义代理组、分流规则、DNS 配置等高级功能。

经过两周的测试修复,目前主要功能已经稳定运行。因此将于 1 月 11 日 22:00 分删库,转为长期运行。届时需要重新注册,请备份重要数据。

2. 使用教程

使用教程见 [教程 3.0] 草履虫也能学会的 Clash 配置:UI 界面一键配置精确分流、链式代理

3. 已知问题

3.1 部分机场订阅会导入失败

部分机场采用严格加密或者限制 CN IP 导入,url 链接无法直接导入。请手动复制订阅内容。

3.2 Google 相关分流

Gemini:由于 Gemini 验证机制调整,目前必须将 Gemini 和 Google 分流至同一节点才可正常使用。默认 Gemini 位于 AI服务分流之中,也提供单独的 Gemini 分流组供手动选择。

谷歌学术:由于谷歌学术对 IP 质量要求高于其它 Google 服务,目前默认谷歌学术位于教育资源分流之中,也提供单独的谷歌学术分流组供手动选择。

3.3 机场订阅自动更新

可在我的订阅页面开启自动更新,最低间隔 12 小时,开启后会自动定时拉取机场 url。

期间在客户端更新订阅都会使用上次自动更新的缓存,因此数据不变。所以请不要频繁更新客户端导入的订阅!

客户端订阅卡片的流量和到期日期会将所有机场的数据透传并叠加,叠加逻辑为:流量相加,到期日期取最短

4. 问题反馈

反馈可复现 bug 可获得价值 1500 LDC帕米尔大学 AU 校区资格.


📌 转载信息
原作者:
RyanVan
转载时间:
2026/1/9 17:40:25

很多佬友以为开了代理就可以万事大吉的在本地使用某些应用,但现实是一些应用在节点正常的情况下请求失败、偶发 5xx,严重的甚至被封号,除了 IP 的问题 (这个占主要原因),还有一个容易被忽略的地方就是:虽然 HTTP/HTTPS 走了代理,DNS 却出了问题,露出了小鸡脚(尤其在使用 Claude / OpenAI / Codex / Gemini 这类应用时)

声明:为兼顾相关名词解释的专业性和可理解性,部分名词解释由GPT+Gemini给出。


先确认自己 “有没有露出鸡脚”

建议在修改前、修改后各测一次。包括:


开启 TUN 模式

很多客户端 / 服务并不严格遵循系统代理(尤其涉及 UDP/QUIC、系统服务、某些桌面应用、或应用内部自带网络栈的情况)。这会导致你以为 “流量都走了代理”,实际上仍可能存在绕行。而 TUN 的意义是:减少绕过代理栈的机会,在网络层统一接管


Clash 中的 DNS 覆写是个什么东西

DNS 泄露的典型形态是:

访问网站的连接走代理,但域名解析(DNS 查询)仍走本地网关 / ISP。

所以 “防 DNS 泄露” 的核心不是换节点,而是做到两点:

  1. DNS 查询入口被 Clash 接管(系统 / 应用问 DNS 时,问到的是 Clash,关闭系统代理,开启 TUN 模式
  2. Clash 的上游 DNS 不走 system/ISP(否则等于把查询又交回本地,覆写 DNS

下面我们来详细看看 DNS 覆写


DNS 覆写中的一些关键字段解释

为保证专业性和可理解性,部分名词解释由大模型辅助生成

下面以 Clash / Clash Meta 系的常见字段为语义解释(GUI 名称可能略有差异,但逻辑大差不差)。

启用 DNS 开启后 Clash 会提供本地 DNS 服务;不开启通常意味着系统继续使用原来的 DNS(常见就是 ISP),泄露风险直接拉满。

DNS 监听地址 Clash 在哪个地址 / 端口上提供 DNS 服务(常见 :53)。如果端口被占用、监听失败,系统仍可能回退到原 DNS;这类问题很隐蔽,表现为 “我明明配置了,但检测还是 ISP DNS”。

增强模式 最常见的是 fake-ip。它的思路是:Clash 对域名返回一个 “假 IP”,后续连接再由 Clash 接管映射到真实目标。 对防泄露而言,fake-ip 的优势是 纳管强、路径更可控,配合 TUN 往往最稳。代价是:极少数局域网 / 特殊域名可能需要加入 fake-ip-filter 以避免兼容问题。

Fake IP 范围 只是 “假 IP 池” 的网段范围,通常默认值即可(除非与你局域网网段冲突)。

Fake IP 过滤 用于声明哪些域名不要走 fake-ip(例如 .lan.local、部分系统探测域名等)。目的通常是兼容性与减少奇怪的本地网络问题,而不是 “提升安全性”。 推荐用 blacklist 思路:只把确实需要排除的域名放进去即可。

默认域名服务器 用于 “先解析上游 DNS 的 DNS 服务器”。比如你填了 https://dns.google/dns-query,那 Clash 也得先知道 dns.google 的 IP 才能连上它 —— 这一步就靠 default-nameserver。如果这里填 system 或 ISP DNS,就可能在 “第一跳” 就把域名暴露给本地。因此这里最好填可靠的公共 IPv4 DNS(不要 system),例如 1.1.1.1 / 8.8.8.8 这类;你也可以放多个做冗余。

域名服务器 真正负责日常解析的上游 DNS。这里推荐优先使用 加密上游(DoH/DoT),因为它能降低本地网络侧窥探 / 劫持的概率,也更符合 “可控出口” 的目标。可填写 tls://1.1.1.1:853, tls://dns.google:853

回退服务器 当主 nameserver 不可用或不满足条件时用于回退。很多人的 DNS 泄露就出在这里:fallback 指向了 system / ISP,导致 “平时看起来没事,偶发就泄露”。 如果你要用 fallback,最稳的策略是:fallback 也只放加密上游,不要放 system/ISP

代理节点 DNS 用于解析 “代理节点本身的域名”(很多机场节点是域名形式)。如果这里走 system/ISP,你的 “代理节点域名” 可能暴露给本地 DNS(常听到的域名被污染就是因为有用户这里设置的有问题);同时也可能导致连节点慢、切换不稳定。

直连域名服务器 当某些流量被判定为 DIRECT 时,用哪个 DNS 解析。这里本质是隐私与体验的权衡:

  • 用本地 / ISP:可能更 “就近”,但域名可见性更高
  • 用加密公共 DNS:隐私更好,但个别场景可能不如 ISP 就近 如果你的目标是 “尽量不泄露”,建议 direct-nameserver 也使用加密上游,但这样速度可能会变慢

域名服务器策略、回退过滤设置、Hosts 设置等保持默认即可

IPv6 开关(ipv6) 如果你的代理链路 / 节点对 IPv6 支持不完整,IPv6 非常容易成为旁路,出现 “我明明开了代理但检测仍能看到本地信息” 的现象。 不确定就关

prefer-h3 / HTTP3 主要是性能 / 兼容性取舍,在一些网络环境下 QUIC 更容易不稳定。可以先关 *。

respect-rules(遵循路由规则) 让 DNS 的出站策略与规则更一致。对 “防泄露” 来说,它不是第一优先级:更关键的是不要让任何上游指向 system/ISP。上游安全了,respect-rules 的风险面会小很多。


知道了上面这些之后,怎么才能不漏鸡脚呢?

如果你主要目标是:使用 Claude/OpenAI/Codex/Gemini 这类应用时尽量不发生 DNS 泄露,可以按这个顺序做:

  1. 启用 TUN(优先保证流量纳管)
  2. DNS 覆写启用,增强模式选 fake-ip
  3. 禁用 IPv6(避免旁路)
  4. 上游 DNS 全部避免 system/ISP
  • default-nameserver:用可靠公共 IPv4 DNS(不要 system)8.8.8.8, 1.1.1.1
  • nameserver:优先 DoH/DoTtls://1.1.1.1:853, tls://dns.google:853
  • fallback:如需启用,也只放 DoH/DoT(不要 system/ISP)tls://1.1.1.1:853, tls://dns.google:853
  • proxy-server-nameserver /direct-nameserver:尽量与 nameserver 保持一致(减少分叉与意外出口)

最后回到第 1 节:改后再测一次 IP 与 DNS

修改完之后变成了这样,又可以愉快的玩耍了


常见的坑

  • 上游里出现 system / 本地 ISP:把 default-nameserver / fallback / direct-nameserver 留成 223.5.5.5, 119.29.29.29doh.pub / alidns,然后检测必然出现中国 DNS
  • DNS 监听失败(端口占用),以为覆写了,其实系统还在用原 DNS
  • Chrome/Edge/Firefox 可能启用 Secure DNS(DoH),这会让浏览器直接用它自己的上游(可能自动选了国内),绕过系统 / Clash。关闭浏览器的 Secure DNS 或 把浏览器 Secure DNS 指定到你想要的 DNS
  • WebRTC 泄露,可以考虑使用指纹浏览器或者找插件禁用
  • fallback 指向 ISP
  • TUN 未启用
  • IPv6 未禁用


如果想求稳,使用 Claude / OpenAI / Codex / Gemini 等应用时:开 TUN + 开 DNS 覆写(fake-ip)+ 禁 IPv6 + 上游 DNS 不用 system/ISP;改前改后各做一次 DNSLeakTest 验证。

以上,希望大家都能愉快玩耍~


📌 转载信息
原作者:
Barley
转载时间:
2026/1/9 10:10:30

前言

比较碎碎念

几年前,在没有经过复杂的配置之前,我一开始使用的是某不知名 vpn,45 元包月的那种,虽然很稳定,但是一直上不去 openai , 于是我经过一番资料的查找,我选择了一家机场,一直用到现在,也就是 flowercloud, 配合 clash verge 进行链式代理上网.

这一步还不懂配置的朋友请先掌握 clash 和机场的订阅方法,很简单.

clash 我的个人使用习惯

建议

  1. 始终使用 Tun 模式 (虚拟网卡模式), 系统代理不需要开.
  2. 选择规则 rule 模式 (大机场的话会自己附带规则,基本上不需要自己手动修改,除非按这个帖子修改一点点内容), 这样的话访问国内网站不需要流量中转,不会工作微信收个图片也得先去日本跑一圈.

Then…

我终于访问 openai 了!然后就是紧跟时事了呗,每天喝喝咖啡看各种技术帖子,逛论坛什么的,深度思考一直用的不算多,直到我开始非常非常重度的使用 AI 来进行工作和学习.
发现降智是我第一次使用 openai 的 deep research 功能的时候,满怀期待的我,发现他在深度研究的时候访问的网站非常的奇怪且不入流,都是各种花边新闻,根本不是 gemini 的那股子干活劲儿,我就发现了 openai 的鸡贼之处.

经过一段时间的思考,我发现我的主力模型还是只能是 gpt, 于是我开始搜索防止降智的方法。经过好一番折腾后,总结最佳方法如下!

环境和软件要求

  1. clash + 机场 (非常常见的上网环境)
  2. 一个 https/http 的或者支持 socks5 连接的静态住宅代理

关于静态住宅代理和家宽到底是否有效支持 AI 降智的说法众说纷纭,我只能说,在我不想购买高额的家宽 (动辄几十美元) 也不想折腾 VPS (我也不懂) 的情况下,从各种 proxy 网站购买的一个月大概 5 刀的静态住宅代理绝对能满足我不想 openai 降智的刚需,要是有更好的做法也欢迎各位佬友讨论!

1. 第一步,购买一个静态住宅代理

随便买一个就可以,但是建议买美国的 (日本的也行), 我买了 60days 花了大概 10 刀,仔细找估计会有更有性价比的。一般来说服务会提供 socks5 或者 http 连接,端口不同而已,我们选择 socks 配置方法,在这里我使用了脱敏数据,操作更直观一些.

假设这就是你买到的服务啦

server: 104.21.55.2
port: 20086
type: socks5
username: user_8d9b877
password: pass_7c1ea5

第二步,打开你的 clash

1. 选择 tun 模式 (虚拟网卡模式), 开启 Rule 模式
(这一点都不奇怪对吧)


2. 跳转到订阅界面,右键你使用的订阅,点击编辑文件


之后大概是这个样子

第三步:开始配置

找到类似这部分的代码

proxies:
  - {name: "Traffic: 108.45 GB | 400 GB", server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: Sj10bnYDe7w6V29E, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}
  - {name: "Expire: 2026-01-13", server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: Sj10bnYDe7w6V29E, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}
  - {name: 🇭🇰 香港实验性 IEPL 专线 1, server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: XXXXX, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}
...

也就是以 proxies 开头的部分,在最下面填写你买好的静态住宅服务

proxies:

  - {name: "Traffic: 108.45 GB | 400 GB", server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: Sj10bnYDe7w6V29E, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}
  - {name: "Expire: 2026-01-13", server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: Sj10bnYDe7w6V29E, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}
  - {name: 🇭🇰 香港实验性 IEPL 专线 1, server: gzdata1.233netbest.com, port: 10011, type: ss, cipher: aes-128-gcm, password: XXXXX, plugin: obfs, plugin-opts: {mode: http, host: 28fc00eeca.m.ctrip.com}, udp: true}

 ⬇️直接粘贴

  - {name: 家宽落地, server: 104.21.55.2, port: 20086, type: socks5, username: user_8d9b877, password: pass_7c1ea5, dialer-proxy: 运载火箭}

dialer-proxy: 运载火箭的作用是声明这个是链式代理,也就是调用这个服务器之前,去运载火箭这个组里的服务器先溜一圈,这样即可以满足流量正常出境,也可以针对 openai 显示美国 / 日本静态住宅的身份,一举两得

继续下拉,找到 proxy-groups 那一栏,按照缩进把这个粘贴进去 (注意缩进在 proxy-groups 栏目的里面)

proxy-groups:
  ⬇️是你要粘贴进去的
  - name: 运载火箭
    type: select
    proxies:
      - 🇯🇵 日本高级 IEPL 专线 1
      - 🇯🇵 日本高级 IEPL 专线 2
      - 🇯🇵 日本高级 IEPL 专线 3
      - 🇺🇸 美国高级 IEPL 专线 1
      - 🇺🇸 美国高级 IEPL 专线 2
      - 🇺🇸 美国高级 IEPL 专线 3
  

这里面局部的的 proxies: 如果您和我的不一样,就去找上文的 proxies 服务器,选择几个你最常用的,我这里选了几个,您任选就好.(这一步看不懂可以问 AI)

继续在 proxy-groups 下拉,找到 name 为 OpenAi 的选项,这样进行配置:

  - name: OpenAI
    type: select
    proxies:
      - 家宽

完成了

如何使用

关闭设置界面,和我一样操作

如果和您的配置文件差异较大,可以问 LLM, 他一看就懂.


📌 转载信息
转载时间:
2026/1/8 18:09:45

市面上开源的各种订阅聚合工具挺多的,各有特色,但是涉及到添加中转相关,大多都需要有地方部署后端,或是配置非常复杂,我没找到能满足简单需求的。

这个脚本主要面向需求较为简单的用户,比如自己有常用网络环境下的线路鸡,但要访问目标网站有地域限制(比如 AI 不能走香港出口),又希望能从线路鸡中转到各种入口不那么好的机场的用户。

脚本的逻辑很简单,就是会添加 LANDINGENTRY 两个节点组。ENTRY 中有上游订阅的所有节点,LANDING 中为上游订阅中的每个节点增加 dialer-proxy: ENTRY,再为其他策略组增加 LANDING 选项。这样只需要在 ENTRY 中选择自己的线路鸡,再点击 LANDING 组的测速按钮,选择落地鸡即可。中转节点和落地节点都可以随时切换。

如下图:

import yaml from 'js-yaml';

interface Proxy {
  name: string;
  [key: string]: unknown;
}

interface ProxyGroup {
  name: string;
  proxies?: string[];
  [key: string]: unknown;
}

interface ClashConfig {
  proxies?: Proxy[];
  'proxy-groups'?: ProxyGroup[];
  [key: string]: unknown;
}

export default {
  async fetch(request: Request): Promise<Response> {
    const url = new URL(request.url);
    const upstream = url.searchParams.get('url') || '这里修改为你的上游订阅';

    try {
      const res = await fetch(upstream);
      if (!res.ok) return new Response('Upstream error', { status: 502 });

      const text = await res.text();
      const config = yaml.load(text) as ClashConfig;
      if (!config?.proxies) return new Response('Invalid config', { status: 400 });

      const proxyNames = config.proxies.map(p => p.name);
      const landingProxies: Proxy[] = config.proxies.map(p => ({
        ...p,
        name: `${p.name}-landing`,
        'dialer-proxy': 'ENTRY'
      }));

      config.proxies = [...config.proxies, ...landingProxies];

      const entryGroup: ProxyGroup = { name: 'ENTRY', type: 'select', proxies: proxyNames };
      const landingGroup: ProxyGroup = { name: 'LANDING', type: 'select', proxies: landingProxies.map(p => p.name) };

      const groups = config['proxy-groups'] || [];
      for (const g of groups) {
        if (g.proxies) g.proxies.unshift('LANDING');
      }

      config['proxy-groups'] = [entryGroup, landingGroup, ...groups];

      return new Response(yaml.dump(config), {
        headers: { 'Content-Type': 'text/yaml; charset=utf-8' }
      });
    } catch {
      return new Response('Parse error', { status: 400 });
    }
  }
};

只需要本地在 wrangler 里创建一个空项目,复制以上代码块里的代码,修改代码块里的上游订阅,然后部署即可。


📌 转载信息
原作者:
koast18
转载时间:
2026/1/5 15:56:25

前言

只要利用好 gist 和订阅转换,为 Clash 添加规则并不难,既不用自己写工具,也不用自己买台服务器。

看完这篇文章,只需要短短 4 步,你就可以实现:

  • 配置一套属于自己的分流规则
  • 无需 自行搭建任何服务
  • 在 任意 订阅上使用你的规则
  • 拥有跨平台的、通用的、自动同步的自定义规则列表

所需工具

  • GitHub 账号
  • 订阅转换(随便找一个就行)

一、创建远程配置

这一步仅仅是准备工作,你只需要跟着教程做就好,不需要在意细节,等看完整篇教程再回来关注细节也不迟。

打开 https://gist.github.com/ 创建一个新的 gist

为了方便理解,我们从一个非常简单的配置开始

把下面这个 gist 中的所有内容复制到你自己的 gist 里,然后点 create secret gist

https://gist.github.com/miaomiaoclub/8afa34d1be421f9ac14ee5f872865bdb/e7e660e7796e82f6d00c46756b2e593494cd8961

完成之后来仔细查看一下这段配置文件,它实际上就只有两项配置:

# 定义了规则
ruleset=
# 定义了分组
custom_proxy_group=

暂时不需要关注更复杂的细节,下面会讲。

二、创建你自己的代理列表

再新建一个 gist ,这个 gist 里写你自己需要代理的域名,一行一个。

格式如下:

DOMAIN-SUFFIX,google.com

如果想要指定 IP ,格式是

IP-CIDR,1.201.0.0/24,no-resolve

完成之后是这样:

https://gist.github.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5

以后想添加需要走代理的域名,修改这个 gist 就可以。

三、将代理列表加入规则中

打开上一步创建的代理列表 gist ,点击 “raw”,把整段 URL 复制出来:

https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/0d15083648bda2d0420b9260632736eceb4dcb3c/yourlist.list

删掉“raw”后面的所有部分: https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/yourlist.list 这里我保留了文件名,删掉也可以,随你喜欢,只要能打开就行。

回到第一步创建的 gist ,添加一行,其中后面的链接用上面得到的

ruleset=? 节点选择,https://gist.githubusercontent.com/miaomiaoclub/76a9b5dbaad3203f9617dd69b4c74ea5/raw/yourlist.list

完成之后是这样(第 12 行是新添加的):

https://gist.github.com/miaomiaoclub/8afa34d1be421f9ac14ee5f872865bdb/03a5288b68c0fdb780e6e533c70ade4aff65b3a8

四、订阅转换

打开你平常爱用的订阅转换。

任意一个都可以,请不要发“偷订阅”之类的回复。

由于上个帖子有人恶意揣测,这里不贴链接和截图,自行 Google 。

打开之后先像平常一下在订阅链接里填上订阅。

重点来了。

打开第一步创建的 gist ,点击 raw ,一样把 URL 中 raw 后面的内容全部删掉,粘贴到“远程配置”一栏,注意,粘贴进去之后还需要在下拉框点击一下。

五、完成

像平常一样点击生成订阅链接,到 Clash 中订阅,一切就完成了。

六、一些后记

在这篇教程的例子中,我将 chatgpt 添加到了代理列表中,如果你还没理解如何做到的,请再看一下第二步创建的配置文件。

我相信你的好奇心和求知欲还想做更多操作,所以你应该会想看看官方文档:https://github.com/tindy2013/subconverter/blob/master/README-cn.md

一个关于性能的小 tip
subconverter 默认展开规则,但实际上 rule provider 的性能更好,在正文里没有提到这点是因为开启这个选项可能导致无法订阅,因为 clash 更新 provider 是通过直连。

如果有能力,最好还是使用 provider ,ip-cidr 和 domain 两种类型的 rule set 可以带来非常大的速度提升和内存节省,stash 的 wiki 里也有提到这一点,具体原因和解释可以看 https://t.me/AirixCloud/36

原文链接:https://luxirty.com/article/custom-clash-rule

前言

去年我发布了一篇关于 clash relay 的教程
当初随便拿来放临时配置的 gist 也有了 50 多个 star https://gist.github.com/miaomiaoclub/6947f7cb93846301f1658da0edcd61bf
时隔半年多,这套方案在和朋友 @ RADE 的共同学习中有了不少改进,tunnels 功能的加入更是让整套方案如虎添翼,不少体验让我自己都有种“wow”的感觉,例如 延迟降低 100% 。
最终的效果让我到现在都非常兴奋,所以我花了一周时间再来写一篇文章和大家分享。

快速体验

这是我目前使用的配置的示意图,为了美观简化了不少内容。
我花了一周准备,想和你分享 Clash 所有特性运用到极致之后的体验
因为所有东西要讲完真的很复杂,为了让大家快点感受我的激动,我花了一周时间写了一个模版让你可以在 30 秒内开始体验这一切。

你只需要去 https://www.urlencoder.org/ 或者其他什么网站把你的订阅链接进行 url 编码。

然后把编码后的内容拼接到下面这一大串链接的末尾,再把它放到 Clash 里面订阅就可以了。

https://api.sublink.dev/sub?target=clash&insert=false&config=https%3A%2F%2Fgist.githubusercontent.com%2Fmiaomiaoclub%2F2178a7dd7fbbf4b7774ad6f7ad2000c5%2Fraw&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true&url=https%3A%2F%2Fgist.githubusercontent.com%2Fmiaomiaoclub%2F92fc5af76ede047810a7a51af86089ee%2Fraw%7C

完成之后你应该可以看到这样的分组,其中的 READY BOOST 就是使用了 tunnel + grpc 的连接,你可以把左右两边的延迟进行对比。
我花了一周准备,想和你分享 Clash 所有特性运用到极致之后的体验1
然后你可以在节点选择列表的末尾找到 READY BOOST ,选中它,然后打开几个网页,另外,它应该是可以解锁 ChatGPT 的。

顺带一提,当你自行实现的时候,它是 udp fullcone 的,我在这里禁用了 udp 。

这套体验配置会在 1 天后失效,取决于这个帖子的回复情况延长或缩短。

实现原理是什么?

基于 grpc 的连接复用。
关于 proxy chain 的优点,可以查看下面这篇文章

https://luxirty.com/article/01815b7d-073d-48ef-9528-7b4ad033f8d0

这里主要讲讲 grpc ,众所周知,连接复用可以节省握手时间,http/2 就拥有连接复用的特性。

然而 clash 只为 grpc 实现了连接复用,http/2 在 clash 中并不具备连接复用。

基于 tunnel 的 proxy chain
在实际测试中,我们(@RADE )发现 relay 实际上导致了非常多的问题,例如 udp 无法通过、grpc 奇怪的高延迟等。

因此我们使用 tunnels 替换了 relay ,它的表现相比于 relay 优秀了很多。

你可以到 clash 的官方 wiki 来学习 tunnel 的用法 https://dreamacro.github.io/clash/configuration/configuration-reference.html

也可以看看我的博客,有稍微容易看懂的讲解 https://luxirty.com/article/chain-proxy-powered-by-clash-tunnels

负载均衡、故障转移、最短延迟

在上面的体验配置中我并没有把所有这些特性都加上。因为写起来太麻烦了。但我相信对 V2EX 的各位来说并不难。

实际上还有更多的内容可以讲:

  • 如何更方便地为 clash 自定义规则
    你可以看到在上面的测试配置中,我们修改了配置并添加了节点,并且没有依赖任何自建服务,一个公开的 subconverter+gist 足够了
  • 使用订阅转换时,如何把来自不同订阅的 proxy 分别放到不同的 group
    唔…好啦,大概就这些!……