全平台统一代理——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 配置文件。
目的
- 将多个机场的订阅合并为一个
- 国内直连( ipv4 + ipv6 ),游戏平台自选直连和代理,哔哩哔哩自选直连和代理, Netflix 自选直连和代理,其他国外一律代理
- 有一个单独的文件用以手动添加一些直连的域名(用于DDNS NAS的域名)
- 使用 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 的规则片段
- github.com/Loyalsoldier/clash-rules
- github.com/ACL4SSR/ACL4SSR
- github.com/blackmatrix7/ios_rule_script
- github.com/DivineEngine/Profiles
参考文章
- 利用 subconverter 实现订阅合并与转换
- github.com/tindy2013/subconverter
- subconverter 订阅转换及搭配 clash 使用教程
- Clash for Windows
Last modified on 2022-12-22