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

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

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

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

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

sudo apt update

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

sudo apt install wireguard

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

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

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

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

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 端口被封了,悲 :(