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


サイト間 VPN は、2 つの異なるネットワーク間にセキュアな暗号化トンネルを確立し、インターネットなどのセキュアでないパブリックネットワークを介してそれらをシームレスにリンクします。たとえば、これにより、支社のデバイスがすべて同じローカルネットワークの一部であるかのように、企業本社のリソースにアクセスできるようになります。

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

両方のゲートウェイデバイスで次の手順を実行してください。

前提条件

  • 両方のネットワークのルートにより、リモートネットワークへのトラフィックがローカル VPN ゲートウェイデバイスを介して送信されるようになっている。

手順

  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. RSA 鍵ペアを作成します。

    # ipsec newhostkey
    Copy to Clipboard Toggle word wrap

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

  3. ピアを指定します。IPsec トンネルでは、一方のホストを left に、もう一方のホストを right に指定する必要があります。これは任意に選択できます。一般的には、ローカルホストを left、リモートホストを right と呼びます。
  4. left と right 両方のピアの Certificate Key Attribute ID (CKAID) を表示します。

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

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

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

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

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

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

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

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

    conn <connection_name>
        # General setup and authentication type
        auto=start
        authby=rsasig
    
        # Site A
        left=<ip_address_or_fqdn_of_left_peer>
        leftid=@site_a
        leftrsasigkey=<public_key_of_left_peer>
        leftsubnet=192.0.2.0/24
    
        # Site B
        right=<ip_address_or_fqdn_of_right_peer>
        rightid=@site_b
        rightrsasigkey=<public_key_of_right_peer>
        rightsubnet={198.51.100.0/24, 203.0.113.0/24}
    Copy to Clipboard Toggle word wrap
    注記

    両方のゲートウェイデバイスで同じ設定ファイルを使用できます。Libreswan は内部情報を使用して、自身が left ホストで動作しているか、right ホストで動作しているかを識別します。ただし、left* パラメーターのすべての値が一方のピアに属し、right* パラメーターの値がもう一方のピアに属することが重要です。

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

    conn <connection_name>
    接続名を定義します。名前は任意であり、Libreswan はこれを使用して接続を識別します。この接続のパラメーターは、少なくとも 1 つのスペースまたはタブでインデントする必要があります。
    auto=<type>
    接続の開始方法を制御します。値を start に設定すると、Libreswan はサービスの起動時に自動的に接続をアクティブ化します。
    authby=rsasig
    この接続に対して RSA 署名認証を有効にします。
    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) ネゴシエーションプロセス中に各ピアを識別する方法を定義します。これには、完全修飾ドメイン名 (FQDN)、IP アドレス、またはリテラル文字列を使用できます。後者の場合、文字列の前に @ 記号を付けます。
    leftrsasigkey=<public_key> および rightrsasigkey=<public_key>
    ピアの公開鍵を指定します。前のステップで ipsec showhostkey コマンドによって表示された値を使用します。
    leftsubnet=<subnet> および rightsubnet=<subnet>
    トンネルを介して接続されるサブネットを Classless Inter-Domain Routing (CIDR) 形式で定義します。片側で複数のサブネットをトンネリングする場合は、それらを中括弧で囲み、コンマで区切って指定します。
  7. パケット転送を有効にします。

    # 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
  8. ipsec サービスを再起動します。

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap

    設定ファイルで auto=start を使用すると、接続が自動的にアクティブになります。他の方法の場合、接続をアクティブ化するために追加の手順が必要です。詳細は、システム上の ipsec.conf(5) man ページを参照してください。

検証

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

    # ipsec status
    Copy to Clipboard Toggle word wrap

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

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

      #2: "<connection_name>":500 ESTABLISHED_IKE_SA (established IKE SA); REKEY in 28523s; REPLACE in 28793s; newest; idle;
      Copy to Clipboard Toggle word wrap

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

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

      #3: "<connection_name>":500 ESTABLISHED_CHILD_SA (established Child SA); REKEY in 28523s; REPLACE in 28793s; newest; eroute owner; IKE SA #2; idle;
      Copy to Clipboard Toggle word wrap

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

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

次のステップ

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat