在任意互联网环境里同时访问校内资源和外网,是一个经典的「鱼和熊掌」问题。VPN 客户端和代理软件各管一摊,切来切去很烦。这套方案让它们配合工作,做到无感分流。

背景

代理客户端选择

VPN 客户端优先采用 Mihomo 内核的。我刚上大学时最好用的基于 Mihomo 的客户端是 Clash Verge Rev,所以选择了它。

但最近 Clash Verge Rev 被爆出尝试在主线中加入收集用户设备信息的功能,因此建议读者探索其他基于 Mihomo 内核的客户端。

校园网环境

学校先前用的是深信服的 EasyConnect 客户端——臭名昭著,会往用户电脑塞根证书,极其危险。后来切换到了 ATrust 客户端,但仍然是深信服开发。

绕过深信服

为了在避免使用深信服客户端的同时兼容深信服的 VPN 协议,浙大同学开发了 ZJUConnect,而 HITSZ 的 chenx 也基于此开发了 EZ4Connect

校园网登录

通过 ATrust 无法正常在 10.248.98.2 登录校园网。实际上可以通过 https://net.hitsz.edu.cn/srun_portal_pc?ac_id=1&theme=basic4&wlanuserip=<本机IP> 的方式给自己设备登录,但需要预先知道本机在校园网中的 IP。

手动登录略显复杂,可以通过自动登录解决——使用我开源的 hitsz-autonet,自动拼接认证 URL 中的本机 IP。

架构

浏览器/App → Clash TUN (7897)
                ├── 校园网资源 → EZ4Connect (127.0.0.1:11081) → 校园网
                ├── 国内网站    → DIRECT
                └── 外网        → 机场节点

Clash 开启 TUN 模式接管所有流量,通过规则把校园网 IP 段和域名路由到 EZ4Connect 暴露的本地 HTTP 代理端口,其余流量走机场或直连。

第一步:安装 EZ4Connect

GitHub Releases 下载对应平台版本。

对于 HITSZ 来说,安装后不需要任何配置即可使用。

点「连接服务器」,确认连接成功。EZ4Connect 会在本机 127.0.0.1:11081 暴露一个 HTTP 代理,校园网资源均可通过这个端口访问。

第二步:安装 Clash Verge Rev

GitHub Releases 下载安装。

第三步:添加机场订阅

打开 Clash Verge Rev → Profiles → 粘贴机场订阅链接,更新。

第四步:添加本地代理节点

在 Clash Verge Rev 的配置里加一段本地节点(通过订阅配置的 Merge 功能,或直接在配置文件里加):

proxies:
  - name: local-campus
    type: http
    server: 127.0.0.1
    port: 11081

这个节点指向 EZ4Connect 暴露的本地代理端口。

第五步:分流规则

这是最关键的一步。新建一个 Rules Overlay 文件(Profiles → New → Rules),粘贴:

prepend:
  # 校园网精确直连
  - 'IP-CIDR,10.248.98.2/32,DIRECT'
  - 'DOMAIN-SUFFIX,net.hitsz.edu.cn,DIRECT'
  - 'DOMAIN-SUFFIX,ids.hit.edu.cn,DIRECT'
  - 'DOMAIN-SUFFIX,mineru.net,DIRECT'
  - 'DOMAIN-SUFFIX,openxlab.org.cn,DIRECT'
  - 'DOMAIN-SUFFIX,aliyuncs.com,DIRECT'
  # 校园网其余走本地代理
  - 'IP-CIDR,10.248.0.0/14,local-campus'

在 Profiles 里,把当前订阅的 rules 绑定到这个 Rules Overlay 文件。

规则逻辑:

第六步:开启 TUN 模式

Clash Verge Rev → 设置 → TUN 模式 → 开启。

TUN 模式在系统网络栈层面接管流量,浏览器、终端、App 都不需要单独配代理。

验证

有问题可以检查:


一句话总结:EZ4Connect 负责连校园网暴露本地 11081 端口,Clash Verge Rev 接管所有流量,校园网段/域名走 11081 或直连,其余走机场。