Clash 全局流量转发
BUCEA 校园网按流量计费,每 G 下行流量 0.5 元,这谁用得起?
一个想法就是使用 5G 流量替代校园网,如手机通过 USB 共享网络。但是我在宿舍和实验室各有一台电脑,均需要网络连接。如果各配置一台 5G 手机的话,硬件成本和流量成本直接翻倍。
因此尝试将其中一台电脑的流量转发到另一台电脑上。
1 网络连通性检查
在谈论一切之前,首先要保证两台电脑能相互连接。首先使用ipconfig
查看 IP:
电脑 A | 电脑 B | |
---|---|---|
IPv4 | 10.100.x.a | 10.100.y.b |
子网掩码 | 255.255.192.0 | 255.255.192.0 |
网关 | 10.100.0.1 | 10.100.0.1 |
这两台设备的子网掩码均为255.255.192.0
,计算得到覆盖的 IP 范围为10.100.0.0
~10.100.63.255
。两台设备的 IP 均在此范围内,因此理论可以相互访问。
首先两台电脑互 Ping,成功。但是 Ping 通了不代表其他服务也能连接,还需要使用 SSH、SMB、Windows 远程桌面等多种方式检查连接情况。
这里很幸运,除了 80 和 443 端口外,校园网没有进行过多的限制。在校园网环境下两台电脑可以使用其他端口可以相互访问。
如果不幸校园网进行了严格封堵,可以尝试使用 ZeroTier 进行虚拟组网。
2 全局流量转发
流量转发的方式有很多。较底层的如修改路由表,性能最高,但配置难度也最大,出错后改正也极其麻烦。综合性能和灵活性等因素,采用 Clash 将电脑 B 处的流量全局转发到电脑 A。
A 处的 Clash 只需开启允许局域网访问即可,端口默认为7890
。
B 处的 Clash 则进行全局流量转发,配置文件内容如下:
port: 7890
allow-lan: false
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090
tun:
enable: true
stack: system
dns-hijack:
- 198.18.0.2:53
auto-route: true
auto-detect-interface: true
# 代理出口
proxies:
- name: "YOYOProxy"
type: socks5
server: 10.100.x.a
port: 7890
# 代理组
proxy-groups:
- name: "全局流量转发"
type: select
proxies:
- YOYOProxy
# 分流规则
rules:
- MATCH,GLOBAL
这里启用了 TUN 模式。该模式创建一个虚拟网卡拦截所有流量,再走代理规则。相较于系统代理,TUN 模式性能略低,但优势在于应用内无感知,且支持 TCP/UDP。更别说并非所有软件都遵守系统代理。
导入配置文件后,在 Clash 内启用规则模式代理即可。
B 处的 Clash 日志出现类似于下述文本时,则说明成功拦截并转发流量到 YOYOProxy(即 A)。
..., RULE: Match(), PROXY: GLOBAL[YOYOProxy]
此时 A 处的 Clash 日志应该类似于:
FROM: 10.100.y.b:54204, ...
这说明 A 成功接收到了来自 B 的流量。