此前我在博文中写了 167 clash内核/clash meta内核, 机场tunnels隧道 实现绕过机场审计 这篇文章, 利用 clash 的 tunnels 功能, 实现了 自己的宽带网络 <-> 机场 <-> 自己搭的服务器 这种类似简单 tor 网络的功能.
自己手上有几个机场, 来回选节点有点麻烦, 于是就用 proxy-groups.type: url-test 这个功能来进行择优, url-test组其实机场订阅里经常会看到, "自动选择"就是 url-test, 这个组的选择结果必定是延迟最低的节点, 再用这个延迟最低的节点去和"自己搭的服务器"对接, 形成隧道.
写法如下:
proxy-providers:
1:
#第一个机场
type: http
url: "https://订阅链接"
path: 1.yaml
interval: 21600
2:
#第二个机场
type: http
url: "https://订阅链接"
path: 2.yaml
interval: 21600
proxy-groups:
- name: Tunnels
type: select
proxies:
- 出口1
- 出口2
- Proxy
- name: Proxy
type: select
proxies:
- 机场1-自动选择
- 机场2-自动选择
- 机场1
- 机场2
- name: 机场1-自动选择
type: url-test
use:
- 1
tolerance: 0 #这是一个差值, 如果设置成50, 举个例子: 现在内核自动选择的节点延迟100ms, 新一轮测速中有一个节点是50ms, 那将会切换到50ms的节点. 再举个例子, 现在内核自动选择的节点延迟100ms, 新一轮测速中有一个节点是52ms, 那将不会切换到52ms的那个节点. 这个值设置为0和不写这项 其实是没有区别的, 我习惯写上.
lazy: true #只测选择相关的, 不会整个机场节点都测速. 比如你在下面用filter筛选出了美国节点, 那url-test就只测这些select相关的, 以及美国节点.
url: https://www.gstatic.com/generate_204
interval: 300
disable-udp: false
#这个正则是排除这些节点名的意思, 留作备用 ^((?!(群组|直连|官网|群组|套餐|剩余|更新订阅)).)*$
filter: 美国 #这里重点提一下, 有时候择优的节点是日本, 延迟很低, 但我的落地服务器在美国, 按照 家宽-国内中转日本的机场-美国落地服务器 的链路来走, 最高速度没变, 但doh这种dns请求, 延迟会高出好多, 所以我filter选出了美国节点, 延迟会少一点.
- name: 机场2-自动选择
type: url-test
use:
- 2
tolerance: 0
lazy: true
url: https://www.gstatic.com/generate_204
interval: 300
disable-udp: false
filter: 美国
- name: 机场1
type: select
use:
- 1
filter: ^((?!(群组|直连|官网|群组|套餐|剩余|更新订阅)).)*$
- name: 机场2
type: select
use:
- 2
filter: ^((?!(群组|直连|官网|群组|套餐|剩余|更新订阅)).)*$
rules:
#- PROCESS-NAME,com.kiwibrowser.browser,DIRECT
- IP-CIDR,255.255.255.255/32,REJECT
- IP-CIDR6,ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128,REJECT
- GEOIP,PRIVATE,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Tunnels #注意这里是最终的select