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

单机配置(准备工作)

  1. 生成密钥对

    mkdir /etc/wireguard/key # 创建密钥对目录
    cd /etc/wireguard/key # 进入密钥对目录
    umask 077 # 设置权限
    wg genkey > privatekey # 生成私钥
    wg pubkey < privatekey > publickey # 生成公钥
    
  2. 创建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地址,请根据实际情况修改)
    
  3. 配置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配置

  1. 获取Node2的公钥

    # 请在Node2上执行以下命令获取Node2的公钥
    cat /etc/wireguard/key/publickey # 获取Node2的公钥
    
  2. 配置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配置

  1. 获取Node1的公钥

    # 请在Node1上执行以下命令获取Node1的公钥
    cat /etc/wireguard/key/publickey # 获取Node1的公钥
    
  2. 配置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配置

  1. 保存配置

    sudo wg-quick save wg0
    
  2. 通过wg-quick配置Systemd服务

    systemctl enable [email protected] # 启用服务
    systemctl start [email protected] # 启动服务
    

Node2配置

  1. 保存配置

    sudo wg-quick save wg0
    
  2. 通过wg-quick配置Systemd服务

    systemctl enable [email protected] # 启用服务
    systemctl start [email protected] # 启动服务
    

至此,Node1和Node2的Wireguard配置完成。Node1和Node2之间可以互相通信。