Kubernetes NodePort への iptables REDIRECT によりリクエストがハングする

Kubernetes NodePort への iptables REDIRECT によりリクエストがハングする

192.168.1.100.30000 (https ポート) でリッスンしている Kubernetes クラスター NodePort にクライアント トラフィックを送信しようとしています。

クライアントは 192.168.1.100.8000 にリクエストを行う必要があるため、iptables に次の REDIRECT ルールを追加しました。

iptables -t nat -I PREROUTING -p tcp --dst 192.168.1.100 --dport 8000 -j REDIRECT --to-port 30000
iptables -t nat -I OUTPUT -d 192.168.1.100 -p tcp --dport 8000 -j REDIRECT --to-port 30000

ただし、次のエラーが発生します。

# curl -vk https://192.168.1.100:8000/v1/api
* About to connect() to 192.168.1.100 port 8000 (#0)
*   Trying 192.168.1.100...
* Connected to 192.168.1.100 (192.168.1.100) port 8000 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* NSS error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG)
* SSL received a record that exceeded the maximum permissible length.
* Closing connection 0
curl: (35) SSL received a record that exceeded the maximum permissible length.

また、示されているリモートシステムの設定も試みましたこれ回答して同じエンドポイントにリクエストを送信すると、次のエラーが発生しました。

# ip netns exec remotesystem curl -vk https://192.168.1.100:8000/v1/api
* About to connect() to 192.168.1.100 port 8000 (#0)
*   Trying 192.168.1.100...
* Connection timed out
* Failed connect to 192.168.1.100:8000; Connection timed out
* Closing connection 0
curl: (7) Failed connect to 192.168.1.100:8000; Connection timed out

Kubernetes クラスターには Calico CRD でネットワーク ポリシーが適用されていることはわかっていますが、ネットワーク ポリシーにデフォルトですべて許可を追加したため、トラフィックがまだハングしているようです。

また、イングレス コントローラーのログをチェックして、リクエストがそこに届いたかどうかを確認しましたが、リクエストを行ったときにログが出力されませんでした。

奇妙なことに、ノード ポートを直接 curling するとhttps://192.168.1.100.30000/v1/api、成功の応答が返されます。

問題は、なぜカーリングによってhttps://192.168.1.100:8000/v1/api (with the REDIRECT rule to 30000)リクエストがハングするのかということです。

関連情報