8.5. nmcli を使用した WireGuard サーバーの設定

NetworkManager で接続プロファイルを作成することで、WireGuard サーバーを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

この手順では、次の設定を前提としています。

  • サーバー

    • プライベートキー:YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=
    • トンネル IPv4 アドレス:192.0.2.1/24
    • トンネル IPv6 アドレス:2001:db8:1::1/32
  • クライアント:

    • 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

    server-wg0 という名前のプロファイルを作成し、そのプロファイルに仮想インターフェイス wg0 を割り当てます。設定を確定せずに接続を追加した後、接続が自動的に開始しないようにするには、autoconnect パラメーターを無効にします。

  2. サーバーのトンネル IPv4 アドレスおよびサブネットマスクを設定します。

    # nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24
  3. サーバーのトンネル IPv6 アドレスおよびサブネットマスクを設定します。

    # nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32
  4. サーバーの秘密鍵を接続プロファイルに追加します。

    # nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="
  5. 着信 WireGuard 接続のポートを設定します。

    # nmcli connection modify server-wg0 wireguard.listen-port 51820

    着信 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;
      • [wireguard-peer.<public_key_of_the_client>] エントリーは、クライアントのピアセクションを定義し、セクション名にはクライアントの公開鍵が含まれます。
      • allowed-ips パラメーターは、このサーバーへのデータ送信を許可するクライアントのトンネル IP アドレスを設定します。

        各クライアントにセクションを追加します。

    2. server-wg0 接続プロファイルを再読み込みします。

      # nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnection
  7. オプション: 自動的に起動するように接続を設定し、次のコマンドを実行します。

    # nmcli connection modify server-wg0 autoconnect yes
  8. server-wg0 接続を再アクティブ化します。

    # nmcli connection up server-wg0

検証

  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

    出力で秘密鍵を表示するには、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

関連情報

  • man ページの wg(8)
  • nm-settings(5) の man ページの WireGuard setting セクション