在使用linux系统的过程中,我们往往不希望ssh端口直接暴露在公网,此时通过wireguard组网、服务器防火墙禁止22入站就可以实现相对较高的安全性(在不配置fail2ban或密钥登陆的时候尤其如此)
wg使用udp协议通信,在一切的开始时需要先确定并放行为wg分配的端口(此案例假设为20000/udp)
以Debian 12为例,wg的安装与系统的配置:
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
sysctl -p
apt update && apt install wireguard resolvconf生成wg的公钥及私钥(wg通过私钥生成公钥)
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey
cat publickey假设wg服务端(有公网的一端)的密钥为:
私钥:private111111 公钥:public111111
wg客户端生成的密钥为:
私钥:private222222 公钥:public222222
密钥准备完成后,接下来为网络分配一个私网网段,此案例中选择的网段为10.10.16.0/24,服务端分配10.10.16.1/32,客户端分配10.10.16.2/32
接下来需要考虑wg两个端点路由,为了保证端点之间可以使用分配的IP互相访问,wg的allowIPs需要添加10.10.16.0/24,假设客户端是手机,服务端是家中的路由器,需要手机通过wg访问家里局域网(192.168.1.0/24)的服务,那么192.168.1.0/24同样需要添加到客户端的allowIPs中(添加到allowIPs的网段流量会被wg接管发往对端)。
这些配置确定完成后就可以开始编写wg的配置文件了,以下是简单配置:
服务端
[Interface]
PrivateKey = private111111
Address = 10.10.16.1/32
ListenPort = 20000
mtu = 1380
[Peer]
PublicKey = public222222
AllowedIPs = 10.10.16.0/24客户端
[Interface]
PrivateKey = private22222
Address = 10.10.16.2/32
mtu = 1380
[Peer]
PublicKey = public111111
AllowedIPs = 10.10.16.0/24, 192.168.1.0/24
Endpoint = 服务端ip:20000将配置文件准备完毕后,就可以分别导入进wg
在debian12中将服务端配置文件写入/etc/wireguard/wg0.conf,服务端配置结束,客户端手动添加配置即可,以下是wg的常用指令
#快速启动和停止wg0接口
wg-quick up wg0
wg-quick down wg0
#可通过systemctl管理wg接口,千万别忘了要用systemctl实现开机自启,否则服务器重启wg就失联了
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
#wg的其他命令
wg #查看wg状态
wg syncconf wg0 <(wg-quick strip wg0) #热更新wg接口配置一切都完成后,双端全部启动wg,在gui界面上看到wg交互的流量并且能ping通就代表wg配置正常