Menu Close

Red Hat Training

A Red Hat training course is available for RHEL 8

第5章 RHEL VPNシステムロールを使用したIPsecとのVPN接続の構成

VPNシステムロールを使用すると、Red Hat Ansible Automation Platformを使用してRHELシステムでVPN接続を構成できます。これを使用して、ホスト間、ネットワーク間、VPNリモートアクセスサーバー、およびメッシュ構成をセットアップできます。

ホスト間接続の場合、ロールは、必要に応じてキーを生成するなど、デフォルトのパラメーターを使用して、vpn_connectionsのリスト内のホストの各ペア間にVPNトンネルを設定します。または、リストされているすべてのホスト間に日和見メッシュ構成を作成するように構成することもできます。この役割は、hostsの下にあるホストの名前がAnsibleインベントリで使用されているホストの名前と同じであり、それらの名前を使用してトンネルを構成できることを前提としています。

注記

VPN RHELシステムロールは現在、VPNプロバイダーとしてIPsec実装であるLibreswanのみをサポートしています。

5.1. VPNシステムロールを使用してIPsecでホスト間VPNの作成

VPNシステムロールを使用して、コントロールノードでAnsible Playbookを実行することにより、ホスト間接続を構成できます。これにより、インベントリファイルにリストされているすべての管理対象ノードが構成されます。

前提条件

  • 1 つ以上の 管理対象ノード (VPN システムロールで設定するシステム) へのアクセスおよびパーミッション。
  • コントロールノード (このシステムから Red Hat Ansible Engine は他のシステムを設定) へのアクセスおよびパーミッション。

    コントロールノードでは、

    • Red Hat Ansible Engine がインストールされている。
    • rhel-system-roles パッケージがインストールされている。
    • 管理対象ノードが記載されているインベントリーファイルがある。

手順

  1. 以下の内容を含む新しい playbook.yml ファイルを作成します。

    - name: Host to host VPN
      hosts: managed_node1, managed_node2
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - hosts:
              managed_node1:
              managed_node2:

    このPlaybookは、システムロールによって自動生成されたキーを使用した事前共有キー認証を使用して、managed_node1からmanaged_node2への接続を設定します。

  2. 必要に応じて、ホストのvpn_connectionsリストに次のセクションを追加して、管理対象ホストから、インベントリファイルに記述されていない外部ホストへの接続を設定します。

        vpn_connections:
          - hosts:
              managed_node1:
              managed_node2:
              external_node:
                hostname: 192.0.2.2

    これは、追加の接続(managed_node1からexternal_node)へと(managed_node2からexternal_node)を設定します。

注記

接続は管理対象ノードでのみ設定され、外部ノードでは設定されません。

  1. 必要に応じて、vpn_connections内の追加セクション(コントロールプレーンやデータプレーンなど)を使用して、管理対象ノードに複数のVPN接続を指定できます。

    - name: Multiple VPN
      hosts: managed_node1, managed_node2
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - name: control_plane_vpn
            hosts:
              managed_node1:
                hostname: 192.0.2.0 # IP for the control plane
              managed_node2:
                hostname: 192.0.2.1
          - name: data_plane_vpn
            hosts:
              managed_node1:
                hostname: 10.0.0.1 # IP for the data plane
              managed_node2:
                hostname: 10.0.0.2
  2. 必要に応じて、設定に合わせて変数を変更できます。詳細は、/usr/share/doc/rhel-system-roles/vpn/README.mdファイルを参照してください。
  3. オプション: Playbook の構文を確認します。

    # ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
  4. インベントリーファイルで Playbook を実行します。

    # ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml

検証

  1. 管理対象ノードで、接続が正常にロードされていることを確認します。

    # ipsec status | grep connection.name

    connection.nameを、このノードからの接続の名前(たとえば、managed_node1-to-managed_node2)に置き換えます。

注記

デフォルトでは、ロールは、各システムの観点から作成する接続ごとにわかりやすい名前を生成します。たとえば、managed_node1managed_node2との間の接続を作成するときに、managed_node1上のこの接続のわかりやすい名前はmanaged_node1-to-managed_node2ですが、managed_node2 では、この接続の名前はmanaged_node2-to-managed_node1となります。

  1. 管理対象ノードで、接続が正常に開始されたことを確認します。

    # ipsec trafficstatus | grep connection.name
  2. 必要に応じて、接続が正常に読み込まれなかった場合は、次のコマンドを入力して手動で接続を追加します。これにより、接続の確立に失敗した理由を示す、より具体的な情報が提供されます。

    # ipsec auto --add connection.name
    注記

    接続の読み込みおよび開始のプロセス中に発生した可能性のあるエラーは、ログに報告されます。ログは、/var/log/pluto.logにあります。これらのログは解析が難しいため、代わりに接続を手動で追加して、標準出力からログメッセージを取得してみてください。