| 作者: | 萌伢 |
| 创作日期: | 2021.04.27 |

WireGuard 是一款开源的VPN协议。目前支持Windows、Linux、macOS、Android、IOS和OpenWrt。WireGuard 被视为下一代VPN协议,用来替代OpenVPN,IPSec等VPN协议。
WireGuard 协议作为 Linux 内核模块运行,所以效率极高。使用了先进的加密技术(利用Curve25519进行密钥交换,ChaCha20和Poly1305用于数据认证,BLAKE2用于散列),安全性毋庸置疑。WireGuard 是为嵌入式设备开发的,支持IP地址漫游,也就是网络断开再连,对它不会有影响。WireGuard 使用 UDP 协议传输数据,在不使用的情况下默认不会传输任何 UDP 数据包,所以比常规VPN省电很多,可以像ShadowSocks一样一直挂着使用。
--- 摘自 WireGuard简明介绍及使用指引
1. 配置文件路径
/etc/wireguard/
2. 生成服务端密钥对
# wg genkey | tee privatekey | wg pubkey > publickey && cat privatekey && cat publickey
0LMAg4dDfOkhXKrBSJqfTRpuJ2K7XeOt4UonOffE8GU=
MAYLDHiEvHPxVbIUkQzSnGBCIgr9DyEZhnZIx8FMsk4=
其中,’wg genkey‘为生成密钥串命令,“0LMAg4dDfOkhXKrBSJqfTRpuJ2K7XeOt4UonOffE8GU=”为生成的密钥串;privatekey为密钥串保存的文件名;wg pubkey为根据密钥串生成公钥串命令,“MAYLDHiEvHPxVbIUkQzSnGBCIgr9DyEZhnZIx8FMsk4=”为生成的公钥串;publickey为公钥串保存的文件名。
3. 生成客户端密钥对
# wg genkey | tee privatekey | wg pubkey > publickey && cat privatekey && cat publickey
mHe5b4ri+yccL2DtSCIg3frgRty/jy/LLqn6QQmIYWA=
kRc+/EkS1VIdZx4Fqvn8zV0ZwKmYZudDtwKG8pEucVg=
其中,“mHe5b4ri+yccL2DtSCIg3frgRty/jy/LLqn6QQmIYWA=”为客户端的公钥串,“kRc+/EkS1VIdZx4Fqvn8zV0ZwKmYZudDtwKG8pEucVg=”为客户端的密钥串
4. 创建服务器端配置文件
vim etc/wireguard/wg0.confwg0.conf文件的内容如下:
[Interface]
# 填写服务端密钥串
PrivateKey = 0LMAg4dDfOkhXKrBSJqfTRpuJ2K7XeOt4UonOffE8GU=
Address = 10.186.1.14/32
ListenPort = 32001
# SaveConfig = true
MTU = 1500
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
[Peer]
# 填写第一个客户端公钥串
PublicKey = kRc+/EkS1VIdZx4Fqvn8zV0ZwKmYZudDtwKG8pEucVg=
AllowedIPs = 10.186.1.137/32
[Peer]
# 填写第二个客户端公钥串
PublicKey = 9arAMjlpXot2mzMdT**************************=
AllowedIPs = 10.186.1.110/32
[Peer]
# 填写第三个客户端公钥串
PublicKey = kcOHhGONzIDYDpTJZ**************************=
AllowedIPs = 10.186.1.20/32
[Peer]
# 填写第四个客户端公钥串
PublicKey = iQ6T8ZY/n0uByWogU**************************=
AllowedIPs = 10.186.1.11/32
5. 创建第一个客户端配置文件
[Interface]
# 客户端密钥串
PrivateKey = mHe5b4ri+yccL2DtSCIg3frgRty/jy/LLqn6QQmIYWA=
Address = 10.186.1.11/32
MTU = 1500
[Peer]
# 服务端公钥串
PublicKey = MAYLDHiEvHPxVbIUkQzSnGBCIgr9DyEZhnZIx8FMsk4=
AllowedIPs = 10.186.1.0/24
# 服务端地址
Endpoint = host-address:port
PersistentKeepalive = 30

6. 开启服务端服务器的网络转发功能
echo 1 > proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> etc/sysctl.conf
sysctl -p
7. 手动启动配置为wg0的WireGuard
wg-quick up wg08. 手动停止配置为wg0的WireGuard
wg-quick down wg09. 查看节点列表
wgwg0是配置文件
10. Centos7系统,设置wg0为系统服务开机启动
systemctl enable wg-quick@wg011. 以系统服务形式启动时,重新载入wg0配置文件(不影响已有连接)
systemctl reload wg-quick@wg0.service代码中的wg0代表着配置文件的文件名(不包含后缀名)




