6.5. 証明書ベースの認証を使用した IPsec ホスト/サイト間 VPN の手動設定


ホスト/サイト間 VPN は、個々のリモートコンピューターとプライベートネットワークの間にセキュアで暗号化された接続を確立し、インターネットなどのセキュアでないパブリックネットワークを介してそれらをシームレスにリンクできるようにします。これは、物理的にオフィスにいるかのように、自分のコンピューターから会社の内部ネットワーク上のリソースにアクセスする必要があるリモート従業員に最適です。

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

6.5.1. IPsec ゲートウェイの手動設定

セキュアなリモートアクセスを可能にするには、Libreswan IPsec ゲートウェイを適切に設定する必要があります。Libreswan は、ネットワークセキュリティーサービス (NSS) データベースからサーバー証明書、秘密鍵、および CA 証明書を読み取ります。

次の例では、認証されたクライアントが内部 192.0.2.0/24 サブネットにアクセスすることを許可し、仮想 IP プールから各クライアントに IP アドレスを動的に割り当てます。セキュリティーを維持するために、ゲートウェイはクライアント証明書が同じ信頼できる CA によって発行されていることを確認し、失効した証明書へのアクセスが拒否されるように、証明書失効リスト (CRL) を自動的に使用します。

前提条件

  • ゲートウェイに、次の内容を含む公開鍵暗号化標準 #12 (PKCS #12) ファイル ~/file.p12 が存在する。

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

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

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

    • Extended Key Usage (EKU) を TLS Web Server Authentication に設定します。
    • コモンネーム (CN) またはサブジェクト代替名 (SAN) を、ゲートウェイの完全修飾ドメイン名 (FQDN) に設定します。
    • X509v3 CRL 配布ポイントに、証明書失効リスト (CRL) への URL を含めます。
  • VPN クライアントトラフィックの戻りのルートが、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. 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
    
    vpn-gateway              u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

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

  4. /etc/ipsec.d/ ディレクトリーに接続用の .conf ファイルを作成します。たとえば、次の設定で /etc/ipsec.d/host-to-site.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=start
          ikev2=insist
          authby=rsasig
      
          # VPN gateway settings
          left=%defaultroute
          leftid=%fromcert
          leftcert="<server_certificate_nickname>"
          leftrsasigkey=%cert
          leftsendcert=always
          leftsubnet=192.0.2.0/24
          rekey=no
          mobike=yes
          narrowing=yes
      
          # Client-related settings
          right=%any
          rightid=%fromcert
          rightrsasigkey=%cert
          rightaddresspool=198.51.100.129-198.51.100.254
          rightmodecfgclient=yes
          modecfgclient=yes
          modecfgdns=192.0.2.5
          modecfgdomains="example.com"
      
          # Dead Peer Detection
          dpddelay=30
          dpdtimeout=120
          dpdaction=clear
      Copy to Clipboard Toggle word wrap

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

      ikev2=insist
      最新の IKEv2 プロトコルを、IKEv1 へのフォールバックなしで、唯一許可されるプロトコルとして定義します。
      left=%defaultroute
      ipsec サービスの起動時に、デフォルトルートインターフェイスの IP アドレスを動的に設定します。left パラメーターは、ホストの IP アドレスまたは FQDN に設定することもできます。
      leftid=%fromcert および rightid=%fromcert
      証明書の識別名 (DN) フィールドからアイデンティティーを取得するように Libreswan を設定します。
      leftcert="<server_certificate_nickname>"
      NSS データベースで使用されるサーバーの証明書のニックネームを設定します。
      leftrsasigkey=%cert および rightrsasigkey=%cert
      証明書に埋め込まれた RSA 公開鍵を使用するように Libreswan を設定します。
      leftsendcert=always
      クライアントが CA 証明書に照らして証明書を検証できるように、ゲートウェイに証明書を常に送信するように指示します。
      leftsubnet=<subnets>
      クライアントがトンネル経由でアクセスできるゲートウェイに接続されているサブネットを指定します。
      mobike=yes
      クライアントがネットワーク間をシームレスにローミングできるようにします。
      rightaddresspool=<ip_range>
      ゲートウェイがクライアントに IP アドレスを割り当てることができる範囲を指定します。
      modecfgclient=yes
      クライアントが modecfgdns パラメーターで設定された DNS サーバー IP と modecfgdomains で設定された DNS 検索ドメインを受信できるようにします。

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

  5. パケット転送を有効にします。

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

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap

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

検証

  1. クライアントを設定し、VPN ゲートウェイに接続します
  2. サービスが 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

次のステップ:

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

リモートのプライベートネットワーク上のリソースにアクセスするには、ユーザーはまず IPsec VPN 接続を設定する必要があります。GNOME Settings アプリケーションは、NetworkManager で IPsec VPN 接続プロファイルを作成し、トンネルを確立するためのグラフィカルなソリューションです。

前提条件

  • IPsec VPN ゲートウェイが設定されている
  • NetworkManager-libreswan-gnome パッケージがインストールされている。
  • クライアントに、次の内容を含む PKCS #12 ファイル ~/file.p12 が存在する。

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

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

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

手順

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

    # ipsec initnss
    Copy to Clipboard Toggle word wrap

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

  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

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

  4. Super キーを押して Settings と入力し、Enter キーを押して GNOME Settings アプリケーションを開きます。
  5. VPN エントリーの横にある + ボタンをクリックします。
  6. リストから IPsec based VPN を選択します。
  7. Identity タブで、次のようにフィールドに入力します。

    Expand
    表6.1 Identity タブの設定
    フィールド名ipsec.conf の対応するパラメーター

    Name

    <networkmanager_profile_name>

    該当なし

    Gateway

    <ip_address_or_fqdn_of_the_gateway>

    right

    Type

    IKEv2 (certificate)

    authby

    Group name

    %fromcert

    leftid

    Certificate name

    <user_certificate_nickname>

    leftcert

    Remote ID

    %fromcert

    rightid

  8. Advanced をクリックします。
  9. Advanced properties ウィンドウで、Connectivity タブのフィールドに次のように入力します。

    Expand
    表6.2 Connectivity タブの設定
    フィールド名ipsec.conf の対応するパラメーター

    Remote Network

    192.0.2.0/24

    rightsubnet

    Narrowing

    選択済み

    narrowing

    Enable MOBIKE

    yes

    mobike

    Delay

    30

    dpddelay

    Timeout

    120

    dpdtimeout

    Action

    Clear

    dpdaction

  10. Apply をクリックして接続設定に戻ります。
  11. Apply をクリックして接続を保存します。
  12. Settings アプリケーションの Network タブで、VPN プロファイルの横にあるスイッチを切り替えて接続を有効にします。

検証

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

次のステップ

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat