校园网自建🪜记录

This post is not yet available in English. Showing the original version.

May 30, 2025

Table of Contents
Table of Contents

前言

最近流量用太多了。自从购买了新显示器后,每天最喜欢的就是挑选 4k120hz 的视频享受视觉盛宴,结果月底一看流量账单,HNU 校园网用 40g 多的同时,校园流量卡+手机流量居然使用了 240g……听说 HNU 走 ipv6 的免流策略,加上自己新 vps 的购置,于是想要参考 cyp 学长的校园网免流Ripple 学长的补充,在 cry 学长的HNU上网指南 的推荐下,产生了通过走教育网的 ipv6 策略实现免流计费,顺便保障一下自己的科学上网环境的想法。 于是想要构建一个可以走纯 ipv6 的线路,尽量避免 ipv4 的计费。

但是由于 HNU 各种谜一样的限制与自己设备的有限性,目前尚未成功实现免流。不过踩了不少在校园网环境下自建梯的坑……加上自己技术知识方面几乎都是现学现用,可能有不少知识性的误解,也望看这篇文章的大佬们包容。 特此记录,也希望能给有类似需求的同学一些参考。但小小吐槽自己,能在校园网环境下的看这篇 文章的人一般都有自建🪜吧……


Cloudflare 滑铁卢

最初,我的计划是搭建 ripple 学长在博客文章推荐的 VLESS + gRPC + TLS 组合。几年前最常用的协议,网上的脚本与教程一大堆。且考虑到安全性和伪装性,我选择了自己常用的域名,并将其DNS解析托管在Cloudflare上,希望能通过这种方式指向我的境外VPS。 域名是自己的,为了方便,子域名也是直接解析放在 Cloudflare,想当然地以为“只是解析嘛”,不会出事。 然而,现实很快给了我一记重拳。

众所不周知,HNU 校园网对 Cloudflare CDN 的访问一直不太友好,尤其是在教学楼、综合楼等电信出口区域。但我万万没想到的是,这种“不友好”居然延伸到了DNS层面——仅仅是域名由Cloudflare负责解析,即使最终指向的是我自己的VPS IP,甚至都没有开小橙云,校园网似乎也会对这类连接进行严格的干扰或限制。表现就是,全局代理开启后,网络近乎瘫痪……唯有更换非校园网出口,比如自己的电信 or 联通流量,该节点才可正常使用。不过速度也比较一般。

HNU的校园网的某些出口,对 Cloudflare 向来是谜一般的针对,碰上教学楼或者电信出口,直接全网失联。全局代理刚开,所有服务全部掉线,反正就是一句话:只要沾 Cloudflare,流量基本废了。 我也不知道四年过去,HNU 校园网改变了什么策略与规则,但今天的 HNU 校园网走该协议,只要域名交给 cloudflare,你会体验到连上梯子全部断网的诡异情况,在校园网特定区域内基本走不通 VLESS + gRPC + TLS。 但如果你想尝试,这里冒风险提供一个好用的 v2ray 脚本, 基本大部分协议都是傻瓜式部署,参考即可。


IPv6 直连代理

鉴于域名的DNS解析成了瓶颈,我将目光投向了不需要为服务器本身配置域名和TLS证书的REALITY协议。我的目标是搭建一个 VLESS + TCP + REALITY 搭建节点,理论上只需要服务器 ip 即可。使用 xray 进行配置可以设置它监听 ipv6,按道理来说客户端直接连接服务器的IPv6地址。 使用 xray 也相当简单,问非国产 AI 即可提供教程,由于特殊性,这里不做设置介绍…… clash的配置规则

理想: 服务器端配置了仅监听IPv6,客户端也指向了服务器的纯IPv6地址。理论上,这应该是一条纯粹的IPv6通道🧐。 现实: 通过抓包和日志分析,发现,尽管DNS层面(删除A记录,只保留AAAA记录)强制了域名只解析到IPv6,但从客户端到服务器的IPv6 TCP连接(无论是443还是其他端口如8443)在校园网环境下始终无法稳定建立,表现为 i/o timeoutoperation was canceled。 且在连接校园网环境下,ping6 是无法连通 ipv6 的。同理,这根本无法建立起代理隧道,连 ipv6 全部拦截了😭。

如果你尝试了,你将看到100%的loss

这强烈暗示,校园网对出境的、通往境外商业VPS的IPv6 TCP连接存在着未知的严格限制或干扰策略,并非所有IPv6流量都能自由出入。直接的IPv6代理之路,也在此受阻。


Tailscale P2P - 意外之喜

在直接连接VPS的公网IPv6屡试屡败后,我想到了利用Tailscale。我已经在我的设备和境外VPS(一台Cloudcone洛杉矶,另一台DigitalOcean新加坡)上都部署了Tailscale。 于是在 Clash Verge 中,将代理节点的服务器地址设置为我VPS的Tailscale IP地址进行尝试。

可以连接成功! 在校园网环境下,通过Tailscale IP,我的 VLESS+REALITY 代理能够稳定连接,但是连接是否是稳定的 ipv6 连接?于是使用 wireshark 抓包分析。

Wireshark抓包

最初的抓包显示,我的设备和VPS之间的Tailscale P2P底层连接主要走了IPv4公网IP。这虽然能用,但无法实现免流。

但是惊喜地发现,Tailscale也能够建立基于纯IPv6的P2P底层数据通道

这意味着,我的代理流量可被 VLESS+REALITY 加密后,再被Tailscale的WireGuard加密,最终通过校园网的IPv6链路,点对点地传输到了我的VPS。 不过我猜想,tailscale 的传输是根据连接便利性而来的,所以我无法配置它只能通过 IPv6 来传输,也无法保证这样的协议可以是 IPv6 免流。

确认Tailscale底层P2P链路稳定运行在IPv6上后,开启了代理,访问YouTube观看4K视频,在 mac 的活动监测器下判断消耗了 5g 左右的流量后,关闭视频。视频非常流畅。更重要的是,后续查看校园网流量统计,计费的IPv4流量几乎没有增加

Reality 挂着的微软流量,显示只消耗了一点点,说明大部分境外流量走的是 IPv6,说明免流基本可行。 说明在 youtube 上实际消耗的流量是通过IPv6走的,且是用 cloudcone 的低价vps,延迟网速对我而言还可以了。 延迟比较高


多设备共享 Tailscale Exit Node

考虑到手机等设备配置代理不便,且校园网有设备数量限制,我进一步将我的VPS配置成了Tailscale出口节点 (Exit Node)。 设置相当简单,只需要输入四个命令:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo tailscale up --advertise-exit-node

然后去 login.tailscale.com/admin/machines,找到自己VPS,点击,选择 “Edit route settings…”,然后启用 “Use as exit node”即可。

只要连接只需要连接校园网,并在 tailscale 里设置 exit node 为那台处理好的 vps 即可代理,不过缺点是默认是全局代理且无法调整,不过可以解决手机设备 tailscale 与 clash/v2ray 无法同时使用的问题。

在 ripple 学长的博客里有这样的一张图:

我没有国内的IPv6 VPS来进行对比测试,但目前这个基于境外VPS的Tailscale IPv6 P2P + Exit Node方案,已经基本满足了我的需求。 至于校园网免流的 ipv6 测试,我想我需要先购置一个路由器刷好固件,然后再来拯救自己的上网空间……


总结

虽然也算不上完美成功,但是还是学到了超级多的计网知识的。也要感谢各位学长的宝贵经验帖与 AI……我现在还只是停留在学长们的攻略的第二步里,下一步或许就是购置路由器,无线桥接,刷固件,尝试 HNU 上网自由,HNU 的三设备限制也可以解决……

生命在于折腾

愿你我都能网络自由。