---
title: 用校园网搭建服务器！
subtitle: 在宿舍折腾网络的一篇记录w
tags: [技术]
category: 技术
---

# 用校园网搭服务器！

欢迎欢迎！我是 UofT 的大一新生，这是我在宿舍折腾网络的一篇记录w

## 1. 搭建 FRP 实现内网穿透
 


## 2. OpenWRT 中继学校 WPA-EAP 网络实现远程重启

搭建好内网穿透之后又遇到了新的问题——因为台式机服务器装的黑苹果配置不是很稳定，它有时候会整个屏幕绿掉，必须强制重启才行，应该是 kernel panic 吧。我不在宿舍的时候回宿舍重启又太麻烦了，如果可以远程重启...

想起来之前摸鱼的时候看到向日葵有做过远程重启的设备，所以就去查了下，结果发现就只是一个智能插座，在主板上配置好插电自动开机就好啦。但是这又有一个问题——宿舍里所有的网络，无论是 UofT Wifi 还是 eduroam 还是有线以太网，都需要 WPA/WPA2/WPA3-Enterprise EAP PEAP MSCHAPv2 用户名+密码验证... 可是智能插座只支持简单的 WPA-PSK 密码验证。所以就需要一个可以连上外网、又可以开 WPA-PSK WiFi 的无线路由器了。

刚开始，我想过几个不同的方案：

### a. 用手机连 Wifi 开热点（失败）

之前无意间发现了我的 Mi Mix2S (Android 11 EvolutionX) 可以边连 Wifi 边开热点，不知道是怎样实现的。所以我想，如果用旧的华为 Mate8 这样一边连着学校的 PEAP 一边开热点就可以了。但是开机之后，我发现 Mate8 的原生系统 Android 8 EMUI 8.0 并不支持同时连 Wifi 开热点。我听说用 VPN Hotspot 可以实现无线中继，下载试了下却发现没有 Root 就不能改 SSID 和密码，每次开的 SSID 和密码都是随机的。所以花了超级多精力解锁 BootLoader、刷 Magisk、然后发现 Root 之后也不能改无线中继的 SSID 和密码... 改完之后重开中继的 SSID 还是 DIRECT-{随机}-HUAWEI, 密码还是八位随机字符。不过还是试了下用智能插座连这个无限中继，只能赌无线中继不会重启、不会关机、不会被电源管理杀掉... 

结果是，在台式死机之前智能插座就先下线了，回宿舍看了一眼发现手机不知道为什么重启进 Recovery 了。失败失败（

### b. 用手机连数据卡开热点（太贵了）

然后想到如果可以再买一张手机卡只用来开热点就解决了嘛，但是发现这边不像国内那样 ￥10/mo 就能买一张卡，这边最便宜的流量卡要 CA$15/mo，换算出来要 ￥75/mo 了，够买一个路由器了（

### c. 用路由器中继

然后就是现在的解决方案啦，用路由器中继学校的 PEAP。首先要做的是买一个路由器，可是这边新的路由器也真的很贵，亚马逊上最便宜的 TP-Link AC750 要 $35 = ￥175... 所以去二手市场逛了逛，很幸运的看到了附近有人 $10 出路由器，一个 Netis WF2780 和一个小米路由 R4。

首先试了 WF2780，但是它好像没接好 WAN 就完全不能用的样子，SYS 灯一直在闪，网线连上电脑也没办法获取到 IP，手动分配 IP 到 192.168.1.2 也进不去管理页面。可能是坏了吧，也可能这个路由器本来就是这样？不懂，下一个（

然后试了 R4，可是用小米官方的固件，无限桥接模式并不能连上 PEAP 验证的 UofT Wifi 或者 eduroam，有线桥接模式把 WAN 口接上也提示识别错误。所以只能试试 OpenWRT 啦。

### 1. 给小米路由 R4 刷 OpenWRT

这里我跟了 https://www.wyr.me/post/619 这个教程，很轻松地就刷好了！

在电脑上要做的事情：

1. 网线连上路由器，登录管理后台（我是 http://192.168.31.1)
2. 复制管理后台登录之后 URL 里面的 stok 参数
3. 执行以下指令，输入路由器的 IP 和刚才复制的 stok

```sh
git clone https://github.com/acecilia/OpenWRTInvasion
cd OpenWRTInvasion
pip3 install -r requirements.txt
python3 remote_command_execution_vulnerability.py
```

然后就有 ssh 啦！接下来用了这个固件：https://github.com/ioiotor/mir4-ss，下载 [openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin](https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin) 和 [openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin](https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin)

4. 在电脑上执行以下指令：

```sh
mkdir temp
cd temp
wget https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin
wget https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin
python3 -m http.server
```

5. 登录进 SSH Shell 之后在路由器上执行指令：

```sh
cd /tmp
wget http://{电脑 IP 地址}/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin
wget http://{电脑 IP 地址}/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin
mtd write openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin kernel1
mtd write openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin rootfs0
nvram set flag_try_sys1_failed=1
nvram commit
reboot
```

然后就好啦，重启之后就是 OpenWRT 了（虽然默认没有开 WLAN，所以只能网线连到路由器）

### 2. OpenWRT 连接到 PEAP 网络

登录上管理页面，改完管理密码之后，我试了直接把 wlan0 改成 client mode 去连学校的网，但是发现这里也只支持密码验证的 WPA-PSK 而不支持用户名+密码的 WPA-EAP。然后查了一下发现只要把预装的 wpad-basic 换成完整的 wpa-cli + wpa-supplicant + hostapd 就可以了。但是还有一个问题就是我的路由器现在没有网，所以不能在线安装软件包。我的解决方案是用电脑先连上学校的 WIFI，再把电脑的网线连到路由器的 LAN 口上，然后在电脑上开桥接模式路由器就有网了！

之后，ssh 进路由器，执行以下指令：

```sh
opkg update
opkg remove wpad-basic
opkg install wpa-cli wpa-supplicant hostapd nano
reboot
```

等重启好之后，管理页面里面 Wireless Security 那一栏的验证方式里面就有 WPA2-EAP 了！接下来把学校的验证信息填进去，然后保存就连上啦！UofT 的配置如下：

```txt
Encryption : WPA2-EAP (strong security)
Cipher     : auto
EAP-Method : PEAP
...
Certificate Constraaint (Domain) : radius.wireless.utoronto.ca
...
Authentication : EAP-MSCHAPv2
Identity       : 你的 UTORid
Password       : 你的 UTORid 密码
```

接下来把 WIFI 配置一下，让智能插座连上这个 WIFI 就好了！
