6.7. 外部トラフィックの IPsec 暗号化の設定


クラスター管理者は、IPsec を使用して外部トラフィックを暗号化するには、PKCS#12 証明書の提供を含め、ネットワークインフラストラクチャーに IPsec を設定する必要があります。この手順では Butane を使用してマシン設定を作成するため、butane コマンドがインストールされている必要があります。

注記

マシン設定を適用した後、Machine Config Operator はクラスター内の影響を受けるノードを再起動し、新しいマシン設定をロールアウトします。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • ローカルコンピューターに butane ユーティリティーがインストールされている。
  • NMState Operator がクラスターにインストールされている。
  • cluster-admin 権限を持つユーザーとしてクラスターにログインしている。
  • IPsec エンドポイント用の既存の PKCS#12 証明書と PEM 形式の CA 証明書があります。
  • クラスターで Full または External モードの IPsec が有効になっている。
  • OVN-Kubernetes ネットワークプラグインが、ローカルゲートウェイモード (ovnKubernetesConfig.gatewayConfig.routingViaHost=true) で設定されている。

手順

  1. NMState Operator ノードネットワーク設定ポリシーを使用して IPsec 設定を作成します。詳細は、IPsec VPN 実装としての Libreswan を参照してください。

    1. IPsec エンドポイントであるクラスターノードの IP アドレスを特定するために、次のコマンドを入力します。

      $ oc get nodes
      Copy to Clipboard Toggle word wrap
    2. 次の例のように、NMState Operator のノードネットワーク設定ポリシーを含む ipsec-config.yaml という名前のファイルを作成します。NodeNetworkConfigurationPolicy オブジェクトの概要は、The Kubernetes NMState project を参照してください。

      NMState IPsec トランスポート設定の例

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: ipsec-config
      spec:
        nodeSelector:
          kubernetes.io/hostname: "<hostname>" 
      1
      
        desiredState:
          interfaces:
          - name: <interface_name> 
      2
      
            type: ipsec
            libreswan:
              left: <cluster_node> 
      3
      
              leftid: '%fromcert'
              leftrsasigkey: '%cert'
              leftcert: left_server
              leftmodecfgclient: false
              right: <external_host> 
      4
      
              rightid: '%fromcert'
              rightrsasigkey: '%cert'
              rightsubnet: <external_address>/32 
      5
      
              ikev2: insist
              type: transport
      Copy to Clipboard Toggle word wrap

      1 1
      ポリシーを適用するホスト名を指定します。このホストは、IPsec 設定の左側のホストとして機能します。
      2
      ホスト上に作成するインターフェイスの名前を指定します。
      3
      クラスター側の IPsec トンネルを終端するクラスターノードのホスト名を指定します。この名前は、提供した PKCS#12 証明書の SAN [Subject Alternate Name] と一致する必要があります。
      4
      外部ホスト名 (host.example.com など) を指定します。この名前は、提供した PKCS#12 証明書の SAN [Subject Alternate Name] と一致する必要があります。
      5
      外部ホストの IP アドレス (10.1.2.3/32 など) を指定します。

      NMState IPsec トンネル設定の例

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: ipsec-config
      spec:
        nodeSelector:
          kubernetes.io/hostname: "<hostname>" 
      1
      
        desiredState:
          interfaces:
          - name: <interface_name> 
      2
      
            type: ipsec
            libreswan:
              left: <cluster_node> 
      3
      
              leftid: '%fromcert'
              leftmodecfgclient: false
              leftrsasigkey: '%cert'
              leftcert: left_server
              right: <external_host> 
      4
      
              rightid: '%fromcert'
              rightrsasigkey: '%cert'
              rightsubnet: <external_address>/32 
      5
      
              ikev2: insist
              type: tunnel
      Copy to Clipboard Toggle word wrap

      1
      ポリシーを適用するホスト名を指定します。このホストは、IPsec 設定の左側のホストとして機能します。
      2
      ホスト上に作成するインターフェイスの名前を指定します。
      3
      クラスター側の IPsec トンネルを終端するクラスターノードのホスト名を指定します。この名前は、提供した PKCS#12 証明書の SAN [Subject Alternate Name] と一致する必要があります。
      4
      外部ホスト名 (host.example.com など) を指定します。この名前は、提供した PKCS#12 証明書の SAN [Subject Alternate Name] と一致する必要があります。
      5
      外部ホストの IP アドレス (10.1.2.3/32 など) を指定します。
    3. IPsec インターフェイスを設定するために、次のコマンドを入力します。

      $ oc create -f ipsec-config.yaml
      Copy to Clipboard Toggle word wrap
  2. 次の証明書ファイルを提供して、各ホストのネットワークセキュリティーサービス (NSS) データベースに追加します。これらのファイルは、後の手順で Butane 設定の一部としてインポートされます。

    • left_server.p12: IPsec エンドポイントの証明書バンドル
    • ca.pem: 証明書に署名した認証局
  3. 証明書をクラスターに追加するためのマシン設定を作成します。

    1. コントロールプレーンとワーカーノードの Butane 設定ファイルを作成するには、次のコマンドを入力します。

      注記

      設定ファイルで指定する Butane のバージョン は、OpenShift Container Platform のバージョンと同じである必要があり、末尾は常に 0 です。たとえば、4.17.0 です。Butane の詳細は、「Butane を使用したマシン設定の作成」を参照してください。

      $ for role in master worker; do
        cat >> "99-ipsec-${role}-endpoint-config.bu" <<-EOF
        variant: openshift
        version: 4.17.0
        metadata:
          name: 99-${role}-import-certs
          labels:
            machineconfiguration.openshift.io/role: $role
        systemd:
          units:
          - name: ipsec-import.service
            enabled: true
            contents: |
              [Unit]
              Description=Import external certs into ipsec NSS
              Before=ipsec.service
      
              [Service]
              Type=oneshot
              ExecStart=/usr/local/bin/ipsec-addcert.sh
              RemainAfterExit=false
              StandardOutput=journal
      
              [Install]
              WantedBy=multi-user.target
        storage:
          files:
          - path: /etc/pki/certs/ca.pem
            mode: 0400
            overwrite: true
            contents:
              local: ca.pem
          - path: /etc/pki/certs/left_server.p12
            mode: 0400
            overwrite: true
            contents:
              local: left_server.p12
          - path: /usr/local/bin/ipsec-addcert.sh
            mode: 0740
            overwrite: true
            contents:
              inline: |
                #!/bin/bash -e
                echo "importing cert to NSS"
                certutil -A -n "CA" -t "CT,C,C" -d /var/lib/ipsec/nss/ -i /etc/pki/certs/ca.pem
                pk12util -W "" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/
                certutil -M -n "left_server" -t "u,u,u" -d /var/lib/ipsec/nss/
      EOF
      done
      Copy to Clipboard Toggle word wrap
    2. 前の手順で作成した Butane ファイルをマシン設定に変換するには、以下のコマンドを入力します。

      $ for role in master worker; do
        butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml
      done
      Copy to Clipboard Toggle word wrap
  4. マシン設定をクラスターに適用するには、次のコマンドを入力します。

    $ for role in master worker; do
      oc apply -f 99-ipsec-${role}-endpoint-config.yaml
    done
    Copy to Clipboard Toggle word wrap
    重要

    Machine Config Operator (MCO) は各マシン設定プール内のマシンを更新するときに、各ノードを 1 つずつ再起動します。外部 IPsec 接続が使用可能になるまでは、すべてのノードが更新されるまで待つ必要があります。

  5. 以下のコマンドを実行してマシン設定プールのステータスを確認します。

    $ oc get mcp
    Copy to Clipboard Toggle word wrap

    正常に更新されたノードには、UPDATED=trueUPDATING=falseDEGRADED=false のステータスがあります。

    注記

    デフォルトで、MCO はプールごとに一度に 1 つのマシンを更新するため、移行にかかる合計時間がクラスターのサイズと共に増加します。

  6. IPsec マシン設定が正常にロールアウトされたことを確認するために、次のコマンドを入力します。

    1. IPsec マシン設定の作成を確認します。

      $ oc get mc | grep ipsec
      Copy to Clipboard Toggle word wrap

      出力例

      80-ipsec-master-extensions        3.2.0        6d15h
      80-ipsec-worker-extensions        3.2.0        6d15h
      Copy to Clipboard Toggle word wrap

    2. コントロールプレーンノードへの IPsec 拡張機能の適用を確認します。出力例は 2 を示しています。

      $ oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
      Copy to Clipboard Toggle word wrap
    3. コンピュートノードへの IPsec 拡張機能の適用を確認します。出力例は 2 を示しています。

      $ oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -c
      Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat