8.13. nm-connection-editor を使用した WireGuard クライアントの設定

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

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • クライアントの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • サーバーの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. ターミナルを開き、次のコマンドを入力します。

    # nm-connection-editor
  2. + ボタンをクリックして、新しいコネクションを追加します。
  3. WireGuard の接続の種類を選択し、作成 をクリックします。
  4. オプション: 接続名を更新します。
  5. オプション: General タブで、Connect automatically with priority を選択します。
  6. WireGuard タブで、以下を行います。

    1. NetworkManager が接続に割り当てる仮想インターフェイス (wg0 など) の名前を入力します。
    2. クライアントの秘密鍵を入力します。
    3. 追加 を選択して、ピアを追加します。

      1. サーバーの公開鍵を入力します。
      2. Allowed IPs フィールドを設定します。たとえば、次のように設定します。

        • サーバーのみがこのクライアントと通信できるようにするサーバーのトンネル IP アドレス。
        • リモートの IPv4 アドレスおよび IPv6 アドレスが、このクライアントと通信できるように許可する 0.0.0.0/0;::/0;この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。

          すべてのトラフィックをトンネル経由でルーティングすると、サーバーのルーティングとファイアウォールの設定によっては他のホストへの接続に影響が及ぶ可能性があることに注意してください。

      3. Endpoint フィールドに、WireGuard サーバーのホスト名または IP アドレスとポートを入力します。hostname_or_IP:port_number の形式を使用します。
      4. オプション: ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用するか、しばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、永続的なキープアライブの間隔を秒単位で設定します。この間隔で、クライアントは、キープアライブパケットをサーバーに送信します。
      5. Apply をクリックします。
  7. IPv4 Settings タブで、以下を行います。

    1. Method リストで Manual を選択します。
    2. 追加 を選択して、トンネルの IPv4 アドレスとサブネットマスクを入力します。
    3. すべてのトラフィックをトンネル経由でルーティングする場合は、サーバーのトンネル IPv4 アドレスを Gateway フィールドに設定します。それ以外の場合は、フィールドを空のままにします。

      すべての IPv4 トラフィックをトンネル経由でルーティングするには、このクライアントの Allowed IPs フィールドに 0.0.0.0/0 を含める必要があります。

  8. IPv6 Settings タブで、以下を行います。

    1. Method リストで Manual を選択します。
    2. 追加 を選択して、トンネル IPv6 アドレスとサブネットマスクを入力します。
    3. すべてのトラフィックをトンネル経由でルーティングする場合は、Gateway フィールドに、サーバーのトンネル IPv6 アドレスを設定します。それ以外の場合は、フィールドを空のままにします。

      すべての IPv4 トラフィックをトンネル経由でルーティングするには、このクライアントの Allowed IPs フィールドに ::/0 を含める必要があります。

  9. 保存 を選択して、接続プロファイルを保存します。

検証

  1. サーバーの IP アドレスの ping を実行します。

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. wg0 デバイスのインターフェイス設定を表示します。

    # wg show wg0
    interface: wg0
      public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      private key: (hidden)
      listening port: 51820
    
    peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      endpoint: server.example.com:51820
      allowed ips: 192.0.2.1/32, 2001:db8:1::1/128
      latest handshake: 1 minute, 41 seconds ago
      transfer: 824 B received, 1.01 KiB sent
      persistent keepalive: every 20 seconds

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

    VPN トンネルを介してトラフィックを送信している場合は、latest handshake エントリーと transfer エントリーのみが含まれることに注意してください。

  3. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::2/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)