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 パッケージがインストールされている。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
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
への接続を設定します。必要に応じて、ホストの
vpn_connections
リストに次のセクションを追加して、管理対象ホストから、インベントリファイルに記述されていない外部ホストへの接続を設定します。vpn_connections: - hosts: managed_node1: managed_node2: external_node: hostname: 192.0.2.2
これは、追加の接続(
managed_node1からexternal_node
)へと(managed_node2からexternal_node
)を設定します。
接続は管理対象ノードでのみ設定され、外部ノードでは設定されません。
必要に応じて、
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
-
必要に応じて、設定に合わせて変数を変更できます。詳細は、
/usr/share/doc/rhel-system-roles/vpn/README.md
ファイルを参照してください。 オプション: Playbook の構文を確認します。
# ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
インベントリーファイルで Playbook を実行します。
# ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
検証
管理対象ノードで、接続が正常にロードされていることを確認します。
# ipsec status | grep connection.name
connection.nameを、このノードからの接続の名前(たとえば、
managed_node1-to-managed_node2
)に置き換えます。
デフォルトでは、ロールは、各システムの観点から作成する接続ごとにわかりやすい名前を生成します。たとえば、managed_node1
とmanaged_node2
との間の接続を作成するときに、managed_node1
上のこの接続のわかりやすい名前はmanaged_node1-to-managed_node2
ですが、managed_node2
では、この接続の名前はmanaged_node2-to-managed_node1
となります。
管理対象ノードで、接続が正常に開始されたことを確認します。
# ipsec trafficstatus | grep connection.name
必要に応じて、接続が正常に読み込まれなかった場合は、次のコマンドを入力して手動で接続を追加します。これにより、接続の確立に失敗した理由を示す、より具体的な情報が提供されます。
# ipsec auto --add connection.name
注記接続の読み込みおよび開始のプロセス中に発生した可能性のあるエラーは、ログに報告されます。ログは、
/var/log/pluto.log
にあります。これらのログは解析が難しいため、代わりに接続を手動で追加して、標準出力からログメッセージを取得してみてください。