【已解决】macOS VPN在校园网环境下连接问题
问题描述
这两天主播在学校连校园网,遇到了一个非常之诡异的现象。不开VPN能正常上外网,开了VPN却什么网都上不了了,连VPN的服务器都ping不通。用检测IP地址的网站(这个很好用!)一看,发现自己的IP在塞舌尔??问题是我买的VPN甚至没有塞舌尔的节点。。。而且其他同学之前也遇到过一样的问题,来问主包主包也没能解决,这次在自己的电脑上比较好实验,于是探索了一下。
主包用MacBook Air M2, macOS 15.6.1, VPN软件是Clash Verge 2.3.2。(不得不吐槽一下Verge这个垃圾软件,经常自己在后台未响应,有时候还打不开UI( ‘▿ ‘ 💧)。要不是我的VPN配置只能在Verge导入我就用Clash X了。)
最开始我就以为是Verge软件的问题,去找学校的 IT guy 解决这个问题。
- 退出 Clash Verge,但在「活动监视器」里发现仍有一个 clash-verge-service 进程;
- 在网上一搜,原来这是软件的 Service Mode 服务模式。
- 尝试卸载 Clash Verge,但这个后台进程还在运行;
- 重新安装后,在模块设置中卸载 Service Mode 模块,进程才彻底消失。
主包以为问题解决了,结果周一早上到学校一试发现还是一样的问题。直到我灵光一现,把校园网忘记然后重新重置密码重新登录 就突然恢复正常了。
这让我怀疑问题不止在我电脑上。
问题分析
和ChatGPT老师讨论了一下,认为问题是这样的:
现在我们认为这是 Clash Verge 的 Service Mode 与校园网的 NAC 系统冲突导致的。
Clash Verge 的 Service Mode 做了什么
在 macOS 上,Clash Verge 的 “Service Mode” 会:
- 启动一个具 root 权限的守护进程;
- 改写系统的路由表与 DNS 配置;
- 新增一个虚拟网卡接口(通常叫
utun0
),所有流量都被转发到它上面。
一旦这个守护进程崩溃、退出不干净,或者和 Wi-Fi 的认证机制冲突,就会造成系统路由错乱。
此时 macOS 认为“所有流量都要走 VPN”,但 VPN 已经失效 → 所有请求 timeout。
校园网的 NAC / DHCP 机制
学校的校园网要求每个设备登录门户网站(Portal)认证,这套系统会:
- 将用户认证与设备的 MAC 地址 或 IP 地址 绑定;
- 动态分配网关与 NAT 出口;
- 若检测到“未知接口”或“异常出口”,会临时阻断访问。
Clash Verge 启动 Service Mode 时创建的虚拟网卡(utun)在校园网看来就是一个“新接口”,
于是:
校园网 NAC:你是谁?没认证的设备不给上网。 macOS:我所有流量都走这个接口。 结果 → 所有连接 timeout。
重新登录校园网的认证页后,NAC 重新绑定了正确的接口和 NAT 出口,网络恢复正常。
为什么 Windows 没问题
Windows 版本的 Clash(Clash for Windows / Clash Verge for Windows)通常不会启用系统级服务模式,它修改路由的方式也更温和,使用的是 WinAPI。所以在 Windows 上 DHCP 与 NAC 仍能正确识别设备接口,不会触发封锁。
塞舌尔 IP 从哪里来?
那为什么 IP 显示在塞舌尔?这其实不是“VPN 连到了塞舌尔”,而是:
- 路由表错乱后,DNS 查询被错误地转发到外部或缓存服务器;
- 校园网 NAT 出口返回了一个错误的地理位置映射;
- 于是检测网站以为我来自塞舌尔。
可以理解为:网络出口乱了,地理信息也随之乱了。
学校可以改进的地方
虽然主要原因在本地,但学校的网络策略也可以更健壮:
- 放宽 NAC 的接口绑定策略:允许同一用户在同一 IP 下多接口共享认证;
- 优化 DNS 转发与 IPv6 支持:防止虚拟接口 DNS 被错误解析;
- Portal 系统兼容虚拟接口:避免把
utun
或bridge
设备误判为“未认证设备”。