LOADING

缓存加载中...

网络折腾记录

2025/4/10 课外

 

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访问到我在内网穿透中的端口。

我有两点猜测:

  1. sunshine提供了很多端口,虽然有一个写明是给moonlight用的,但是也要将其他端口同时转发。

  2. 单纯是moonlight的解析问题。windows原生的远程访问放在内网穿透中的地址我也连不上。

总之没解决。

最终解决方案:RDP协议,windows使用原生桌面访问系统,fedora使用rdesktop

rdesktop真好用。非常轻量化。甚至能挂载文件路径

访问的时候要注意有很多权限问题。我的建议是尽量少设置密码:有的地方会单纯因为设置了密码而出问题。也要调整windows中的远程访问设置。

还有一些权限问题,不是什么大事。总之密码尽量为空。如果你害怕在内网穿透中暴露,那还是设置好密码。

终于是没问题了。

补完……

  • 穿透时,TCP/UDP两个隧道都开一下,可以提高传输质量。

  • 除了rdp还有一个vcn协议,通过传输屏幕像素实现远程控制,不依赖操作系统原生支持。

  • 画质流畅度间权衡……