TODO:分流重写
1. 代理 proxy
一般指代理服务节点,自建或者机场提供的。
1.1代理集 proxy-provider
购买的机场或自建的代理节点,我们按照一定规则对其归类。归类后的节点称为代理集。
编写规则(clash):
proxy-providers:
my_provider: # 自定义名称
type: http # 订阅类型(http/file)
url: "https://example.com/proxy-list.txt" # 订阅链接
path: "./proxy.yaml" # 本地缓存路径
interval: 86400 # 更新间隔(秒)
health-check:
enable: true
url: "http://www.gstatic.com/generate_204" # 用来测速
interval: 300
代理集中归类的节点可以是本地配置节点也可以是机场订阅节点,可以是一个机场亦或者是多个机场,甚至也可以是符合自定义筛选规则的部分节点。
我们可以为代理集配置健康检查,定时检查并更新代理集中的代理节点。
1.2 策略组 proxy-groups
即“代理组”,能对代理集自由组合使用。也提供了定时测速选择最优节点或者手动选择节点等功能。
proxy-groups:
- name: "Auto" # 自动选择延迟最低的节点
type: url-test # 策略类型
proxies: ["ProxyA", "ProxyB", "ProxyC"]
url: "http://www.gstatic.com/generate_204"# 用于测试延迟的url
interval: 300 # 测试间隔
- name: "Fallback" # 故障转移
type: fallback
proxies: ["ProxyA", "ProxyB", "ProxyC"]
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: "Manual" # 手动选择节点
type: select
proxies: ["ProxyA", "ProxyB", "ProxyC"]
- name: "LoadBalance" # 负载均衡
type: load-balance
proxies: ["ProxyA", "ProxyB", "ProxyC"]
strategy: round-robin # 轮询策略
2. 规则 rules
分流规则。
2.1 规则集 rule-provider
规则负责将指定网络请求丢给指定的的代理去处理。即请求—rule—>代理。
首先确定请求,网络请求的界定既可以是一个特定的域名或者IP,也可以是特定域名结尾或者开头,亦或者是进程名称。
我们一般将一组特定相关的请求归类到一起,称为规则集。
(这些规则往往都是爱好者们整理好开源在Github上并定期维护的,我们直接拿来用就可以了。)
rule-providers:
adblock:
type: http # 规则集来源
behavior: domain # 规则行为
url: "https://anti-ad.net/anti-ad-for-clash.yaml"
path: "./rules/adblock.yaml"
interval: 86400 # 每天更新
github:
type: file
behavior: classical
path: "./rules/github-rules.yaml"
proxy-groups:
- name: "AdBlock"
type: select
proxies: ["REJECT"] # 拦截广告
- name: "GitHub"
type: select
proxies: ["ProxyA", "ProxyB"]
rules:
- RULE-SET,adblock,AdBlock # 引用规则集adblock
- RULE-SET,github,GitHub # 引用规则集github
2.2 规则 rules
一行分流规则包含两部分:代理+请求。
请求可以来自于规则集匹配,代理则可以来自于策略组。
没有匹配到规则的网路请求如果使用代理访问则称为白名单模式,直接请求不经过代理则是黑名单模式。
- 规则如下:
DOMAIN: 精确匹配域名(如google.com)。
DOMAIN-SUFFIX: 匹配域名后缀(如com)。
DOMAIN-KEYWORD: 匹配域名关键词(如facebook)。
IP-CIDR: IP段匹配(如192.168.1.0/24)。
GEOIP: 国家代码匹配(如CN为中国)。
MATCH: 兜底规则(必须放在最后)。
rules:
- DOMAIN-SUFFIX,google.com,Proxy # 匹配google.com走代理
- DOMAIN-KEYWORD,facebook,Direct # 含facebook关键字的直连
- IP-CIDR,192.168.1.0/24,DIRECT # 本地IP段直连
- GEOIP,CN,DIRECT # 中国IP直连
- MATCH,Fallback # 未匹配的流量走Fallback策略组
TODO:局域网转发
太乱了,记录一下技术历程。
需求:我希望用轻薄本的fedora直连宿舍的windows以在各个地方编程,我最近的代码环境都在win上。
由于我没买校园网,再加上最近校园网重建:之前可以用vlan,在虚拟局域网(几台计算机构成的网络,用路由器分割)内进行路由转发,可以实现校园网内的穿透,在教室串流寝室。但是最近将跨vlan的转发都ban了,只能走外网路由。只有官方的申请服务器/哑终端的在白名单内。)。我就考虑frp内网穿透。
frp可以将我主机上的端口,通过它的服务器节点转发回来。即穿透内网屏障,使外部用户能够访问内网中的服务。
还要在windows上开启可以被远程访问,fedora安装远程访问软件。
frp我选择之前用来做泰拉瑞亚联机的樱花frp。
首先我考虑的组合:RDP协议,windows使用原生桌面访问系统,fedora使用remmina工具
我遇到的第一个问题:windows是win11家庭版,不支持桌面访问。
首先,我考虑修改防火墙出入站规则。但是在安装组策略编辑器(也是专业版的内容)时出现问题:我使用网上教程拉取了组策略扩展映像后(成功安装,可以在cmd打印版本号),仍然无法在本地启动组策略编辑器。
也就是说,我无法在win11家庭版下扩展出远程访问的功能。
然后,我通过好厚米的妙妙工具升级到win11专业版。
我遇到了第二个问题:remmina中桌面尺寸会变得很小,并且在开发者平台上,我看到其他人说这个问题不能被解决。
其次我考虑:windows使用sunshine,fedora使用moonlight
这一套我之前用来在床上玩电脑游戏。
配置过程顺利也不顺利。
sunshine很简单就部署了,moonlight也提供了官方的文件镜像,两者在同一局域网内连接很快,传输质量也很高。
但是当放在公网上时,我始终无法用moonlight访问到我在内网穿透中的端口。
我有两点猜测:
sunshine提供了很多端口,虽然有一个写明是给moonlight用的,但是也要将其他端口同时转发。
单纯是moonlight的解析问题。windows原生的远程访问放在内网穿透中的地址我也连不上。
总之没解决。
最终解决方案:RDP协议,windows使用原生桌面访问系统,fedora使用rdesktop
rdesktop真好用。非常轻量化。甚至能挂载文件路径。
访问的时候要注意有很多权限问题。我的建议是尽量少设置密码:有的地方会单纯因为设置了密码而出问题。也要调整windows中的远程访问设置。
还有一些权限问题,不是什么大事。总之密码尽量为空。如果你害怕在内网穿透中暴露,那还是设置好密码。
终于是没问题了。
补完……
穿透时,TCP/UDP两个隧道都开一下,可以提高传输质量。
除了rdp还有一个vcn协议,通过传输屏幕像素实现远程控制,不依赖操作系统原生支持。
在画质和流畅度间权衡……