Wireguard 入门记录
WireGuard是一种高效的安全传输协议,基于UDP工作,采用现代加密技术。其设计简洁,易于配置,支持快速连接和断开。从5.6版本开始成为Linux内核的一部分,并被许多Linux发行版采用。WireGuard的优点是高性能、安全性高、易于使用。
提示: 以下内容为个人记录,仅供参考。以下教程均以Debian 12作为环境。
安装Wireguard
在Linux 5.6
版本之后,Wireguard已经被Linux内核包含,安装Wireguard变的简易。
sudo apt-get update
sudo apt-get install wireguard
配置Wireguard
Wireguard的配置文件位于/etc/wireguard
目录下,配置文件以.conf
为后缀名。以下配置为单机配置部分,稍后会介绍服务器互相通信的配置。Wireguard并不存在服务端和客户端的概念,每个接入Wireguard的设备都视作Node
单机配置(准备工作)
生成密钥对
mkdir /etc/wireguard/key # 创建密钥对目录 cd /etc/wireguard/key # 进入密钥对目录 umask 077 # 设置权限 wg genkey > privatekey # 生成私钥 wg pubkey < privatekey > publickey # 生成公钥
创建Wireguard网卡
ip link add dev wg0 type wireguard # 创建wg0网卡 ip addr add 10.0.0.1/24 dev wg0 # 配置IP地址 (10.0.0.1为Node的IP地址,请根据实际情况修改)
配置Wireguard网卡
wg set wg0 private-key /etc/wireguard/key/privatekey # 配置私钥 ip link set dev wg0 up # 启用网卡
- 补充:
# 使用本命令以修改Wireguard监听端口,26352请换为自定义端口 wg set wg0 listen-port 26352
Node连接(简要步骤)
Node之间互联,需要配置公钥。以下分为Node1和Node2两端进行说明。
Node1配置
获取Node2的公钥
# 请在Node2上执行以下命令获取Node2的公钥 cat /etc/wireguard/key/publickey # 获取Node2的公钥
配置Node1的Wireguard
# 请在Node1上执行以下命令配置Node1的Wireguard # 10.0.0.2为Node2的IP地址,请根据实际情况修改 # publickey为Node2的公钥,请填入上一步获取的公钥 # Endpoint为Node2的IP地址和端口,请根据实际情况修改 sudo wg set wg0 peer publickey allowed-ips 10.0.0.2/32 endpoint 0.0.0.0:26352 # 配置Node2的公钥和IP地址
Node2配置
获取Node1的公钥
# 请在Node1上执行以下命令获取Node1的公钥 cat /etc/wireguard/key/publickey # 获取Node1的公钥
配置Node2的Wireguard
# 请在Node2上执行以下命令配置Node2的Wireguard # 10.0.0.1为Node1的IP地址,请根据实际情况修改 # publickey为Node1的公钥,请填入上一步获取的公钥 # Endpoint为Node1的IP地址和端口,请根据实际情况修改 sudo wg set wg0 peer publickey allowed-ips 10.0.0.1/32 endpoint 0.0.0.0:26352 # 配置Node1的公钥和IP地址
Systemd服务管理
为了方便管理Wireguard,可以将Wireguard的服务配置为Systemd服务。以下为Node1和Node2的配置。
Node1配置
保存配置
sudo wg-quick save wg0
通过wg-quick配置Systemd服务
systemctl enable [email protected] # 启用服务 systemctl start [email protected] # 启动服务
Node2配置
保存配置
sudo wg-quick save wg0
通过wg-quick配置Systemd服务
systemctl enable [email protected] # 启用服务 systemctl start [email protected] # 启动服务
至此,Node1和Node2的Wireguard配置完成。Node1和Node2之间可以互相通信。