23.9. IPsec 暗号化の設定
IPsec を有効にすると、OVN-Kubernetes クラスターネットワーク上のノード間のすべての Pod 間ネットワークトラフィックが IPsec トランスポートモード で暗号化されます。
IPsec はデフォルトで無効にされています。クラスターのインストール中またはインストール後に有効にできます。クラスターのインストールの詳細は、OpenShift Container Platform インストールの概要 を参照してください。クラスターのインストール後に IPsec を有効にする必要がある場合は、IPsec ESP IP ヘッダーのオーバーヘッドを考慮して、まずクラスター MTU のサイズを変更する必要があります。
OpenShift Container Platform クラスター上の IPsec には次のサポート制限があります。
- OpenShift Container Platform 4.15 に更新する前に、IPsec を無効にする必要があります。IPsec を無効にしたら、関連する IPsec デーモンセットも削除する必要があります。IPsec を無効にせずに更新すると、Pod 間通信が中断される可能性があるという既知の問題があります。(OCPBUGS-42763)
次のドキュメントでは、クラスターのインストール後に IPSec を有効または無効にする方法について説明します。
23.9.1. 前提条件
-
クラスター MTU のサイズを
46
バイト減らして、IPsec ESP ヘッダーにオーバーヘッドを追加している。クラスターが使用する MTU のサイズ変更の詳細は クラスターネットワークの MTU 変更 を参照してください。
23.9.2. IPsec で暗号化したネットワークトラフィックフローのタイプ
IPsec を有効にすると、Pod 間の以下のネットワークトラフィックフローのみが暗号化されます。
- クラスターネットワーク上の複数の異なるノードの Pod 間のトラフィック
- ホストネットワークの Pod からクラスターネットワーク上の Pod へのトラフィック
以下のトラフィックフローは暗号化されません。
- クラスターネットワーク上の同じノードの Pod 間のトラフィック
- ホストネットワーク上の Pod 間のトラフィック
- クラスターネットワークの Pod からホストネットワークの Pod へのトラフィック
暗号化されていないフローと暗号化されていないフローを以下の図に示します。

23.9.2.1. IPsec が有効になっている場合のネットワーク接続要件
OpenShift Container Platform クラスターのコンポーネントが通信できるように、マシン間のネットワーク接続を設定する必要があります。すべてのマシンではクラスターの他のすべてのマシンのホスト名を解決できる必要があります。
プロトコル | ポート | 説明 |
---|---|---|
UDP |
| IPsec IKE パケット |
| IPsec NAT-T パケット | |
ESP | 該当なし | IPsec Encapsulating Security Payload (ESP) |
23.9.3. 暗号化プロトコルおよび IPsec モード
使用する暗号化は AES-GCM-16-256
です。整合性チェック値 (ICV) は 16
バイトです。鍵の長さは 256
ビットです。
使用される IPsec モードは トランスポートモード です。これは、元のパケットの IP ヘッダーに Encapsulated Security Payload (ESP) ヘッダーを追加して、パケットデータを暗号化することで、エンドツーエンドの通信を暗号化するモードです。OpenShift Container Platform は現在、Pod 間通信に IPsec トンネルモード を使用およびサポートしていません。
23.9.4. セキュリティー証明書の生成およびローテーション
Cluster Network Operator (CNO) は、暗号化用に IPsec によって使用される自己署名の X.509 認証局 (CA) を生成します。各ノードの証明書署名要求 (CSR) は、CNO によって自動的に満たされます。
この CA は 10 年間有効です。個別のノード証明書は 5 年間有効で、4 年半が経過すると自動的にローテーションされます。
23.9.5. IPsec 暗号化の有効化
クラスター管理者は、クラスターのインストール後に IPsec 暗号化を有効にできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインしている。 -
クラスターの最大伝送単位(MTU)のサイズを
46
バイト減らして、IPsec ESP ヘッダーのオーバーヘッドを確保している。
手順
IPsec 暗号化を有効にするには、次のコマンドを入力します。
$ oc patch networks.operator.openshift.io cluster --type=merge \ -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipsecConfig":{ }}}}}'
検証
OVN-Kubernetes コントロールプレーン Pod の名前を見つけるには、次のコマンドを入力します。
$ oc get pods -l app=ovnkube-master -n openshift-ovn-kubernetes
出力例
NAME READY STATUS RESTARTS AGE ovnkube-master-fvtnh 6/6 Running 0 122m ovnkube-master-hsgmm 6/6 Running 0 122m ovnkube-master-qcmdc 6/6 Running 0 122m
次のコマンドを実行して、クラスターで IPsec が有効になっていることを確認します。コマンド出力には、ノードで IPsec が有効になっていることを示すために
true
が表示されるはずです。$ oc -n openshift-ovn-kubernetes rsh ovnkube-master-<pod_number_sequence> \ 1 ovn-nbctl --no-leader-only get nb_global . ipsec
- 1
- &
lt;pod_number_sequence&
gt; を直前の手順のデータプレーン Pod の文字fvtnh
のランダムなシーケンスに置き換えます。
23.9.6. IPsec 暗号化の無効化
クラスター管理者は、クラスターのインストール後に IPsec を有効にした場合にのみ、IPsec 暗号化を無効にできます。
IPsec を無効にした後、関連する IPsec daemonset Pod を削除する必要があります。これらの Pod を削除しない場合、クラスターで問題が発生する可能性があります。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。
手順
IPsec 暗号化を無効にするには、次のコマンドを入力します。
$ oc patch networks.operator.openshift.io/cluster --type=json \ -p='[{"op":"remove", "path":"/spec/defaultNetwork/ovnKubernetesConfig/ipsecConfig"}]'
クラスターの
マスター
ノードに存在する OVN-Kubernetes データプレーン Pod の名前を見つけるには、次のコマンドを入力します。$ oc get pods -n openshift-ovn-kubernetes -l=app=ovnkube-master
出力例
ovnkube-master-5xqbf 8/8 Running 0 28m ...
次のコマンドを入力して、クラスターの
マスター
ノードで IPsec が無効になっていることを確認します。コマンド出力には、ノードで IPsec が無効になっていることを示すfalse
が表示されるはずです。$ oc -n openshift-ovn-kubernetes -c nbdb rsh ovnkube-master-<pod_number_sequence> \1 ovn-nbctl --no-leader-only get nb_global . ipsec
- 1
- &
lt;pod_number_sequence&
gt; を直前の手順のデータプレーン Pod の5xqbf
などの文字のランダムなシーケンスに置き換えます。
ノードの
openshift-ovn-kubernetes
名前空間から IPsecovn-ipsec
daemonset Pod を削除するには、次のコマンドを入力します。$ oc delete daemonset ovn-ipsec -n openshift-ovn-kubernetes 1
- 1
ovn-ipsec
daemonset は、ノード上の east-west トラフィックの IPsec 接続を設定します。
次のコマンドを入力して、
ovn-ipsec
daemonset Pod がクラスター内のすべてのノードから削除されたことを確認します。コマンドの出力に Pod が一覧表示されない場合、削除操作は正常です。$ oc get pods -n openshift-ovn-kubernetes -l=app=ovn-ipsec
注記最初のコマンド試行により Pod が削除されない可能性があるため、Pod の削除用にコマンドを再実行する必要がある場合があります。
-
オプション: IP パケットの IPsec ESP ヘッダーからのオーバーヘッドがなくなるため、クラスター MTU のサイズを
46
バイト増やすことができます。