本文详细介绍了在Debian系统上部署wireguard VPN的过程。首先介绍了所需的环境,包括Debian9服务器、OpenWrt网关和Windows10客户端。接着,文章指导读者如何配置wireguard软件源并安装wireguard程序。随后,详细解释了如何生成双端密钥、创建配置文件,以及如何通过命令行进行配置,并最终生成用于客户端连接的二维码。
环境
设备 |
说明 |
Debian9 4.9 内核 vulrt 日本服务器 |
部署 wireguard 程序 |
OpenWrt x86 64 |
内网网关 |
Windows10 |
内网设备 |
部署 wireguard 服务器
配置 wireguard 软件源, 并且安装 wireguard 程序
1 2 3 4
| echo "deb http://deb.debian.org/debian/ unstable main" >> /etc/apt/sources.list.d/unstable.list echo -e "Package: *\nPin: release a=unstable\nPin-Priority: 150\n" >> /etc/apt/preferences.d/limit-unstable
apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r)
|
1 2 3
| # --> 准备工作目录 mkdir /etc/wireguard/ cd /etc/wireguard/
|
生成双端秘钥
1 2
| mkdir server;wg genkey | tee server/privatekey | wg pubkey > server/publickey mkdir client;wg genkey | tee client/privatekey | wg pubkey > client/publickey
|
创建配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cat > wg0.conf <<-EOF [Interface] Address = 172.16.220.1/24 SaveConfig = false PostUp = (echo 1 > /proc/sys/net/ipv4/ip_forward);iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens4 -j MASQUERADE ListenPort = 12138 PrivateKey = `cat server/privatekey`
[Peer] #Client PublicKey = `cat client/publickey` AllowedIPs = 172.16.220.2/32 EOF
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| cat > client.conf <<-EOF [Interface] PrivateKey = `cat client/privatekey` Address = 172.16.220.2/24 DNS = 8.8.8.8 MTU = 1420
[Peer] PublicKey = `cat server/publickey` # AllowedIPs = 0.0.0.0/0 AllowedIPs = 172.16.220.0/24 # wireguard虚拟网段互通 Endpoint = f5-tunnel.my.to:12138 PersistentKeepalive = 25 EOF qrencode -t ansiutf8 < client.conf
|
1 2
| # 生成二维码 qrencode -t ansiutf8 < client.conf
|
多个client 就创建多个client peer配置就行了
进阶玩法
wireguard 双端内网互通
主机 |
ip |
wg ip |
内部网段 |
作用 |
ServerA |
172.21.161.34 |
172.16.220.1 |
172.21.161.34/20 |
公网服务器, 部署wg服务端 |
ClientB |
192.168.2.142 |
172.16.220.3 |
192.168.2.0/24 |
内网服务器, 部署wg客户端 |
ClientC |
192.168.2.102 |
无 |
192.168.2.0/24 |
内网服务器 |
目标是让ServerA 能够直接访问 ClientC的192.168.2.102 ip |
|
|
|
|
ServerA配置
1 2 3
| # 把server的配置改为本机的ip # AllowedIPs = 172.16.220.3/32,192.168.2.0/24 AllowedIPs = 192.168.2.0/24
|
1
| ip route add 172.21.161.34/32 via 192.168.2.142
|
1 2 3 4 5
| # 允许所有流量转发(从192.168.2.0/24到其他网络) sudo iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT
# 允许 NAT 转换,确保源地址在路由转发后是正确的 sudo iptables -t nat -A POSTROUTING -s 172.21.161.34/32 -d 192.168.2.0/24 -j MASQUERADE
|