前言

在一个数字隐私和安全访问比以往任何时候都更加重要的时代,我们用来建立连接的工具却常常感觉像是过去的遗物——笨重、缓慢且出了名的复杂。多年以来,搭建一个属于自己的 VPN 隧道,似乎一直是一项专为资深网络工程师保留的艰巨任务。

这时,WireGuard 登场了。

不只是又一个 VPN 协议,而是对安全隧道的一次彻底的重新构想。凭借其极致的简洁和惊人的性能,WireGuard 已经从拥挤的网络安全领域中脱颖而出,成为新的黄金标准,受到从个人爱好者到大型企业的广泛推崇。

组网图:

wireguard部署

Ubuntu为例

准备工作

安装:

1
2
sudo apt update
sudo apt install wireguard

开启内核ip转发:

1
sudo vim /etc/sysctl.conf

找到或添加以下两行,并确保们没有被 # 注释掉:

1
2
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

保存文件并退出,然后应用更改:

1
sudo sysctl -p

配置 WireGuard 服务器

进入 WireGuard 配置目录并生成密钥:

1
2
3
4
5
6
7
cd /etc/wireguard
sudo su
umask 077
# 生成服务器密钥
wg genkey | tee server_private.key | wg pubkey > server_public.key
# 生成客户端密钥
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

创建服务器配置文件 wg0.conf

1
sudo vim /etc/wireguard/wg0.conf

将以下配置粘贴进去,并替换关键信息:

TOML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Interface]
Address = 10.0.0.1/24
Address = fd00::1/64
ListenPort = 51820
PrivateKey = <粘贴 server_private.key 的内容>

# 关键:设置防火墙 NAT 规则,请将 vmbr0 替换成您的主网桥接口名
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o vmbr0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o vmbr0 -j MASQUERADE

# 后面可以添加 [Peer] 部分来定义客户端
[Peer]
PublicKey = <粘贴 client1_public.key 的内容>
AllowedIPs = 10.0.0.2/32, fd00::2/128

注意:防火墙放开udp端口51820

启动并管理服务

启动 WireGuard 接口:

1
sudo wg-quick up wg0

设置开机自启:

1
sudo systemctl enable wg-quick@wg0

检查运行状态:

1
sudo wg show

至此,WireGuard 服务已在您服务器上运行。