校园网其实就是一个大型的局域网,内部的设备可以相互通讯,以此借助局域网的服务器为跳板,实现上网
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-tools2.生成密钥对
# 进入配置目录
cd /etc/wireguard
# 生成服务器私钥
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
# 设置权限
sudo chmod 600 server_private.key3.创建服务器配置文件
创建 /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/32eth0需要换成服务器物理网卡的名称
4.启用 IP 转发
# 永久启用 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p5.启动 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.key3.创建客户端配置文件
创建 /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
# 应该看到客户端的连接信息,包括握手时间和流量统计