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

先决条件

  • 您已为服务器和客户端生成了公钥和私钥。
  • 您知道以下信息:

    • 服务器的私钥
    • 客户端的静态隧道 IP 地址和子网掩码
    • 客户端的公钥
    • 服务器的静态隧道 IP 地址和子网掩码

流程

  1. 添加 NetworkManager WireGuard 连接配置集:

    # nmcli connection add type wireguard con-name server-wg0 ifname wg0 autoconnect no
    Copy to Clipboard Toggle word wrap

    此命令创建一个名为 server-wg0 的配置文件,并将虚拟接口 wg0 分配给它。要防止连接在添加后而没有最终配置的情况下自动启动,请禁用 autoconnect 参数。

  2. 设置服务器的隧道 IPv4 地址和子网掩码:

    # nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24
    Copy to Clipboard Toggle word wrap
  3. 设置服务器的隧道 IPv6 地址和子网掩码:

    # nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32
    Copy to Clipboard Toggle word wrap
  4. 将服务器的私钥添加到连接配置集中:

    # nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="
    Copy to Clipboard Toggle word wrap
  5. 为传入的 WireGuard 连接设定端口:

    # nmcli connection modify server-wg0 wireguard.listen-port 51820
    Copy to Clipboard Toggle word wrap

    在主机上始终设置固定端口号,接收传入的 WireGuard 连接。如果您没有设置端口,WireGuard 会在每次激活 wg0 接口时使用随机的空闲端口。

  6. 为您要允许与此服务器通信的每个客户端添加对等配置。您必须手动添加这些设置,因为 nmcli 工具不支持设置相应的连接属性。

    1. 编辑 /etc/NetworkManager/system-connections/server-wg0.nmconnection 文件,并附加:

      [wireguard-peer.bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=]
      allowed-ips=192.0.2.2;2001:db8:1::2;
      Copy to Clipboard Toggle word wrap
      • [wireguard-peer.<public_key_of_the_client>] 条目定义客户端对等的部分,以及包含客户端公钥的部分的名称。
      • allowed-ips 参数设置允许向这个服务器发送数据的客户端的隧道 IP 地址。

        为每个客户端添加一个部分。

    2. 重新载入 server-wg0 连接配置文件:

      # nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnection
      Copy to Clipboard Toggle word wrap
  7. 可选:将连接配置为自动启动,请输入:

    # nmcli connection modify server-wg0 autoconnect yes
    Copy to Clipboard Toggle word wrap
  8. 重新激活 server-wg0 连接:

    # nmcli connection up server-wg0
    Copy to Clipboard Toggle word wrap
  9. 如果您在具有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能容易被重定向。有关详情和缓解步骤,请参阅 将 VPN 连接分配给专用的路由表,以防止连接绕过隧道

验证

  1. 显示 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
    Copy to Clipboard Toggle word wrap

    要在输出中显示私钥,请使用 WG_HIDE_KEYS=never wg show wg0 命令。

  2. 显示 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
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat