手搓wireguard

Wireguard 不分服务端和客户端。任何可以开监听端口的服务器设备都可以做服务器端。
以下为了方便介绍,将能开端口的称为服务器端,连接上来的称为客户端。

1.前置

更新源和安装wireguard,似乎是Debian12以后安装wireguard会自动安装wireguard-tools,不过为了方便,都写上吧
apt update
apt install wireguard wireguard-tools -y

编辑开启IP转发,如果需要通过服务器向外部访问数据得开启转发。
如果只是两台机器连接在一起,当成一个路由器下的内网使用,似乎是不用开
nano /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p

2.先到服务器端生成公私钥。再到客户端鸡上生成公私钥。

wg genkey | tee privatekey | wg pubkey > publickey

本文不会使用PresharedKey(预共享密钥),这是个可选项。
使用后,相当于加密安全等级更高,可以提供后量子密码学的安全性。建议先折腾完能使用后,再折腾预共享密钥,预共享密钥需要服务端为每个客户端都生成公私钥,第一次弄可能会直接被绕晕。

3.服务端配置

[Interface]
Address = 10.0.8.1/24  #为这台服务器手动选择一个IP,并且确定好子网掩码
#SaveConfig = true   #自动更新保存你的iptables和其他配置到你的此文件中,
ListenPort = 51820   #服务器端的监听端口,客户端会连接到这个端口上
MTU = 1340   #可选项,有些网卡必须调低MTU才能连接上,大部分不需要
PrivateKey = gK9K5Obfv29FY5oVjr8jeAcSEpW8sBCBZKvG8UcykUI=   #服务器端的私钥(privatekey)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = pH0ox/1VZLp7nioZXX7U6/p4Zb6/oOHi7nJSVTk6Yg4=   客户端上生成的公钥(publickey)
AllowedIPs = 10.0.8.3/32

客户端

[Interface]
Address = 10.0.8.3/24   #为这台服务器手动选择一个IP,并且确定好子网掩码
DNS = 223.5.5.5   #运行后会自动更改你的/etc/resolv.conf,关闭后恢复 
MTU = 1340   #可选项,有些网卡必须调低MTU才能连接上,大部分不需要
ListenPort = 51820   #服务器端的监听端口,客户端会连接到这个端口上。只做客户端可以删去
PrivateKey = kPumWqONMDSFgQOlQAdi7ic2ABsi1UKae4upbpSZI1I=   #本机的私钥(privatekey)

[Peer]
PublicKey = jpwqwAs8ir2se065D81+JfWA6kajedqKts8+J0HI0g4=   #服务器上生成的公钥(publickey)
AllowedIPs = 0.0.0.0/0
#非常重要的一个配置,一定要充分理解这个选项的含义。
#0.0.0.0/0代表将你网卡上的所有IPv4流量都通过 VPN 隧道转发到服务器端上,相当于通常意义上我们VPN开启了全局代理访问。
#一单你使用了该选项,你会无法从外网直接访问你的VPS(如SSH连接会直接断开),直接失联。
#如果像服务器端那样 写成AllowedIPs = 10.0.8.1/32,则相当于当成一个路由器下的内网连接在一起。
#AllowedIPs代表的含义是你允许哪些IP/IP段通过VPN隧道穿透到服务器端。
PersistentKeepalive = 25
Endpoint = 82.25.47.59:51820   #服务器端的IP和端口

至此两台服务器已经连接在一起了。
如果你需要3台及其以上的服务器,互相直接连接,需要每台服务器上的[Peer]都得写一遍,具体可以随便往上找个配置示例看一下。