8.9. 使用 wg-quick 服务配置 WireGuard 服务器
您可以通过在 /etc/wireguard/ 目录中创建配置文件来配置 WireGuard 服务器。使用此方法独立于 NetworkManager 配置服务。
此流程假设以下设置:
server:
-
私钥:
YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg= -
隧道 IPv4 地址:
192.0.2.1/24 -
频道 IPv6 地址:
2001:db8:1::1/32
-
私钥:
Client:
-
Public key:
bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM= -
隧道 IPv4 地址:
192.0.2.2/24 -
频道 IPv6 地址:
2001:db8:1::2/32
-
Public key:
先决条件
- 您已为服务器和客户端生成了公钥和私钥。
您知道以下信息:
- 服务器的私钥
- 客户端的静态隧道 IP 地址和子网掩码
- 客户端的公钥
- 服务器的静态隧道 IP 地址和子网掩码
流程
安装
wireguard-tools软件包:# dnf install wireguard-tools使用以下内容创建
/etc/wireguard/wg0.conf文件:[Interface] Address = 192.0.2.1/24, 2001:db8:1::1/32 ListenPort = 51820 PrivateKey = YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg= [Peer] PublicKey = bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM= AllowedIPs = 192.0.2.2, 2001:db8:1::2[Interface]部分描述了服务器上接口的 WireGuard 设置:-
Address:逗号分隔的服务器的隧道 IP 地址的列表。 -
PrivateKey:服务器的私钥。 ListenPort:WireGuard 在其上侦听传入的 UDP 连接的端口。在主机上始终设置固定端口号,接收传入的 WireGuard 连接。如果您没有设置端口,WireGuard 会在每次激活
wg0接口时使用随机的空闲端口。
-
每个
[Peer]部分描述了一个客户端的设置:-
PublicKey:客户端的公钥。 -
AllowedIPs:允许向这个服务器发送数据的客户端的隧道 IP 地址。
-
启用并启动 WireGuard 连接:
# systemctl enable --now wg-quick@wg0systemd 实例名称必须与
/etc/wireguard/目录中不带.conf后缀的配置文件的名称匹配。该服务还会将这个名称用于虚拟网络接口。- 如果您在具有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能容易被重定向。有关详情和缓解步骤,请参阅将 VPN 连接分配给专用路由表,以防止连接绕过隧道。
验证
显示
wg0设备的接口配置:# wg show wg0 interface: wg0 public key: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE= private key: (hidden) listening port: 51820 peer: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM= allowed ips: 192.0.2.2/32, 2001:db8:1::2/128要在输出中显示私钥,请使用
WG_HIDE_KEYS=never wg show wg0命令。显示
wg0设备的 IP 配置:# ip address show wg0 20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 192.0.2.1/24 scope global wg0 valid_lft forever preferred_lft forever inet6 2001:db8:1::1/32 scope global valid_lft forever preferred_lft forever