2.11. 公開されたネットワークポートの監査


MicroShift では、次の場合にワークロードによってホストポートを開くことができます。ログを確認してネットワークサービスを表示できます。

2.11.1. hostNetwork

Pod が hostNetwork:true で設定されている場合、Pod はホストネットワーク namespace で実行されています。この設定では、ホストポートを独立して開くことができます。MicroShift コンポーネントログを使用してこのケースを追跡することはできません。ポートは firewalld ルールの対象となります。firewalld でポートが開いている場合は、firewalld デバッグログでポートの開きを確認できます。

前提条件

  • ビルドホストへの root ユーザーアクセス権がある。

手順

  1. オプション: 次のコマンド例を使用して、hostNetwork:true パラメーターが ovnkube-node Pod に設定されていることを確認できます。

    $ sudo oc get pod -n openshift-ovn-kubernetes <ovnkube-node-pod-name> -o json | jq -r '.spec.hostNetwork' true
  2. 次のコマンドを実行して、firewalld ログのデバッグを有効にします。

    $ sudo vi /etc/sysconfig/firewalld
    FIREWALLD_ARGS=--debug=10
  3. firewalld サービスを再起動します。

    $ sudo systemctl restart firewalld.service
  4. デバッグオプションが適切に追加されたことを確認するには、次のコマンドを実行します。

    $ sudo systemd-cgls -u firewalld.service

    firewalld デバッグログは、/var/log/firewalld パスに保存されます。

    ポートオープンルールが追加されたときのログの例:

    2023-06-28 10:46:37 DEBUG1: config.getZoneByName('public')
    2023-06-28 10:46:37 DEBUG1: config.zone.7.addPort('8080', 'tcp')
    2023-06-28 10:46:37 DEBUG1: config.zone.7.getSettings()
    2023-06-28 10:46:37 DEBUG1: config.zone.7.update('...')
    2023-06-28 10:46:37 DEBUG1: config.zone.7.Updated('public')

    ポートオープンルールが削除されたときのログの例:

    2023-06-28 10:47:57 DEBUG1: config.getZoneByName('public')
    2023-06-28 10:47:57 DEBUG2: config.zone.7.Introspect()
    2023-06-28 10:47:57 DEBUG1: config.zone.7.removePort('8080', 'tcp')
    2023-06-28 10:47:57 DEBUG1: config.zone.7.getSettings()
    2023-06-28 10:47:57 DEBUG1: config.zone.7.update('...')
    2023-06-28 10:47:57 DEBUG1: config.zone.7.Updated('public')

2.11.2. hostPort

MicroShift で hostPort 設定ログにアクセスできます。次のログは、hostPort 設定の例です。

手順

  • 次のコマンドを実行すると、ログにアクセスできます。

    $ journalctl -u crio | grep "local port"

    ホストポートが開いている場合の CRI-O ログの例:

    $ Jun 25 16:27:37 rhel92 crio[77216]: time="2023-06-25 16:27:37.033003098+08:00" level=info msg="Opened local port tcp:443"

    ホストポートが閉じている場合の CRI-O ログの例:

    $ Jun 25 16:24:11 rhel92 crio[77216]: time="2023-06-25 16:24:11.342088450+08:00" level=info msg="Closing host port tcp:443"

2.11.3. NodePort および LoadBalancer サービス

OVN-Kubernetes は、NodePort および LoadBalancer サービスタイプのホストポートを開きます。これらのサービスは、ホストポートから Ingress トラフィックを取得し、それを clusterIP に転送する iptables ルールを追加します。NodePort および LoadBalancer サービスのログを次の例に示します。

手順

  1. ovnkube-master Pod の名前にアクセスするには、次のコマンドを実行します。

    $ oc get pods -n openshift-ovn-kubernetes | awk '/ovnkube-master/{print $1}'

    ovnkube-master Pod 名の例

    ovnkube-master-n2shv

  2. ovnkube-master Pod を使用し、次のコマンド例を実行すると、NodePort および LoadBalancer サービスのログにアクセスできます。

    $ oc logs -n openshift-ovn-kubernetes <ovnkube-master-pod-name> ovnkube-master | grep -E "OVN-KUBE-NODEPORT|OVN-KUBE-EXTERNALIP"

    NodePort サービス:

    ホストポートが開いている場合の ovnkube-master Pod の ovnkube-master コンテナー内のログの例:

    $ I0625 09:07:00.992980 2118395 iptables.go:27] Adding rule in table: nat, chain: OVN-KUBE-NODEPORT with args: "-p TCP -m addrtype --dst-type LOCAL --dport 32718 -j DNAT --to-destination 10.96.178.142:8081" for protocol: 0

    ホストポートが閉じている場合の ovnkube-master Pod の ovnkube-master コンテナー内のログの例:

    $ Deleting rule in table: nat, chain: OVN-KUBE-NODEPORT with args: "-p TCP -m addrtype --dst-type LOCAL --dport 32718 -j DNAT --to-destination 10.96.178.142:8081" for protocol: 0

    LoadBalancer サービス:

    ホストポートが開いている場合の ovnkube-master Pod の ovnkube-master コンテナー内のログの例:

    $ I0625 09:34:10.406067  128902 iptables.go:27] Adding rule in table: nat, chain: OVN-KUBE-EXTERNALIP with args: "-p TCP -d 172.16.47.129 --dport 8081 -j DNAT --to-destination 10.43.114.94:8081" for protocol: 0

    ホストポートが閉じている場合の ovnkube-master Pod の ovnkube-master コンテナー内のログの例:

    $ I0625 09:37:00.976953  128902 iptables.go:63] Deleting rule in table: nat, chain: OVN-KUBE-EXTERNALIP with args: "-p TCP -d 172.16.47.129 --dport 8081 -j DNAT --to-destination 10.43.114.94:8081" for protocol: 0

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.