第15章 VPN RHEL システムロールを使用した IPsec との vpn 接続の設定
vpn システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL システムで VPN 接続を設定できます。これを使用して、ホスト間、ネットワーク間、VPN リモートアクセスサーバー、およびメッシュ設定をセットアップできます。
ホスト間接続の場合、ロールは、必要に応じてキーを生成するなど、デフォルトのパラメーターを使用して、vpn_connections のリスト内のホストの各ペア間に VPN トンネルを設定します。または、リストされているすべてのホスト間にオポチュニスティックメッシュ設定を作成するように設定することもできます。このロールは、hosts の下にあるホストの名前が Ansible インベントリーで使用されているホストの名前と同じであり、それらの名前を使用してトンネルを設定できることを前提としています。
vpn RHEL システムロールは現在、VPN プロバイダーとして IPsec 実装であ る Libreswan のみをサポートしています。
15.1. vpn システムロールを使用して IPsec でホスト間 VPN の作成 リンクのコピーリンクがクリップボードにコピーされました!
vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、ホスト間接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。
前提条件
-
1 つ以上の 管理対象ノード (
vpnシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法の詳細は、ナレッジベースのアーティクル記事 How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- マネージドノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook は、システムロールによって自動生成されたキーを使用した事前共有キー認証を使用して、
managed_node1からmanaged_node2への接続を設定します。vpn_manage_firewallとvpn_manage_selinuxは両方とも true に設定されているため、vpnロールはfirewallとselinuxロールを使用して、vpnロールが使用するポートを管理します。必要に応じて、ホストの
vpn_connectionsリストに次のセクションを追加して、マネージドホストから、インベントリーファイルに記述されていない外部ホストへの接続を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、追加の接続 (
managed_node1からexternal_node) へと (managed_node2からexternal_node) を設定します。
接続はマネージドノードでのみ設定され、外部ノードでは設定されません。
必要に応じて、
vpn_connections内の追加セクション (コントロールプレーンやデータプレーンなど) を使用して、マネージドノードに複数の VPN 接続を指定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
必要に応じて、設定に合わせて変数を変更できます。詳細は、
/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
# ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
# ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
マネージドノードで、接続が正常にロードされていることを確認します。
ipsec status | grep connection.name
# ipsec status | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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 trafficstatus | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、接続が正常に読み込まれなかった場合は、次のコマンドを入力して手動で接続を追加します。これにより、接続の確立に失敗した理由を示す、より具体的な情報が提供されます。
ipsec auto --add connection.name
# ipsec auto --add connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記接続の読み込みおよび開始のプロセス中に発生した可能性のあるエラーは、ログに報告されます。ログは、
/var/log/pluto.logにあります。これらのログは解析が難しいため、代わりに接続を手動で追加して、標準出力からログメッセージを取得してみてください。