# 使用 WireGuard 协议绕校园网认证进行上网

> 以前中专捣鼓的小玩意，搞过几次但服务器过期了就不了了之了，毕竟买了校园网；现在来到了大专，终于又可以用上了，这次搞到了三年免费的 30 Mbps 带宽香港服务器，于是就好好记录一下操作。

使用 WireGuard 协议，简单地将上网流量通过 53 UDP 端口绕过校园网认证页面转发到自建服务器，再由自建服务器访问并结果返回给客户机。


本文章云服务使用的环境是 Ubuntu 22.04。

安装 WireGuard-Tools 前最好更新一下软件源。

```shell
sudo apt update
```

接下来，就是安装上面提到的工具了。

```shell
sudo apt install wireguard
```

开启流量转发，顾名思义。

```shell
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
```

记得关闭 Ubuntu 防火墙以及在服务商的安全组里开放 53 UDP 端口（如果有的话）。


生成节点密钥，文件名自定义，用于备忘罢了。
WireGuard 协议不分服务端和客户端，所以节点密钥对应着使用即可。

```shell
name=文件名 && wg genkey | tee $name'.prikey' | wg pubkey > $name'.pubkey'
```

在 `/etc/wireguard/` 目录中新建配置文件 `wg0.conf` 名字随意也罢。

每个连接到云服务器节点的机器只能使用未被使用的 IP 地址及对应节点公钥。

```
[Interface]
PrivateKey = 节点密钥
Address = 10.0.0.1/24
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 53
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = 节点公钥
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = 节点公钥
AllowedIPs = 10.0.0.3/32

[Peer]
PublicKey = 节点公钥
AllowedIPs = 10.0.0.4/32

...
```

启动服务端：

查看节点状态 `wg`

启动 `wg-quick up wg0`

关闭 `wg-quick down wg0`

开机自启 `systemctl enable wg-quick@wg0`

以上的操作都是在云服务器里完成的，启动完毕后即可在需要用的机器里连接到云服务器的节点即可。

以下是用于连接云服务器节点的配置：

```
[Interface]
PrivateKey = 对应上面节点的私钥
Address = 对应上面节点的 IP CIDR，示例：10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = 云服务器节点的公钥
AllowedIPs = 0.0.0.0/0
Endpoint = 云服务器公网 IP 加端口号
PersistentKeepalive = 25
```

> 可惜了，53 端口被封了，悲 :(