第31章 RHEL システムロールを使用した IPsec VPN 接続の設定


仮想プライベートネットワーク (VPN) を使用すると、インターネットなどの信頼できないネットワーク上で、セキュアで暗号化されたトンネルを確立できます。このようなトンネルにより、転送中のデータの機密性と整合性が確保されます。一般的なユースケースとしては、支社と本社を接続することなどが挙げられます。

vpn RHEL システムロールを使用すると、Libreswan IPsec VPN 設定の作成プロセスを自動化できます。

注記

vpn RHEL システムロールで作成できるのは、事前共有鍵 (PSK) または証明書を使用してピアを相互に認証する VPN 設定だけです。

31.1. vpn RHEL システムロールを使用して PSK 認証による IPsec ホスト間 VPN を設定する

ホスト間 VPN は、2 つのデバイス間で直接、安全で暗号化された接続を確立し、アプリケーションはインターネットなどの安全でないネットワーク上で安全に通信できるようにします。

認証の場合、事前共有キー(PSK)は、2 つのピアにのみ知られている単一の共有秘密を使用する簡単な方法です。このアプローチは、デプロイメントの容易さが優先される基本的なセットアップに設定が簡単で、理想的です。ただし、キーは厳密に機密に保つ必要があります。鍵にアクセスできる攻撃者は、接続が危険にさらされる可能性があります。

vpn RHEL システムロールを使用すると、PSK 認証による IPsec ホスト間接続を作成するプロセスを自動化できます。デフォルトでは、このロールはトンネルベースの VPN を作成します。

前提条件

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configuring VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      tasks:
        - name: IPsec VPN with PSK authentication
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.vpn
          vars:
            vpn_connections:
              - hosts:
                  managed-node-01.example.com:
                  managed-node-02.example.com:
                auth_method: psk
                auto: start
            vpn_manage_firewall: true
            vpn_manage_selinux: true

    サンプル Playbook で指定されている設定は次のとおりです。

    hosts: <list>

    VPN を設定するピアを含む YAML ディクショナリーを定義します。エントリーが Ansible 管理対象ノードでない場合は、hostname パラメーターに完全修飾ドメイン名 (FQDN) または IP アドレスを指定する必要があります。次に例を示します。

              ...
              - hosts:
                  ...
                  external-host.example.com:
                    hostname: 192.0.2.1

    このロールは、各管理対象ノード上の VPN 接続を設定します。接続の名前は <peer_A>-to-<peer_B> です (例: managed-node-01.example.com-to-managed-node-02.example.com)。ロールは、外部(管理対象外)ノードで Libreswan を設定できないことに注意してください。そのようなピアでは手動で設定を作成する必要があります。

    auth_method: psk
    ピア間の PSK 認証を有効にします。ロールはコントロールノードで openssl を使用して PSK を作成します。
    auto: & lt;startup_method>
    接続の起動方法を指定します。有効な値は addondemandstart、および ignore です。詳細は、Libreswan がインストールされているシステム上の ipsec.conf(5) man ページを参照してください。この変数のデフォルト値は null です。この値は自動起動操作を実行しないことを示します。
    vpn_manage_firewall: true
    ロールにより、管理対象ノード上の firewalld サービスで必要なポートを開くことを指定します。
    vpn_manage_selinux: true
    ロールにより、IPsec ポートに必要な SELinux ポートタイプを設定することを指定します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.vpn/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • 接続が正常に開始されたことを確認します。次に例を示します。

    # ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"'
    ...
    006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'

    このコマンドは、VPN 接続がアクティブでないと成功しないことに注意してください。Playbook 内の auto 変数を start 以外の値に設定する場合は、まず管理対象ノードで接続を手動でアクティブ化する必要がある場合があります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る