Wireguard服务器客户端搭建
前言
虽然wireguard在官网文档里面并没有明确的服务端和客户端之分,两者在使用权限地位上是平等的,但是由于我们通过每一个接入终端的公钥私钥都在一个主机上生成,然后由这个主机分发密钥,因此我们将这个生成公私钥的主机成为服务端,其他所有设备都成为客户端。
服务端配置
本次网络环境配置中,选择公网云服务器作为服务器,这样做的好处就在其他客户端可以直接和服务端进行直连,以服务端为中心构建一个虚拟局域网,但是问题在于通过这样的方式,当客户端同时在线的主机数量比较多的时候,服务端的带宽压力会比较大。
Step1:更新安装wireguard
sudo apt update
:更新系统具备的软件包
sudo apt install wireguard resolvconf -y
:安装wireguard软件
Step2:允许服务端进行IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
:允许服务端进行IP转发,在那个文件里面,原本这个IP转发的功能是被注释掉的
sysctl -p
:生效
Step3:生成公私密钥
sudo su
:先以root身份进行运行
cd /etc/wireguard/
:进入到wireguard目录中
umask 777
:调整目标默认的权限(其他教程里面写的是077,感觉麻烦直接777)
wg genkey > server.key
:生成私钥
wg pubkey < server.key > server.key.pub
:根据私钥生成公钥
这里就完成了公私密钥对的生成,这样就只是生成了一个,第一个是给服务端使用的,后续也需要为其他客户端生成对应的公司密钥对,因为都是通过wireguard软件生成的,所以在哪里制作这个公私密钥其实没什么关系。
Step4:配置文件的构建
首先是服务端:
[Interface]
PrivateKey = 自己的私钥
Address = xxx.xxx.xxx.xxx/24 自己定义的IP地址
ListenPort = 监听的端口(可以自定义但是注意打开端口访问权限)
PostUp=iptables -w 5 -I FORWARD -i %i -o %i -j ACCEPT
PreDown=iptables -w 5 -D FORWARD -i %i -o %i -j ACCEPT
[Peer]
PublicKey = 对方的公钥,每多一个客户端都会多一个[peer],如果所有客户端都使用同一个公私密钥可能也可以但是各自的ip请保持唯一
PresharedKey = 预共享密钥,同样也是由wireguard自动生成的,好像是多一层加密
AllowedIPs = 允许连接到自己这个网络的IP或者网段
然后是客户端:
[Interface]
PrivateKey = 自己的私钥
Address = 自己定义的虚拟局域网IP地址/24(32)
[Peer]
PublicKey = 服务端的公钥
PresharedKey = 和服务器里面填写的一样
AllowedIPs = 允许访问的IP以及网段,这里一般都是填写对应网段
Endpoint = 公网的IP以及对应的端口
PersistentKeepalive = 保持访问的时间
Step5:开启服务
systemctl enable wg-quick@服务端的配置文件名(不需要后缀)
:开机自启动
wg-quick up/down 文件名
:开启或关闭wireguard
Step6:客户端接入
linux上同样使用上面的命令开启
windows可以通过软件添加配置文件的方式连接进入这个虚拟局域网