校园网其实就是一个大型的局域网,内部的设备可以相互通讯,以此借助局域网的服务器为跳板,实现上网

1.使用代理服务器只能代理http协议的tcp流量,并不能代理udp流量,导致一些基于udp协议的网络服务不能正常访问

2.使用与局域网内有出公网的服务器搭建点对点连接,最后使用全隧道模式,让出公网的服务器代理所有流量,实现绕过校园网实现上网。

这里使用wireguard为例

服务端配置

1.安装wireguard

# Ubuntu/Debian
sudo apt update
sudo apt install wireguard

# CentOS/RHEL
sudo yum install epel-release
sudo yum install wireguard-tools

# Arch Linux
sudo pacman -S wireguard-tools

2.生成密钥对

# 进入配置目录
cd /etc/wireguard

# 生成服务器私钥
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

# 设置权限
sudo chmod 600 server_private.key

3.创建服务器配置文件

创建 /etc/wireguard/wg0.conf

[Interface]
# 服务器的 WireGuard 虚拟 IP
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
# 服务器私钥
PrivateKey = <服务器私钥内容>

# 启用 IP 转发(此处为iptables防火墙)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 客户端 1 配置
[Peer]
# 客户端公钥
PublicKey = <客户端1公钥>
# CIDR写法,配置虚拟ip
AllowedIPs = 10.0.0.2/32 

# 客户端 2 配置
[Peer]
PublicKey = <客户端2公钥>
AllowedIPs = 10.0.0.3/32

eth0需要换成服务器物理网卡的名称

4.启用 IP 转发

# 永久启用 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

5.启动 WireGuard

# 启动 WireGuard
sudo wg-quick up wg0

# 设置开机自启
sudo systemctl enable wg-quick@wg0

# 查看状态
sudo wg show

客户端配置(linux)

1.安装WireGuard

可以在官网下载到各类操作系统的客户端

2.生成客户端密钥

cd /etc/wireguard
wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key
sudo chmod 600 client_private.key

3.创建客户端配置文件

创建 /etc/wireguard/wg0.conf

[Interface]
# 客户端的 WireGuard 虚拟 IP
Address = 10.0.0.2/24
# 客户端私钥
PrivateKey = <客户端私钥内容>
# DNS(必须设置为服务器的虚拟ip地址,如果服务器不属于主路由还需要配置dnsmasq转发dns)
DNS = 10.0.0.1

[Peer]
# 服务器公钥
PublicKey = <服务器公钥>
# 服务器的实际局域网 IP 和端口
Endpoint = 192.168.1.100:51820
# 全隧道模式:路由所有流量(0.0.0.0/0)
AllowedIPs = 0.0.0.0/0
# 保持连接(穿透 NAT)(可选配置,官方推荐不设置)
PersistentKeepalive = 25

关键点

  • AllowedIPs = 0.0.0.0/0 实现全隧道模式

  • Endpoint 填写服务器的实际局域网 IP

4. 启动客户端

# 服务器端
sudo wg show

# 应该看到客户端的连接信息,包括握手时间和流量统计

曼波