7.2. vpn システムロールを使用して IPsec でオポチュニスティックメッシュ VPN 接続の作成

vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、認証に証明書を使用するオポチュニスティックメッシュ VPN 接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。

証明書による認証は、Playbook で auth_method: cert パラメーターを定義することによって設定されます。vpn システムロールは、/etc/ipsec.d ディレクトリーで定義されている IPsec ネットワークセキュリティーサービス (NSS) 暗号ライブラリーに必要な証明書が含まれていることを前提としています。デフォルトでは、ノード名が証明書のニックネームとして使用されます。この例では、これは managed_node1 です。インベントリーで cert_name 属性を使用して、さまざまな証明書名を定義できます。

次の手順例では、Ansible Playbook を実行するシステムであるコントロールノードは、両方のマネージドノード (192.0.2.0/24) と同じクラスレスドメイン間ルーティング (CIDR) 番号を共有し、IP アドレスは 192.0.2.7 になります。したがって、コントロールノードは、CIDR 192.0.2.0/24 用に自動的に作成されるプライベートポリシーに該当します。

再生中の SSH 接続の損失を防ぐために、コントロールノードの明確なポリシーがポリシーのリストに含まれています。ポリシーリストには、CIDR がデフォルトと等しい項目もあることに注意してください。これは、この Playbook がデフォルトポリシーのルールを上書きして、private-or-clear ではなく private にするためです。

前提条件

  • 1 つ以上の 管理対象ノード (vpn システムロールで設定するシステム) へのアクセスおよびパーミッション。

    • すべてのマネージドノードで、/etc/ipsec.d ディレクトリーの NSS データベースには、ピア認証に必要なすべての証明書が含まれています。デフォルトでは、ノード名が証明書のニックネームとして使用されます。
  • コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。

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

    • ansible-core パッケージおよび rhel-system-roles パッケージがインストールされている。
重要

RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansibleansible-playbook などのコマンドラインユーティリティー、dockerpodman などのコネクター、プラグインとモジュールが多く含まれています。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 を参照してください。

  • マネージドノードが記載されているインベントリーファイルがある。

手順

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

    - name: Mesh VPN
      hosts: managed_node1, managed_node2, managed_node3
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - opportunistic: true
            auth_method: cert
            policies:
              - policy: private
                cidr: default
              - policy: private-or-clear
                cidr: 198.51.100.0/24
              - policy: private
                cidr: 192.0.2.0/24
              - policy: clear
                cidr: 192.0.2.7/32
        vpn_manage_firewall: true
        vpn_manage_selinux: true
    注記

    vpn_manage_firewallvpn_manage_selinux は両方とも true に設定されているため、vpn ロールは firewall ロールと selinux ロールを使用して、vpn ロールが使用するポートを管理します。

  2. オプション: 設定に合わせて変数を変更できます。詳細は、/usr/share/doc/rhel-system-roles/vpn/README.md ファイルを参照してください。
  3. オプション: Playbook の構文を確認します。

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

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