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


仮想プライベートネットワーク (VPN) を使用すると、インターネットなどの信頼できないネットワーク上で、セキュアで暗号化されたトンネルを確立できます。このようなトンネルにより、転送中のデータの機密性と整合性が確保されます。一般的なユースケースとしては、支社と本社を接続することなどが挙げられます。

nmstatectl ユーティリティーを使用して、Nmstate API を介して Libreswan IPsec VPN 接続を設定できます。nmstatectl ユーティリティーは、宣言型 Nmstate API を介してホストネットワークを管理するコマンドラインツールです。複数の命令的なコマンドを実行してインターフェイスを設定する代わりに、YAML ファイルで予想される状態を定義します。nmstate はこの定義を取り、システムに適用します。このアプローチの主な利点は、アトミックな結果です。nmstate は、作成される設定が YAML 定義と正確に一致することを確認します。設定の一部の適用に失敗した場合は、すべての変更を自動的にロールバックし、システムが誤ったネットワーク状態や破損の状態に入るのを防ぎます。

注記

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

6.18.1. nmstatectlを使用した raw RSA 鍵認証を使用した IPsec ホスト間 VPN の設定

ホスト間 VPN は、2 つのデバイス間で直接、安全で暗号化された接続を確立し、アプリケーションはインターネットなどの安全でないネットワーク上で安全に通信できるようにします。

認証の場合、非対称暗号化により共有秘密のリスクが排除されるため、RSA キーは事前共有鍵(PSK)よりも安全です。また、RSA キーを使用すると、強力なピアツーピア認証を提供しながら、認証局(CA)の必要がなくなるため、デプロイメントが簡素化されます。

Nmstate API を使用して、既存の Libreswan IPsec ホストとの接続を設定できます。この場合、Nmstate は、生成される設定が YAML ファイルの定義と一致することを確認するか、変更を自動的にロールバックしてシステムの誤った状態を回避します。Nmstate は状態のみを検証し、間違った設定に対して保護されないことに注意してください。

注記

通常、left という名前が付けられ、right を選択する方法は任意です。ただし、NetworkManager は常に ローカルホスト に left という用語を使用し、リモートホストには という用語を使用します。

前提条件

  • リモートピアは Libreswan IPsec を実行し、ホスト間接続に準備さ れます。

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

手順

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

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

      # dnf install nmstate libreswan NetworkManager-libreswan
      Copy to Clipboard Toggle word wrap
    2. NetworkManager サービスを再起動します。

      # systemctl restart NetworkManager
      Copy to Clipboard Toggle word wrap
    3. Network Security Services (NSS)データベースを初期化します。

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

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

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

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
      Copy to Clipboard Toggle word wrap
  2. RSA キーペアを作成します。

    # ipsec newhostkey
    Copy to Clipboard Toggle word wrap

    ipsec ユーティリティーは、キーペアを NSS データベースに保存します。

  3. 左側のピアと右のピアの両方に証明書キー属性 ID (CKAID)を表示します。

    # ipsec showhostkey --list
    < 1> RSA keyid: <key_id> ckaid: <ckaid>
    Copy to Clipboard Toggle word wrap

    次の手順では、両方のピアの CKAID が必要です。

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

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

      # ipsec showhostkey --left --ckaid <ckaid_of_left_peer>
              # rsakey AwEAAdKCx
              leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...
      Copy to Clipboard Toggle word wrap
    2. 正しいピアで、次のように入力します。

      # ipsec showhostkey --right --ckaid <ckaid_of_right_peer>
              # rsakey AwEAAcNWC
              rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...
      Copy to Clipboard Toggle word wrap

    コマンドは、公開鍵を、設定ファイルで使用する必要がある対応するパラメーターとともに表示します。

  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
    Copy to Clipboard Toggle word wrap

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

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

    # nmstatectl apply ~/ipsec-host-to-host-rsa-auth.yml
    Copy to Clipboard Toggle word wrap

検証

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

    # ipsec status
    Copy to Clipboard Toggle word wrap

    接続が正常に確立された場合、出力には以下のような行が含まれます。

    • インターネット鍵交換バージョン 2 (IKEv2)ネゴシエーションのフェーズ 1 が正常に完了しています。

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

      セキュリティー関連付け(SA)は、子 SAs または Phase 2 SAs として知られる実際のデータ暗号化トンネルをネゴシエートできるようになりました。

    • 子 SA が確立されました。

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

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

トラブルシューティング

  • NetworkManager が Libreswan に渡す実際の設定を表示するには、次のコマンドを実行します。

    # nmcli connection export <connection_name>
    Copy to Clipboard Toggle word wrap

    この出力では、リモートホストの Libreswan 設定と比較すると、ID やキーなどの開発設定を特定することができます。

次のステップ

6.18.2. nmstatectlを使用した raw RSA 鍵認証を使用した IPsec サイト間 VPN の設定

サイト間 VPN は、2 つの異なるネットワーク間で安全で暗号化されたトンネルを確立し、インターネットなどの安全でないパブリックネットワーク全体でシームレスにリンクします。たとえば、これにより、分岐オフィスのデバイスは、同じローカルネットワークのすべての一部であるかのように、企業ヘッドクツーのリソースにアクセスできるようになります。

ゲートウェイデバイスを認証する場合、非対称暗号化により共有秘密のリスクが排除されるため、RSA 鍵は事前共有鍵(PSK)よりも安全です。また、RSA キーを使用すると、強力なピアツーピア認証を提供しながら、認証局(CA)の必要がなくなるため、デプロイメントが簡素化されます。

Nmstate API を使用して、既存の Libreswan IPsec ゲートウェイで接続を設定できます。この場合、Nmstate は、生成される設定が YAML ファイルの定義と一致することを確認するか、変更を自動的にロールバックしてシステムの誤った状態を回避します。Nmstate は状態のみを検証し、間違った設定に対して保護されないことに注意してください。

注記

通常、left という名前で right の名前は任意になります。ただし、NetworkManager は常に ローカルホスト に left という用語を使用し、リモートホストには という用語を使用します。

前提条件

  • リモートゲートウェイは Libreswan IPsec を実行し、サイト間接続に準備さ れます。

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

手順

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

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

      # dnf install nmstate libreswan NetworkManager-libreswan
      Copy to Clipboard Toggle word wrap
    2. NetworkManager サービスを再起動します。

      # systemctl restart NetworkManager
      Copy to Clipboard Toggle word wrap
    3. Network Security Services (NSS)データベースを初期化します。

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

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

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

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
      Copy to Clipboard Toggle word wrap
  2. RSA キーペアを作成します。

    # ipsec newhostkey
    Copy to Clipboard Toggle word wrap

    ipsec ユーティリティーは、キーペアを NSS データベースに保存します。

  3. 左側のピアと右のピアの両方に Certificate Key Attribute ID (CKAID)を表示します。

    # ipsec showhostkey --list
    < 1> RSA keyid: <key_id> ckaid: <ckaid>
    Copy to Clipboard Toggle word wrap

    以下の手順で、両方のピアの CKAID が必要です。

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

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

      # ipsec showhostkey --left --ckaid <ckaid_of_left_peer>
              # rsakey AwEAAdKCx
              leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...
      Copy to Clipboard Toggle word wrap
    2. 正しいピアで、次のように入力します。

      # ipsec showhostkey --right --ckaid <ckaid_of_right_peer>
              # rsakey AwEAAcNWC
              rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...
      Copy to Clipboard Toggle word wrap

    コマンドは、公開鍵を、設定ファイルで使用する必要がある対応するパラメーターとともに表示します。

  5. 以下の内容を含む YAML ファイルを作成します(例: ~/ipsec-site-to-site-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
        leftsubnet: 198.51.100.0/24
    
        right: <ip_address_or_fqdn_of_right_peer>
        rightid: peer_a
        rightrsasigkey: <public_key_of_right_peer>
        rightsubnet: 192.0.2.0/24
    Copy to Clipboard Toggle word wrap

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

    ikev2: insist
    最新の IKEv2 プロトコルを IKEv1 へのフォールバックなしで許可されるプロトコルとして定義します。この設定は、Nmstate のサイト間設定では必須です。
    left= &lt;ip_address_or_fqdn_of_left_peer > および right= <ip_address_or_fqdn_of_right_peer>
    ピアの IP アドレスまたは DNS 名を定義します。
    leftid= &lt;id> and rightid= <id>
    インターネット鍵交換(IKE)ネゴシエーションプロセス中に各ピアを識別する方法を定義します。IP アドレスまたはリテラル文字列を指定できます。NetworkManager は、IP アドレス以外のすべての値をリテラル文字列として解釈し、内部的に先頭の @ 記号を追加することに注意してください。これには、Libreswan ピアが ID または認証の失敗としてリテラル文字列も使用する必要があります。
    leftrsasigkey= &lt;public_key> および rightrsasigkey= &lt;public_key>
    ピアの公開鍵を指定します。直前の手順で ipsec showhostkey コマンドで表示される値を使用します。
    leftmodecfgclient: false
    このホストでの動的設定を無効にします。この設定は、Nmstate のサイト間設定では必須です。
    leftsubnet= &lt;subnet> and rightsubnet= <subnet>
    トンネルを介して接続するドメイン間ルーティング(CIDR)形式でサブネットを定義します。
  6. パケット転送を有効にします。

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
    Copy to Clipboard Toggle word wrap
  7. 設定をシステムに適用します。

    # nmstatectl apply ~/ipsec-site-to-site-rsa-auth.yml
    Copy to Clipboard Toggle word wrap

検証

  1. IPsec のステータスを表示します。

    # ipsec status
    Copy to Clipboard Toggle word wrap

    接続が正常に確立された場合、出力には以下のような行が含まれます。

    • インターネット鍵交換バージョン 2 (IKEv2)ネゴシエーションのフェーズ 1 が正常に完了しています。

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

      セキュリティー関連付け(SA)は、子 SAs または Phase 2 SAs として知られる実際のデータ暗号化トンネルをネゴシエートできるようになりました。

    • 子 SA が確立されました。

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

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

  2. ローカルサブネットのクライアントから、リモートサブネットのクライアントに ping 送信を行います。

トラブルシューティング

  • NetworkManager が Libreswan に渡す実際の設定を表示するには、次のコマンドを実行します。

    # nmcli connection export <connection_name>
    Copy to Clipboard Toggle word wrap

    この出力では、リモートホストの Libreswan 設定と比較すると、ID やキーなどの開発設定を特定することができます。

次のステップ

6.18.3. nmstatectlを使用して IPsec VPN ゲートウェイに接続するようにクライアントを設定する

リモートプライベート ネットワーク上のリソースにアクセスするには、まず IPsec VPN 接続を設定する必要があります。Nmstate API を使用して、既存の Libreswan IPsec ゲートウェイで接続を設定できます。この場合、Nmstate は、生成される設定が YAML ファイルの定義と一致することを確認するか、変更を自動的にロールバックしてシステムの誤った状態を回避します。Nmstate は状態のみを検証し、間違った設定に対して保護されないことに注意してください。

注記

通常、left という名前が付けられ、right を選択する方法は任意です。ただし、NetworkManager は常に ローカルホスト に left という用語を使用し、リモートホストには という用語を使用します。

前提条件

  • リモートゲートウェイは Libreswan IPsec を実行し、証明書ベースの認証 を使用したホスト 間接続に準備されます。

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

  • PKCS#12 ファイル ~/file.p12 は、以下の内容を含むクライアントに存在します。

    • ユーザーの秘密鍵。
    • ユーザー証明書
    • CA 証明書
    • 中間証明書 (必要な場合)

    秘密鍵および証明書署名要求 (CSR) の作成や、CA からの証明書要求に関する詳細は、CA のドキュメントを参照してください。

  • 証明書の Extended Key Usage (EKU)が TLS Web Client Authentication に設定されます。

手順

  1. Libreswan がインストールされていない場合は、以下を行います。

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

      # dnf install nmstate libreswan NetworkManager-libreswan
      Copy to Clipboard Toggle word wrap
    2. NetworkManager サービスを再起動します。

      # systemctl restart NetworkManager
      Copy to Clipboard Toggle word wrap
    3. Network Security Services (NSS)データベースを初期化します。

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

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

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

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
      Copy to Clipboard Toggle word wrap
  2. PKCS #12 ファイルを NSS データベースにインポートします。

    # ipsec import ~/file.p12
    Enter password for PKCS12 file: <password>
    pk12util: PKCS12 IMPORT SUCCESSFUL
    correcting trust bits for Example-CA
    Copy to Clipboard Toggle word wrap
  3. ユーザーおよび CA 証明書のニックネームを表示します。

    # certutil -L -d /var/lib/ipsec/nss/
    Certificate Nickname     Trust Attributes
                             SSL,S/MIME,JAR/XPI
    
    user                     u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

    この情報は Nmstate YAML ファイルで必要になります。

  4. 以下の内容を含む YAML ファイル(例: ~/ipsec-host-to-site-cert-auth.yml )を作成します。

    ---
    interfaces:
    - name: '<connection_name>'
      type: ipsec
      libreswan:
        ikev2: insist
    
        left: <ip_address_or_fqdn_of_left_peer>
        leftid: '%fromcert'
        leftcert: <user_certificate_nickname>
    
        right: <ip_address_or_fqdn_of_right_peer>
        rightid: '%fromcert'
        rightsubnet: 192.0.2.0/24
    Copy to Clipboard Toggle word wrap

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

    ikev2: insist
    最新の IKEv2 プロトコルを IKEv1 へのフォールバックなしで許可されるプロトコルとして定義します。この設定は、Nmstate のホスト間設定では必須です。
    left= &lt;ip_address_or_fqdn_of_left_peer > および right= <ip_address_or_fqdn_of_right_peer>
    ピアの IP アドレスまたは DNS 名を定義します。
    leftid=%fromcert and rightid=%fromcert
    証明書の識別名(DN)フィールドからアイデンティティーを取得するように Libreswan を設定します。
    leftcert=" &lt;server_certificate_nickname>"
    NSS データベースで使用されるサーバーの証明書のニックネームを設定します。
    rightsubnet: < subnet>
    ゲートウェイに接続されたドメイン間ルーティング(CIDR)形式でサブネットを定義します。
  5. 設定をシステムに適用します。

    # nmstatectl apply ~/ipsec-host-to-site-cert-auth.yml
    Copy to Clipboard Toggle word wrap

検証

  • リモートネットワークでホストへの接続を確立するか、ping します。

トラブルシューティング

  • NetworkManager が Libreswan に渡す実際の設定を表示するには、次のコマンドを実行します。

    # nmcli connection export <connection_name>
    Copy to Clipboard Toggle word wrap

    この出力では、リモートホストの Libreswan 設定と比較すると、ID やキーなどの開発設定を特定することができます。

次のステップ

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat