全平台统一代理——Clash
subconverter合并多个订阅及自定义规则和策略组

代理软件的使用历程

  • 使用赛风VPN
    • 听人提及到 SSR ,转用 SSR
  • 每个设备分别使用 SSR
    • 由于 SSR 封锁严重,跟随购买的机场换为 V2ray
  • 每个设备分别使用 V2ray
    • 困扰于每个平台都要运行代理软件 + V2ray 客户端不怎么好使+ Linux 运行代理程序需要命令行+手中刚好有树莓派,决定换用 Openwrt
  • Openwrt 单臂路由 + SSRPlus
    • 因为是单臂路由,有的设备不能自定义网关 + SSRPlus 自定义程度不够+ PassWall 莫名其妙的不能用+住校+主流机场换用了 Clash ,决定每个平台分别使用 Clash
  • 决定全平台使用 Clash

全平台 Clash 的调教过程

(其实是 subconverter 的调教过程)
虽然用了 Clash ,但机场提供的配置方案不是很符合个人需求(而且主用的机场没有 ipv6 的配置),且手中有多个机场(主用机场 + 便宜的备用机场 + 按流量付费,使用特殊节点的机场),于是使用了 subconverter 来制作 Clash 配置文件。

目的

  1. 多个机场的订阅合并为一个
  2. 国内直连( ipv4 + ipv6 ),游戏平台自选直连和代理,哔哩哔哩自选直连和代理, Netflix 自选直连和代理,其他国外一律代理
  3. 有一个单独的文件用以手动添加一些直连的域名(用于DDNS NAS的域名)
  4. 使用 Doh 进行域名解析

配置

以默认为主,修改部分条目
/pref.ini
用于添加多条机场订阅

[common]
    default_url=机场订阅地址1|机场订阅地址2|机场订阅地址3

从 url 获取规则片段,并分成几个策略组

[rulesets]
    ruleset=DIRECT,rules/DirectDomain.list
    ;手动添加的直连域名

    ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list,86400
    ;局域网IP段 直连

    ruleset=Bilibili,https://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Ruleset/Bilibili.list,86400
    ;Bilibili域名
    ruleset=Netflix,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Netflix.list,86400
    ;Netflix域名 IP段

    ruleset=Game,https://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/Ruleset/Steam.yaml,86400
    ;steam域名
    ruleset=Game,https://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/Ruleset/Epic.yaml,86400
    ;epic域名
    ruleset=Game,https://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/Ruleset/Xbox.yaml,86400
    ;Xbox域名

    ruleset=DIRECT,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaIPs/ChinaIPs.list,86400
    ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list,86400
    ruleset=DIRECT,[]GEOIP,CN
    ;中国IP段
    ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list,86400
    ;中国域名
    ruleset=Proxy,[]FINAL

为策略组添加节点

[proxy_groups]
    custom_proxy_group=Proxy`select`.*
    custom_proxy_group=Netflix`select`Proxy`.*
    custom_proxy_group=Game`select`[]DIRECT`.*
    custom_proxy_group=Bilibili`select`[]DIRECT`.*

/base/all_base.tpl

{% if request.target == "clash" or request.target == "clashr" %}
    dns:
        enable: true
        ipv6: false
        listen: 0.0.0.0:53
        enhanced-mode: fake-ip
        fake-ip-range: 198.18.0.1/16
        fake-ip-filter:
            - '*.lan'
            - 'localhost.ptlogin2.qq.com'
            - 'dns.msftncsi.com'
            - 'www.msftncsi.com'
            - 'www.msftconnecttest.com'
        nameserver:
            - https://223.5.5.5/dns-query
        fallback:
            - https://223.5.5.5/dns-query
        fallback-filter:
            geoip: true
            ipcidr:
            - 240.0.0.0/4

最后将其部署在了服务器上,并用 Nginx 配置了反向代理和 SSL 加密,得益于 Clash 的在多个平台上都有其客户端,将每个客户端的订阅地址修改为 subconverter 提供的配置文件地址,就可以实现了全平台的代理统一

可用于 subconverter 的规则片段


参考文章


Last modified on 2022-12-22