6.6. 証明書ベースの認証を使用した IPsec メッシュ VPN の手動設定


IPsec メッシュは、すべてのサーバーが他のすべてのサーバーとセキュアに直接通信できる、完全に相互接続されたネットワークを形成するものです。これは、複数のデータセンターやクラウドプロバイダーにまたがる分散データベースクラスターや高可用性環境に最適です。各サーバーペア間に暗号化されたトンネルを直接確立することで、通信の集中によるボトルネックを避けつつ、セキュアな通信を実現できます。

認証のために、認証局 (CA) によって管理されるデジタル証明書を使用すると、非常にセキュアでスケーラブルなソリューションが実現します。メッシュ内のホストが、それぞれ信頼できる CA によって署名された証明書を提示します。この方法により、強力で検証可能な認証が実現し、ユーザー管理が簡素化されます。アクセス権の付与または失効は、CA で一元的に行うことができます。Libreswan は、各証明書を証明書失効リスト (CRL) と照合し、証明書がリストに掲載されていればアクセスを拒否することで、付与や失効を強制します。

前提条件

  • メッシュ内の各ピアに、次の内容を含む公開鍵暗号化標準 #12 (PKCS #12) ファイルが存在する。

    • サーバーの秘密鍵
    • サーバー証明書
    • CA 証明書
    • 中間証明書 (必要な場合)

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

  • サーバー証明書には次のフィールドを含めます。

    • Extended Key Usage (EKU) を TLS Web Server Authentication に設定します。
    • コモンネーム (CN) またはサブジェクト代替名 (SAN) を、ホストの完全修飾ドメイン名 (FQDN) に設定します。
    • X509v3 CRL 配布ポイントに、証明書失効リスト (CRL) への URL を含めます。

手順

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

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

      # dnf install libreswan
      Copy to Clipboard Toggle word wrap
    2. ネットワークセキュリティーサービス (NSS) データベースを初期化します。

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

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

    3. ipsec サービスを有効にして起動します。

      # systemctl enable --now ipsec
      Copy to Clipboard Toggle word wrap
    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
    
    server1                  u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

    この情報は設定ファイルに必要です。

  4. /etc/ipsec.d/ ディレクトリーに接続用の .conf ファイルを作成します。たとえば、次の設定で /etc/ipsec.d/mesh.conf ファイルを作成します。

    1. CRL チェックを有効にするために、config setup セクションを追加します。

      config setup
          crl-strict=yes
          crlcheckinterval=1h
      Copy to Clipboard Toggle word wrap

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

      crl-strict=yes
      CRL チェックを有効にします。NSS データベース内で CRL が利用できない場合、認証中のピアが拒否されます。
      crlcheckinterval=1h
      指定期間後に、サーバーの証明書に指定された URL から CRL を再取得します。
    2. メッシュ内のメンバー間のトラフィックを強制的に制御するセクションを追加します。

      conn <connection_name>
          # General setup and authentication type
          auto=ondemand
          authby=rsasig
      
          # Local settings settings
          left=%defaultroute
          leftid=%fromcert
          leftcert="<server_certificate_nickname>"
          leftrsasigkey=%cert
          leftsendcert=always
          failureshunt=drop
          type=transport
      
          # Settings related to other peers in the mesh
          right=%opportunisticgroup
          rightid=%fromcert
      Copy to Clipboard Toggle word wrap

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

      left=%defaultroute
      ipsec サービスの起動時に、デフォルトルートインターフェイスの IP アドレスを動的に設定します。left パラメーターは、ホストの IP アドレスまたは FQDN に設定することもできます。
      leftid=%fromcert および rightid=%fromcert
      証明書の識別名 (DN) フィールドからアイデンティティーを取得するように Libreswan を設定します。
      leftcert="<server_certificate_nickname>"
      NSS データベースで使用されるサーバーの証明書のニックネームを設定します。
      leftrsasigkey=%cert
      証明書に埋め込まれた RSA 公開鍵を使用するように Libreswan を設定します。
      leftsendcert=always
      ピアが CA 証明書に照らして証明書を検証できるように、ピアに証明書を常に送信するように指示します。
      failureshunt=drop
      暗号化を強制し、IPsec ネゴシエーションが失敗した場合はトラフィックを破棄します。これはメッシュのセキュリティーにとって重要です。
      right=%opportunisticgroup
      ポリシーファイルで定義されているリモートピアの動的グループに接続を適用することを指定します。これにより、Libreswan は、そのグループにリストされている各 IP またはサブネットに対して、必要に応じて IPsec トンネルをインスタンス化できるようになります。

    例で使用されているすべてのパラメーターの詳細は、システム上の ipsec.conf(5) man ページを参照してください。

  5. Classless Inter-Domain Routing (CIDR) 形式でピアまたはサブネットを指定する /etc/ipsec.d/policies/server-mesh ポリシーファイルを作成します。

    192.0.2.0/24
    198.51.100.0/24
    Copy to Clipboard Toggle word wrap

    これらの設定により、これらのサブネット内のホスト間トラフィックが ipsec サービスによって暗号化されます。ホストが IPsec メッシュのメンバーとして設定されていない場合、このホストとメッシュメンバー間の通信が失敗します。

  6. ipsec サービスを再起動します。

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap
  7. ポリシーファイルで指定したサブネット内のすべてのホストでこの手順を繰り返します。

検証

  1. メッシュ内のホストにトラフィックを送信してトンネルを確立します。たとえば、ホストに ping を実行します。

    # ping -c3 <peer_in_mesh>
    Copy to Clipboard Toggle word wrap
  2. IPsec ステータスを表示します。

    # ipsec status
    Copy to Clipboard Toggle word wrap

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

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

      #1: "<connection_name>#192.0.2.0/24"[1] ...192.0.2.2:500 ESTABLISHED_IKE_SA (established IKE SA); REKEY in 12822s; REPLACE in 13875s; newest; idle;
      Copy to Clipboard Toggle word wrap

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

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

      #2: "<connection_name>#192.0.2.0/24"[1] ...192.0.2.2:500 ESTABLISHED_CHILD_SA (established Child SA); REKEY in 13071s; REPLACE in 13875s; newest; eroute owner; IKE SA #1; idle;
      Copy to Clipboard Toggle word wrap

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

  3. サービスが CRL をロードし、エントリーを NSS データベースに追加したかどうかを確認します。

    # ipsec listcrls
    
    List of CRLs:
    
    issuer: CN=Example-CA
    revoked certs: 1
    updates: this Tue Jul 15 10:22:36 2025
             next Sun Jan 11 10:22:36 2026
    
    List of CRL fetch requests:
    
    Jul 15 15:13:56 2025, trials: 1
           issuer:  'CN=Example-CA'
           distPts: 'https://ca.example.com/crl.pem'
    Copy to Clipboard Toggle word wrap

次のステップ

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat