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 no
Copy 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/24
Copy 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/32
Copy 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 51820
Copy 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.nmconnection
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:将连接配置为自动启动,请输入:
nmcli connection modify server-wg0 autoconnect yes
# nmcli connection modify server-wg0 autoconnect yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新激活
server-wg0
连接:nmcli connection up server-wg0
# nmcli connection up server-wg0
Copy 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