6.13. nmstatectl を使用して IPsec ベースの VPN 接続を設定する


IPsec VPN 接続を設定して、信頼できないネットワーク上に暗号化されたトンネルを確立し、転送中のデータの完全性を確保します。Nmstate を使用すると、宣言型の API を使用して IPsec VPN 接続を作成できます。

nmstatectl ユーティリティーを使用すると、Nmstate API を介して Libreswan IPsec VPN 接続を設定できます。nmstatectl ユーティリティーは、宣言型の Nmstate API を通じてホストネットワークを管理するためのコマンドラインツールです。ユーザーは複数の命令的なコマンドを実行してインターフェイスを設定するのではなく、YAML ファイルで目的の状態を定義します。Nmstate はこの定義を取得してシステムに適用します。このアプローチの主な利点は、アトミックな結果です。Nmstate は、最終的な設定を YAML 定義と正確に一致させます。設定の一部が適用に失敗した場合、すべての変更が自動的にロールバックされるため、システムで不適切なネットワーク状態や壊れたネットワーク状態が発生しません。

注記

NetworkManager-libreswan プラグインの設計上、nmstatectl は一方のピアでのみ使用できます。他方のピアでは Libreswan を手動で設定する必要があります。

6.13.1. nmstatectl を使用して raw RSA 鍵認証による IPsec ホスト間 VPN を設定する

宣言型の Nmstate API を使用すると、2 つのデバイス間でホスト間 VPN を設定して、セキュアでないネットワーク経由でセキュアに通信することができます。Nmstate を使用すると、結果が必ず設定ファイルと一致したものになります。一致しない場合は、変更がロールバックされます。

認証に関しては、RSA 鍵は事前共有鍵 (PSK) よりもセキュアです。非対称暗号化によって秘密情報共有のリスクが排除されるためです。また、RSA 鍵を使用すると、強力なピアツーピア認証を提供しつつも、認証局 (CA) が不要になるため、デプロイが容易になります。

注記

一般に、どちらのホストを left または right と呼ぶかは任意です。ただし、NetworkManager では、ローカルホストには常に left という用語を使用し、リモートホストには常に right という用語を使用します。

前提条件

  • リモート側のピアは Libreswan IPsec を実行しており、ホスト間 接続の準備ができています。

    NetworkManager-libreswan プラグインの設計上、Nmstate は、同じ接続にこのプラグインを使用する他のピアと通信することはできません。

手順

  1. Libreswan がまだインストールされていない場合は、次の手順を実行します。

    1. 必要なパッケージをインストールします。

      # dnf install nmstate libreswan NetworkManager-libreswan
    2. NetworkManager サービスを再起動します。

      # systemctl restart NetworkManager
    3. ネットワークセキュリティーサービス (NSS) データベースを初期化します。

      # ipsec initnss

      このコマンドにより、/var/lib/ipsec/nss/ ディレクトリーにデータベースが作成されます。

    4. ファイアウォールで IPsec ポートとプロトコルを開きます。

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
  2. RSA 鍵ペアを作成します。

    # ipsec newhostkey

    ipsec ユーティリティーにより、鍵ペアが NSS データベースに保存されます。

  3. left と right 両方のピアの Certificate Key Attribute ID (CKAID) を表示します。

    # ipsec showhostkey --list
    < 1> RSA keyid: <key_id> ckaid: <ckaid>

    以降のステップで、両方のピアの CKAID が必要になります。

  4. 公開鍵を表示します。

    1. left ピアで次のように入力します。

      # ipsec showhostkey --left --ckaid <ckaid_of_left_peer>
              # rsakey AwEAAdKCx
              leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...
    2. right ピアで次のように入力します。

      # ipsec showhostkey --right --ckaid <ckaid_of_right_peer>
              # rsakey AwEAAcNWC
              rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...

    これらのコマンドにより、設定ファイルで使用する必要がある対応するパラメーターとともに、公開鍵が表示されます。

  5. 次の内容を含む YAML ファイル (例: ~/ipsec-host-to-host-rsa-auth.yml) を作成します。

    ---
    interfaces:
    - name: '<connection_name>'
      type: ipsec
      libreswan:
        ikev2: insist
    
        left: <ip_address_or_fqdn_of_left_peer>
        leftid: peer_b
        leftrsasigkey: <public_key_of_left_peer>
        leftmodecfgclient: false
    
        right: <ip_address_or_fqdn_of_right_peer>
        rightid: peer_a
        rightrsasigkey: <public_key_of_right_peer>
        rightsubnet: <ip_address_of_right_peer>/32

    この例で指定されている設定は次のとおりです。

    ikev2: insist
    最新の IKEv2 プロトコルを、IKEv1 へのフォールバックなしで、唯一許可されるプロトコルとして定義します。この設定は、Nmstate を使用したホスト間設定では必須です。
    left=<ip_address_or_fqdn_of_left_peer> および right=<ip_address_or_fqdn_of_right_peer>
    ピアの IP アドレスまたは DNS 名を定義します。
    leftid=<id> および rightid=<id>
    Internet Key Exchange (IKE) ネゴシエーションプロセス中に各ピアを識別する方法を定義します。これには IP アドレスまたはリテラル文字列を指定できます。NetworkManager は、IP アドレス以外のすべての値をリテラル文字列として解釈し、内部的に先頭に @ 記号を追加することに注意してください。そのため、Libreswan ピアも ID としてリテラル文字列を使用する必要があります。そうしないと、認証が失敗します。
    leftrsasigkey=<public_key> および rightrsasigkey=<public_key>
    ピアの公開鍵を指定します。前のステップで ipsec showhostkey コマンドによって表示された値を使用します。
    leftmodecfgclient: false
    このホストで動的設定を無効にします。この設定は、Nmstate を使用したホスト間設定では必須です。
    rightsubnet: <ip_address_of_right_peer>/32
    ホストがこのピアにのみアクセスできるように定義します。この設定は、Nmstate を使用したホスト間設定では必須です。
  6. 設定をシステムに適用します。

    # nmstatectl apply ~/ipsec-host-to-host-rsa-auth.yml

検証

  • IPsec ステータスを表示します。

    # ipsec status

    接続が正常に確立されていれば、出力に次の行が含まれています。

    • Internet Key Exchange バージョン 2 (IKEv2) ネゴシエーションのフェーズ 1 が正常に完了しています。

      000 #1: "<connection_name>":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); REKEY in 27935s; REPLACE in 28610s; newest; idle;

      これで、セキュリティーアソシエーション (SA) が、実際のデータ暗号化トンネル (子 SA またはフェーズ 2 SA と呼ばれる) をネゴシエートする準備が整いました。

    • 子 SA が確立されています。

      000 #2: "<connection_name>":500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); REKEY in 27671s; REPLACE in 28610s; IKE SA #1; idle;

      これは、データトラフィックが通過する実際のトンネルです。

トラブルシューティング

  • NetworkManager が Libreswan に渡す実際の設定を表示するには、次のように入力します。

    # nmcli connection export <connection_name>

    この出力は、リモートホスト上の Libreswan 設定と比較する際に、ID や鍵などの設定の違いを特定するのに役立ちます。

次のステップ

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る