7.5. 使用 nmcli 配置 WireGuard 服务器
您可以通过在 NetworkManager 中创建连接配置集来配置 WireGuard 服务器。使用此方法让 NetworkManager 管理 WireGuard 连接。
此流程假设以下设置:
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 地址和子网掩码
 
流程
添加 NetworkManager WireGuard 连接配置集:
nmcli connection add type wireguard con-name server-wg0 ifname wg0 autoconnect no
# nmcli connection add type wireguard con-name server-wg0 ifname wg0 autoconnect noCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令创建一个名为
server-wg0的配置文件,并将虚拟接口wg0分配给它。要防止连接在添加后而没有最终配置的情况下自动启动,请禁用autoconnect参数。设置服务器的隧道 IPv4 地址和子网掩码:
nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24
# nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置服务器的隧道 IPv6 地址和子网掩码:
nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32
# nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将服务器的私钥添加到连接配置集中:
nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="
# nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为传入的 WireGuard 连接设定端口:
nmcli connection modify server-wg0 wireguard.listen-port 51820
# nmcli connection modify server-wg0 wireguard.listen-port 51820Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在主机上始终设置固定端口号,接收传入的 WireGuard 连接。如果您没有设置端口,WireGuard 会在每次激活
wg0接口时使用随机的空闲端口。为您要允许与此服务器通信的每个客户端添加对等配置。您必须手动添加这些设置,因为
nmcli工具不支持设置相应的连接属性。编辑
/etc/NetworkManager/system-connections/server-wg0.nmconnection文件,并附加:[wireguard-peer.bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=] allowed-ips=192.0.2.2;2001:db8:1::2;
[wireguard-peer.bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=] allowed-ips=192.0.2.2;2001:db8:1::2;Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
										
[wireguard-peer.<public_key_of_the_client>]条目定义客户端对等的部分,以及包含客户端公钥的部分的名称。 allowed-ips参数设置允许向这个服务器发送数据的客户端的隧道 IP 地址。为每个客户端添加一个部分。
- 
										
 重新载入
server-wg0连接配置文件:nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnection
# nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
可选:将连接配置为自动启动,请输入:
nmcli connection modify server-wg0 autoconnect yes
# nmcli connection modify server-wg0 autoconnect yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新激活
server-wg0连接:nmcli connection up server-wg0
# nmcli connection up server-wg0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您在具有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能容易被重定向。有关详情和缓解步骤,请参阅 将 VPN 连接分配给专用的路由表,以防止连接绕过隧道。
 
验证
显示
wg0设备的接口配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在输出中显示私钥,请使用
WG_HIDE_KEYS=never wg show wg0命令。显示
wg0设备的 IP 配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow