8.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此命令创建一个名为
server-wg0的配置文件,并将虚拟接口wg0分配给它。要防止连接在添加后而没有最终配置的情况下自动启动,请禁用autoconnect参数。设置服务器的隧道 IPv4 地址和子网掩码:
# nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24设置服务器的隧道 IPv6 地址和子网掩码:
# nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32将服务器的私钥添加到连接配置集中:
# nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="为传入的 WireGuard 连接设定端口:
# nmcli connection modify server-wg0 wireguard.listen-port 51820在主机上始终设置固定端口号,接收传入的 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.<public_key_of_the_client>]条目定义客户端对等的部分,以及包含客户端公钥的部分的名称。 allowed-ips参数设置允许向这个服务器发送数据的客户端的隧道 IP 地址。为每个客户端添加一个部分。
-
重新载入
server-wg0连接配置文件:# nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnection
可选:将连接配置为自动启动,请输入:
# nmcli connection modify server-wg0 autoconnect yes重新激活
server-wg0连接:# nmcli connection up server-wg0- 如果您在具有 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 brd 192.0.2.255 scope global noprefixroute wg0 valid_lft forever preferred_lft forever inet6 2001:db8:1::1/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::3ef:8863:1ce2:844/64 scope link noprefixroute valid_lft forever preferred_lft forever