暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

WireGuard服务器环境搭建

前瞻技术 2021-06-24
7107

作者:萌伢
创作日期: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.conf


wg0.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 wg0

8. 手动停止配置为wg0的WireGuard

 wg-quick down wg0

9. 查看节点列表

 wg

wg0是配置文件

10. Centos7系统,设置wg0为系统服务开机启动

 systemctl enable wg-quick@wg0

11. 以系统服务形式启动时,重新载入wg0配置文件(不影响已有连接)

 systemctl reload wg-quick@wg0.service

代码中的wg0代表着配置文件的文件名(不包含后缀名)



文章转载自前瞻技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论