升级几年的校园网,升级了个防私接功能

Shi Yi2025/09/02dailylinux

背景

大概在一年前的时候,校园网说是准备升级了,然后我也确实看见了设备的更新和交换机的更换。我也兴奋地办理了校园网,然后发现网速依旧是出色的拉跨,我也不知道他是为了干什么,可能不是给我们学生提高网速的,而是服务于其他人(猜测),算了,也就这样吧。

既然你这么贵,而且不让多设备,而且速度也不快,我装个路由器也没有问题吧(校园网打游戏更稳定,如果宿舍能一直有网,我在外面控制宿舍的设备也会更加轻松),然后在今年八月份的时候,他发了一个通知,说是装备了防私接,第二天开始,当设备列表有新增的时候,就会被封号十分钟,之后大概会每 1-2 小时被封号十分钟。

学校居然开始圈钱了,升级了这么久的校园网,什么体验都没有改善,还升级防私接?你有这心思能不能降低一下校园网费用或者提高校园网网速??而且你这 B 网和校园卡还是绑定的,这就不说了,而且校园卡这种东西就是看自己需求的,平常也只是学长学姐推销,他们如果佣金是 100,他们还能返 90 给你,你现在倒好,光明正大地在官方推销卡,美名其曰说是防止受骗,你这校园卡的佣金是多高你是一点不提。更不用说一些泛滥的后台校园网账户和其他一些东西了,跟自己说的理由前后矛盾,圈就是圈。暑假还打着澡堂升级的名号变相提高学生消费这些都不值一提。

DANGER

以上言论是对一所美国私立学校的评价,真实情况和现实有所区别,有一定的情节设计,我只是进行一个类比的说法来让国内用户听懂而采用了本土化设计,如有雷同,还请谅解。


🤔 思考解决用网问题

1. 办大流量卡(CPE 或者手机热点)

抖动高,不稳定。

2. 继续用校园网,手机开热点

路由器给手机提供 WiFi,手机同时打开流量,然后手机开热点,然后给其他设备连接。有一定作用,也非常实用。但是还是不够理想。

3. 给路由器刷防检测固件

有很多社区都提供了编译好的固件,一般只要根据自己的路由器型号,进行刷机然后输入几个简单的命令即可。容易把机器刷坏,而且我宿舍的路由器是公共产品,可不能当私人机器刷机使用。

DANGER

刷机有风险,小白操作禁止刷机,如有失误导致损失,概不负责。

4. Mini 电脑 + 软路由(二级路由)

买个 Mini 电脑,装上软路由,然后给路由器提供网络,路由器再给其他设备提供网络。

项目说明
缺点花费高
优点可以在 Mini 电脑装很多系统,包括 openwrt;实践很多东西,接触很多东西;毕业后还能在家里研究网络,给家里提供更好的网络体验

🛠️ 实施第四个方案

购买篇

购买 Mini 电脑、内存条、硬盘。

TIP

我买的 Mini 电脑的型号是 Y10,拥有 2 个 2.5G 网口(最低需要两个物理网口),N150 处理器,配置是 8+128。总共花费 800 余元,内存条配的是三星的 DDR5,硬盘配的比较差一点。

收货

收货之后,先给电脑安装内存条和硬盘。然后下载 Rufus:

https://rufus.ie/zh/open in new window

然后去下载 Proxmox VE(这个当作你 Mini 电脑的主系统,选择适合自己 Mini 电脑的架构,我这里是 x86/64):

https://www.proxmox.com/en/downloadsopen in new window

把镜像下载下来,准备一个 U 盘,备份好 U 盘里面的资料,将镜像烧录到 U 盘。


安装 Proxmox VE

然后将 U 盘插入电脑,启动 Mini 电脑,插上键盘和显示器,物理网口 1(离电源口近的那个)并插上路由器的 LAN 口(给 Mini 电脑提供 IP),反复按键盘的 F12 键(不同型号有不同的按法),会进入 U 盘的引导界面,根据选项选择,进入安装界面,按照提示安装。

第一个会让你选择安装方式,第一个选择是带有 UI 界面的,选择第一个。

到达 Administration Password and Email 的步骤的时候(不是说下一步就是这个,之前的步骤选择默认的就行了),输入设置 root 用户的密码和你的邮箱地址。

DANGER

这个密码超级重要,请务必记住。

之后会到达 Management Network Configuration 步骤:

配置项说明
Management Interface选择你连接到路由器的那个物理网口(例如 enp1s0,名字可能不同,但你可以根据 MAC 地址判断)。这就是我们规划的物理网口 1
Hostname给你的 PVE 主机起个名字,例如 pve.home
IP Address为 PVE 设置一个静态 IP 地址,必须和你当前局域网在同一个网段。例如,你家路由器是 192.168.1.1,你可以设置为 192.168.1.10(连接路由器的话会默认填充)
Gateway填写你当前主路由器的 IP 地址(例如 192.168.1.1,连接路由器的话会默认填充)
DNS Server可以填写网关地址,或者公共 DNS 如 114.114.114.114(连接路由器的话会默认填充)

填写完之后,点击 Next,然后等待安装完成。安装过程会自动进行,完成后系统会提示你重启并移除 U 盘。


访问 PVE

访问 https://你刚才设置的PVE的IP:8006,输入 root 和刚刚设置的密码,登录成功之后,就可以开始使用 PVE 了。

下载 openwrt 镜像

我这里选择的是 x86/64 的 openwrt 镜像,并且选择的是 combined-squashfs.img.gz,当然你也能使用 ext4,只是文件系统不同而已。

https://downloads.openwrt.org/releasesopen in new window


安装 openwrt

上传镜像

解压之前下载的 openwrt-....-combined-squashfs.img.gz 文件,得到 .img 镜像文件。

在 PVE 网页管理界面,点击左侧的 数据中心 -> pve -> local (pve) 存储。选择 ISO 镜像 标签页,点击上传,然后选择你解压好的 .img 文件并上传。

创造网络桥接

我们需要为 OpenWRT 的 WAN 口创建一个独立的虚拟交换机,并桥接到物理网口 2。

  1. 在 PVE 界面,点击 pve -> 系统 -> 网络
  2. 点击 创建 -> Linux Bridge
  3. 名称:vmbr1
  4. 桥接端口:填写你的第二个物理网口名称(例如 enp2s0)。你可以通过 ip a 命令在 PVE 的 Shell 中查看网口名称
  5. 不要填写 IP 地址和网关
  6. 点击创建。创建完成后,点击应用配置使其生效

TIP

现在你应该有两个桥:vmbr0(用于 LAN 和 PVE 管理)和 vmbr1(用于 WAN)。

创建虚拟机

点击右上角的创建虚拟机

1. 常规设置

配置项说明
节点pve默认节点
VM ID100默认即可
名称openwrt虚拟机名称

2. 操作系统

配置项说明
介质不使用任何介质-
类型Linux操作系统类型
版本6.x - 2.6 KernelLinux 内核版本

3. 系统配置:保持默认设置

4. 硬盘配置:删除默认硬盘(直接点击硬盘条目右侧的垃圾桶图标删除它,因为我们稍后会导入镜像)

5. CPU 配置

配置项说明
核心数2 个或更多,取决于你的 Y10 CPU 性能

6. 内存配置

配置项说明
内存512 MiB或 1024 MiB,作为主路由 512MB 足够

7. 网络配置

配置项说明
桥接vmbr0这是 OpenWRT 的 LAN 口
模型VirtIO半虚拟化,性能最好

8. 完成创建:检查信息无误后,点击完成


导入镜像

在 PVE 界面左侧找到刚才创建的 100 (openwrt) 虚拟机,但不要启动它

点击 pve -> >_ Shell 打开命令行终端,执行以下命令将上传的 .img 文件导入为虚拟机关联的虚拟硬盘:

qm importdisk 100 /var/lib/vz/template/iso/openwrt-24.10.2-x86-64-generic-squashfs-combined.img local-lvm

命令执行成功后,返回 PVE 网页界面:

  1. 点击 100 (openwrt) 虚拟机 -> 硬件。你会看到一个未使用的磁盘 0
  2. 双击这个磁盘,在弹出的窗口中,将总线/设备设置为 SATA,然后点击添加

添加 WAN 口网卡

硬件页面,点击添加 -> 网络设备

  • 桥接:vmbr1(我们为 WAN 口创建的桥)
  • 模型:VirtIO(半虚拟化)
  • 点击添加

TIP

现在虚拟机有两个网卡了:net0 (LAN)net1 (WAN)

切换到选项标签页,双击引导顺序。将刚刚添加的 SATA 硬盘(例如 sata0)拖到第一位,并勾选它前面的复选框,然后点击确定


配置 OpenWRT

启动 OpenWRT 虚拟机。在虚拟机的 >_ 控制台 标签页中,等待系统启动完成,看到命令行提示符后按一下回车。

WARNING

OpenWRT 默认的 LAN 口 IP 是 192.168.1.1,这可能和你现有的网络冲突。我们需要修改它。

输入以下命令编辑网络配置文件:

vi /etc/config/network

i 键进入编辑模式,找到 config interface 'lan' 部分,修改 option ipaddr 的值为一个新的网段,例如 192.168.5.1

config interface 'lan'
        option device 'eth0'
        option proto 'static'
        option ipaddr '192.168.5.1'  # 修改这里
        option netmask '255.255.255.0'
        option ip6assign '60'

修改完成后,按 ESC 键,然后输入 :wq 并回车,保存并退出。输入 reboot 重启虚拟机使配置生效。

INFO

请你时刻记住目前你设置的网段,要不然你每次连接相应服务的时候,都需要更换电脑自身的 ip,这就可太难受了。

登录 OpenWRT Web 界面 (LuCI)

将你的操作电脑的 IP 地址手动设置为与 OpenWRT 同网段的静态 IP,例如 192.168.5.100,子网掩码 255.255.255.0

在浏览器中访问 http://192.168.5.1。(这里改成你设置的就行)

TIP

默认用户名是 root,密码为空,直接登录。登录后,第一件事是去 系统 -> 管理权 设置一个安全的登录密码。

配置网络

  • WAN 口:网络 -> 接口。WAN 接口应该是不存在,这边需要你新建一个 WAN 接口,然后设置 PPPOE,输入你的校园网账号密码即可
  • LAN 口:LAN 接口的配置我们已经修改过了。确保 DHCP 服务器是开启的,这样连接到你网络里的设备才能自动获取 IP
  • 测试:将你的电脑 IP 改回自动获取,然后用网线连接到 Y10 的物理网口 1,看看是否能获取到 192.168.5.x 的 IP 地址,并且能够正常上网

INFO

如果你的网络获取了 IP,但是无法上网,请检查你的虚拟机的硬件是否有两个虚拟网卡,并且成功桥接到我们设置好的 LAN 桥和 WAN 桥。这边也建议把 PVE 的 ip 设置为相同的网段,这样你就不需要自己手动设置 ip 来访问 PVE 了。

INFO

这个 PPPOE 是需要校园网支持的,如果不支持的话,建议在 openwrt 上进行网页认证,这里不讲述了。


开始设置二级路由

关闭路由器的 PPPOE

关闭 PPPOE 连接,建议设置 DHCP 连接,你要设置静态 IP 也可以,保持相同网段即可,你设置 AP 连接也行(只是我的路由器不支持这个)。

将路由器 WAN 口连接到 Mini 电脑的物理网口 1

连接就行,如果能够使用网络的话,应该是可以了。(虽然没过多久会被封号)


🛡️ 防检测设置

我学校主要是 ttl 检测UA 检测

修改 ttl

直接这样在 /etc/nftables.d/ 下新建文件 12-mangle-ttl-65.nft

chain mangle_postrouting_ttl64 {
    type filter hook postrouting priority 300; policy accept;
    counter ip ttl set 65
}
chain mangle_prerouting_ttl64 {
    type filter hook prerouting priority 300; policy accept;
    counter ip ttl set 65
}

这样再创建之后,再重启防火墙就行了。

参考文献:https://zhuanlan.zhihu.com/p/676899812open in new window

INFO

存活时间(英语:Time To Live,简写 TTL) 是电脑网络技术的一个术语,指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活次数就会被减一。当其存活次数为 0 时,路由器便会取消该数据包转发,IP 网络的话,会向原数据包的发出者发送一个 ICMP TTL 数据包以告知跃点数超限。

TTL 是最简单的多设备检测方式,因为 TTL 每过一个路由值都会 -1,所以只需要抓包然后读出我们的包头里面的 TTL 值是否是一般情况下系统默认的 128 或者 64 就可以判断我们是否共享了网络。但在 OpenWRT 中我们可以简单的通过添加 iptables 或者 nftables 防火墙规则来实现路由器下所有设备 TTL 值的统一。

自定义 UA

直接下载大佬开源的 UA2F 的 ipk 包,然后在 openwrt 的 UI 上传安装就行,好像是 系统/软件 这个路由:

# 启用 UA2F
uci set ua2f.enabled.enabled=1

# 可选的防火墙配置选项
# 是否自动添加防火墙规则
uci set ua2f.firewall.handle_fw=1

# 是否尝试处理 443 端口的流量,通常来说,流经 443 端口的流量是加密的,因此无需处理
uci set ua2f.firewall.handle_tls=1

# 是否处理微信的流量,微信的流量通常是加密的,因此无需处理。这一规则在启用 nftables 时无效
uci set ua2f.firewall.handle_mmtls=1

# 是否处理内网流量,如果你的路由器是在内网中,且你想要处理内网中的流量,那么请启用这一选项
uci set ua2f.firewall.handle_intranet=1

# 使用自定义 User-Agent
uci set ua2f.main.custom_ua="Test UA/1.0"

# 禁用 Conntrack 标记,这会降低性能,但是有助于和其他修改 Connmark 的软件共存
uci set ua2f.main.disable_connmark=1

# 应用配置
uci commit ua2f

# 开机自启
service ua2f enable

# 启动 UA2F
service ua2f start

# 读取日志
logread | grep UA2F

参考文献:https://github.com/Zxilly/UA2Fopen in new window

INFO

User-Agent 请求标头是一个特征字符串,使得服务器和对等网络能够识别发出请求的用户代理的应用程序、操作系统、供应商或版本信息。学校可以通过多次抓包检测我们的数据包然后查找 UA 是否有同时出现两种不同的设备来判定我们是否有共享网络,所以我们需要消除可以识别设备类型的字段,或者统一所有设备的 UA 都是同一个设备的。

TIP

在安装包的时候可能会提示缺少依赖,缺失的包的依赖提示得很明确,直接安装缺少的依赖包就好了。

DANGER

UA2F 和 clash core 不可以同时启用,不然 UA2F 无法起到作用。如果想实现类似功能,请尝试安装 UA3F:https://github.com/SunBK201/UA3Fopen in new window

设置统一的 NTP 服务器

前面两种已经可以防御检测了,但是多对一种行为进行伪装也是不错的。

在 openwrt 的系统中勾选 Provide NTP server

在 OpenWRT 的 Web 界面,按照以下步骤操作:

  1. 进入菜单 网络 (Network) -> 防火墙 (Firewall)
  2. 切换到 端口转发 (Port Forwards) 标签页
  3. 在页面下方,点击添加 (Add) 按钮,来创建一条新的转发规则

新建端口转发配置信息

配置项说明
名称 (Name)Redirect_NTP或「NTP 劫持」
协议 (Protocol)UDPNTP 使用 UDP 协议
源区域 (Source zone)lan规则应用于来自局域网的流量
外部端口 (External port)123NTP 的标准服务端口
目标区域 (Destination zone)wan或选择「Device (input)」
内部 IP 地址 (Internal IP address)本路由器 (this device)在下拉菜单中选择
内部端口 (Internal port)123-
IP 协议版本IPv4 和 IPv6-

填写完毕后,点击添加 (Add),然后再点击页面右下角的保存并应用 (Save & Apply)

INFO

NTP(Network Time Protocol) 是一种用于同步网络中计算机或其他设备时钟的协议。它确保在分布式系统中,各个计算机或设备之间的时间能够保持一致,这对于许多需要精确时间同步的应用至关重要。

因为每一台系统他们访问 ntp 服务器是不一样的。你局域网内的每一台设备(Windows 电脑、手机、智能手表等)都会定期向互联网上的 NTP 服务器请求时间同步,以校准自己的时钟。这些 NTP 请求(通常使用 UDP 123 端口)虽然流量很小,但却是非常明显的「设备存活」信号。

DPI 设备可以轻易地识别出这些 NTP 流量。如果它发现从你一个 IP 地址,有发往不同 NTP 服务器(比如 time.windows.com, time.asia.apple.com, time.google.com)的请求,或者请求的频率和模式不像单个设备,就可能判定为共享网络。


✅ 总结

这样之后,应该就能成功防检测了。可以愉快地使用校园网了。

参考文献:

Last Updated 7/19/2026, 1:57:02 PM