关于 WireGuard
WireGuard 是2017年新出现的一个开源 VPN 方案,其代码简单高效,基于 Linux 内核实现并且采用了更先进的加密协议。
WireGuard 项目官方网站
WireGuard 源代码 Github 镜像
安装
WireGuard 官方网站上已经有极为详尽的各发行版的安装指导,在此我就不再赘述了。
WireGuard Installation Guide
服务端配置
开启 IPv4 NAT 转发
1
|
sudo sysctl -w net.ipv4.ip_forward=1
|
生成服务端密钥对
1
2
|
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
|
编写服务端配置文件
1
|
sudo vim /etc/wireguard/wg0.conf
|
1
2
3
4
5
6
7
8
9
10
11
|
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = {Server Private Key}
[Peer]
PublicKey = {Client Private Key}
AllowedIPs = 10.0.2.0/24
|
启动 WireGuard
客户端配置
在 WireGuard 中,服务端和客户端都是 peer,可以说是基本平等的,只是哪一方主动连接另一方而已,所以客户端的配置文件与服务端是十分相近的。
首先是同服务端一样生成客户端的私钥和公钥,然后编辑 /etc/wireguard/wg0.conf
。
1
2
3
4
5
6
7
8
9
|
[Interface]
PrivateKey = {Client Private Key}
Address = 10.0.2.1/24
DNS = 8.8.8.8
[Peer]
PublicKey = {Server Public Key}
Endpoint = {server_ip}:{server_port}
AllowedIPs = 0.0.0.0/0
|
之后同样执行
来启动 WireGuard。
可以分别在服务端和客户端执行
来观察隧道的运行状况。
如果要关闭 WireGuard,执行