Clash Verge系列使用最佳实践

 首先我们先明白一个概念,Clash Verge(开源)、Clash for Windows、Clash X Pro这一类图形化的软件,都是一个壳,用于对接核心的功能。

常见的核心有Clash Premium、Clash Meta(开源)
因为Clash Verge和他能切换的内核Clash Meta都是开源的,所以我们应该优先选这个搭配,下文中也会使用。
其次,作者如果不更新了,我们还能够继续使用他们吗?
当然可以,解释如下
  1. 就像你在使用一个收音机(Clash Verge),你不会因为收音机的制造商(作者) 倒闭了(停止更新),而立刻扔掉你的收音机
  1. 收音机的所有零件图纸是公开(开源) 的,你不用担心他可能植入一些不好的后台程序
  1. 收音机的外壳按钮(Clash Verge) ,是让我们更轻松的控制收音机里面的主板元件(Clash Meta核心) 去执行它们的任务,只要这个 外壳按钮(Clash Verge) 控制 收音机主板(Clash Meta核心) 的方式没有太大问题,那我们就可以用
  1. 外壳停止更新,意味着收音机外壳不会增加新的按钮
  1. 核心停止更新,意味着收音机主板不会更新功能,仅此而已
  1. 收音机能播放声音(开启魔法),是因为你输入了正确的FM频率(订阅链接)。只要电台(机场) 还在广播(服务),只要你的壳和核还在,就不影响你播放声音(开启魔法)
最后,我们要明确一点,下文中涉及到隐私保护的操作并不是绝对的安全,就像是想要知道你在家里做什么,可以在楼下垃圾桶翻你的扔的垃圾进行推测,可以望远镜监视你,可以把你家天花板炸了或者用大炮强行冲进来看。网络监控也一样,就看你在网络上的行为,值不值得人家用那些高阶手段了,总不能因为挖掘机一铲子能把防盗门破了我就不装防盗门了。

目前可用的开源Clash Verge客户端

Clash Verge虽然暂时是归档停止维护状态,但是现在有不少基于Clash Verge继续开发维护的客户端

太长不看版本

  1. 订阅转换(必做)
  1. 开TUN模式,关代理(可选)
  1. 关闭浏览器安全DNS地址,设置TUN模式的DNS地址(可选,如果操作了2,则此项必做)
  1. 关闭多宿主DNS解析,关闭浏览器QUIC(Windows可选)
  1. 设置本地中国IP数据库(可选)

解决订阅分流规则问题

拿到了订阅链接,第一步要做的应该就是订阅转换,将他的分流规则完善 (因为给你提供订阅的服务商,自带的分流规则往往就几百条,很不健全,很多人开着Clash但New Bing却用不了就是个很好的例子)
在线订阅转换不仅仅是将Shadowsocks、V2ray、Trojan 订阅链接转换为 Clash 、Stash、V2ray、Quantumult X、Surge 等软件使用的订阅格式,他还支持非常多的进阶操作,不过在本文仅以够用为目标,而不是把这个东西玩出花来。
在线订阅转换网站虽然好用,但也有一定的隐私风险,需要注意,建议会技术的朋友自己搭建在线订阅转换平台。

订阅转换网站

我搭建的订阅转换网站, 下文将使用该网站作为示例

需要操作的步骤

notion image
一般这样就已经可以比较完美的使用了,并且拥有我写的远程配置文件中的一些额外功能

判断是否成功套用了规则文件

拉取订阅后, 节点中应该会出现“🌿自动选择”、“🇭🇰香港自动”、“🇨🇳台湾自动”、“🇸🇬狮城自动”、“🇺🇸美国自动”、“🇯🇵日本自动”这几个自动节点。能看到这几个自动节点, 那你就成功在自己的订阅上套用了我的规则。
推荐在没有特殊需求的时候选择用这几个自动节点, 自动节点会帮你使用对应国家/地区节点中, 延迟最低的节点。

关于图中第4步的远程配置

这个远程配置是什么,能赋予你的订阅什么功能,你可以打开「远程配置」原文的链接,顶部有注释

解决DNS泄露问题

什么是 DNS 泄露其实并没有一个明确的定义,也不存在一个官方解释。大概就是说你访问YouTube等黑名单网站的时候,使用中国大陆的DNS服务器进行了解析,这可能导致隐私问题的。如果在 DNS Leak Test 、ipleak这种网站的列表中看到了中国国旗,就要意识到可能发生了DNS泄露。
如果真的泄露了有什么问题呢 ? 我也不知道可能导致什么,或许你可能收到下图这样的消息
notion image
 
notion image
 
我觉得还是尽量不要让他们知道这件事。虽然没有人知道具体的探测机制是什么,但很可能是从网络层面获取的。在一般的家庭网络拓扑中,wireshark可以看到什么内容,运营商就能看见什么内容,所以你使用114.114.114.114、223.5.5.5这样的DNS解析去访问了什么网站是很清晰的。
这就要衍生出第一个使用技巧——Clash开启TUN模式,关闭系统代理去使用
与普通的系统代理模式区别在于,TUN模式下Clash会创建一张虚拟网卡,从网络层面接管所有的网络流量。
普通的系统代理模式,是作为一个软件的权限去接管别的软件的网络,总有一些无法接管的应用,比如游戏,比如命令行。所以我们应该开启TUN模式,关闭系统代理,让网卡做这件事,而不是让软件做这件事

操作一 (开启TUN模式)

  1. 首先切换Clash Verge的内核,选开源的Clash Meta内核,然后重启整个Clash Verge确保生效
    1. (Clash Meta在后期可能在不同的客户端名称有所不同, 如果看到内核名字是Mihomo 版本号是1.x.x的也是Meta)
      notion image
  1. 安装服务并且开启Tun模式,按下方图中的数字序号顺序点击
    1. notion image
      如果服务模式无法安装
      • Win可以尝试在系统命令行(PowerShell)中执行sc delete clash_verge_service 来删除之前的Clash Verge服务,这可能是你之前安装过Clash Verge,但是卸载的时候没有写在这服务模式,导致新的安装不上
      • Mac/Linux请在设置的Clash内核点开齿轮图标⚙️,点"授权”
但是当我们开启了TUN,再去查看泄露时,发现还是有中国服务器(Windows系统可能出现)。这是由于fake-ip模式将DNS请求同时发送给了本地的物理网卡和Clash虚拟网卡,我们希望只发送给Clash的网卡,因为Clash创建的虚拟网卡会按我们的要求做事,本地真实的网卡不会。

操作二 (调整组策略 Mac跳过)

要解决这个问题也很简单,问题出现的原因是Windows系统默认使用多宿主DNS解析,会使用所有的网卡发起请求,我们只需要在组策略(Windows家庭版无该功能)中关闭这个功能即可(Win+R,输入gpedit.msc 点确定)。
notion image
至此,我们解决了Clash在Windows下可能发生的DNS泄露问题。
但并不能保证ipleak检测不到,因为这个网站并不被墙。虽然我可以将ipleak加入规则中,但这样做就是掩耳盗铃。只要确保某些黑名单网站不被漏掉,不会收到上面那种短信,我认为就可以了。

操作三 (使用一个稳定的的DNS)

DNS这部分有人会教使用运营商的DNS,运营商的DNS只适合小白用户,因为他可能连反诈,所以建议使用国内大厂的,因为这个DNS只用来解析被规则命中的(中国大陆网址),一般都是没有被封锁的,所以用大厂的没什么问题。
  1. 设置浏览器中的“安全DNS”为关闭
      • Chrome: chrome://settings/security
        • 【使用安全DNS】,关闭
      • Edge: edge://settings/privacy
        • 找到【安全性】 -【使用安全的 DNS 指定如何查找网站的网络地址】,关闭
  1. 在Clash Verge的【配置】中,点右上角的新建,进行如下操作
    1. notion image
  1. 右键点击新建的卡片,选择编辑文件,并输入以下内容,保存,右键点击卡片启用
    1. notion image
      function main(content) {
        const cnDnsList = [
          'https://223.5.5.5/dns-query',
          'https://1.12.12.12/dns-query',
        ]
        const trustDnsList = [
          'https://1.0.0.1/dns-query',
          'https://208.67.222.222/dns-query', 
        ]
        const extraDNS = {
          'enable': true,
          'default-nameserver': cnDnsList, // 用于解析DNS服务器 的域名,必须为IP, 可为加密DNS
          'nameserver-policy': {
            'geosite:cn': cnDnsList,
            'geosite:geolocation-!cn': trustDnsList,
          },
          'nameserver': cnDnsList, // 默认的域名解析服务器,如不配置fallback/proxy-server-nameserver,则所有域名都由nameserver解析
        }
        content.dns = content.dns ? { ...content.dns, ...extraDNS } : extraDNS
        return content
      }
      JavaScript
      notion image
      图片仅提供界面参考, 实际内容以上方代码块为准
      notion image
       
这是用来在在匹配到规则中不需要代理的中国大陆网站时, 使用阿里/腾讯的DoH服务器进行解析, 防止一些不必要的反诈跳转和DNS绕路查询。比如访问一个baidu.com, 命中了规则, 发现不需要代理, 此时会并发向阿里和腾讯的DNS服务器进行请求, 使用最快的响应结果, 完成接下来的访问。
trustDnsList 中列出了一些中国大陆连通性还行并且无污染的DNS服务器, 如果你有更合适的可以追加替换数组中的DNS地址, 不要用谷歌的, 会被防火墙抢答导致网络无法连接。

解决GEOIP, CN问题

目前市面上绝大多数的代理工具都依赖于 GeoIP2 数据库判断地址所属地。它们的规则结尾部分一般都会有一条类似 GEOIP, CN,用来查询目的 IP 地址是否属于中国大陆,从而判断是否直连。
这些代理工具通常使用的 GeoIP2 数据库是来自于 MaxMind 的 GeoLite2 免费数据库。这个数据库目前存在一下几个问题:
  • 获取不便:从 2019 年 12 月 30 日起,必须注册后才能下载
  • 数据量大:数据库庞大,包含全球的 IP 地址段,约 4 MB
  • 准确度低:对中国大陆的 IP 地址判定不准,如:香港阿里云的 IP 被判定为新加坡、中国大陆等
庞大的数据量无可厚非,但是对于大多数中国大陆的用户来说,仅需要去判断 IP 的地理位置是否属于中国大陆境内,其他国家的 IP 一律代理。过多的数据量会增加载入时间,降低查询效率。
而最致命的问题就是准确度低,这会导致代理工具查询后得到错误,做出错误的分流判定,最终导致用户体验不佳,如:网站无法访问、访问缓慢等问题。
我们使用GeoIP2-CN这个开源项目来解决这个问题
  1. 下载对应的数据库,你会下载到一个名为Country.mmdb的文件
  1. 右键托盘中的Clash Verge图标,【打开目录】-【应用目录】
  1. 退出Clash Verge,将刚才下载的文件,放入刚刚打开的目录进行文件替换
  1. 重新打开Clash Verge

我希望xxx.com不要走代理, 如何做?

  1. 点击左侧「订阅」菜单, 点击右上角的「新建」按钮
  1. 类型选择「Merge」, 名称自己起一个, 点保存
  1. 右键点击刚才新建出来的Merge, 点击「编辑文件」, 在prepend-rules: 后面进行添加 (Clash的策略是从上往下读取规则, 读取到了就不再往下找, 所以要使用prepend, 在前面插入规则)
  1. 格式如下, 自行灵活组合即可添加你想要的规则, 写时注意yaml文件的缩进
    1. (不要照搬下面的规则, 只是写法演示, 演示内容写的策略很不合理! )
      prepend-rules:
      # ↓表示`*.baidu.com`会走`🔗 无需代理`这个策略组, 而这个策略组默认行为走直连而非走节点
      - DOMAIN-SUFFIX,baidu.com,🔗 无需代理
      
      # ↓表示`abc.baidu.com`会走`DIRECT`这个内置策略
      # DIRECT同样为直连, 区别在于这条规则不受`🔗 无需代理`策略组控制
      # 🔗 无需代理策略组只是名字叫“无需代理”, 你可以手动调整他的策略, 但DIRECT不能调
      - DOMAIN,abc.baidu.com,DIRECT
      
      # ↓表示`Weiyun.exe`这个源进程名, 会走`🛡️ 广告拦截`, 而这个策略组默认行为是Reject请求
      - PROCESS-NAME,Weiyun.exe,🛡️ 广告拦截
      
      # ↓表示只要请求url中包含`aria2`这个关键字, 就会走`REJECT`这个内置策略
      # REJECT同样为丢弃请求, 区别在于这条规则不受`🛡️ 广告拦截`策略组控制
      # 不解释了, 和上面的无需代理一样的逻辑
      - DOMAIN-KEYWORD,aria2,REJECT
      
      # ↓表示所有的22端口都走`✈️ 节点选择`这个策略组, 也就是走你选择的节点流量
      - DST-PORT,22,✈️ 节点选择
      
      # ↓表示指定的ip段不需要代理, 记得在最后加`,no-resolve`
      # no-resolve会告诉Clash不要去尝试解析来匹配这条规则, 只处理「直接IP访问」的请求
      - IP-CIDR,203.205.254.0/23,🔗 无需代理,no-resolve
      - IP-CIDR6,2a0b:b580::/48,🔗 无需代理,no-resolve
      YAML
      上面只写了常用的, 还有更多规则类型详见Clash文档的对应章节虚空终端Docs
  1. 写完之后右键你新建出来的Merge, 点击「启用」, 再点击右上角的「重新激活订阅」按钮来刷新配置
    1. notion image

至此,就完成了我认为的Clash的最佳实践配置。
远程配置的维护我会持续进行,希望文章的内容能对你有所帮助。

评论

匿名说…
转载请标明出处
匿名说…
转载也不写明出处,图片都没贴对

此博客中的热门博文

X-UI 安装使用教程,支持多协议多用户的 Xray 可视化面板

非 root 用户自建 v2ray 梯子 (serv00-vmess)

使用一键脚本,部署 Hysteria 2(歇斯底里)协议节点-尚未完成小火煎的配置

Telegram RSS机器人-Flowerss bot比较全面的安装教程

使用x-ui面板中转流量解锁流媒体-服务器端分流节点

最新11个可用的TG代理,请收藏!

Serv00搭建各种服务

VPS挂机流量

X-for-Serv00 让你的 Serv00 节点获得更好的体验