iptables REDIRECT zu Kubernetes NodePort führt dazu, dass die Anforderung hängen bleibt

iptables REDIRECT zu Kubernetes NodePort führt dazu, dass die Anforderung hängen bleibt

Ich versuche, den Client-Verkehr auf einen NodePort eines Kubernetes-Clusters umzuleiten, der auf 192.168.1.100.30000 (https-Port) lauscht.

Der Client muss eine Anfrage an 192.168.1.100.8000 stellen, daher habe ich die folgende REDIRECT-Regel in iptables hinzugefügt:

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

Ich erhalte jedoch die folgende Fehlermeldung:

# 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.

auch versucht, Remotesystem einzurichten, das inDasAntworten Sie und stellen Sie eine Anfrage an denselben Endpunkt. Sie erhalten den folgenden Fehler:

# 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

Ich weiß, dass die Netzwerkrichtlinien des Kubernetes-Clusters mit Calico-CRDs erzwungen werden. Ich habe der Netzwerkrichtlinie jedoch standardmäßig „Alles zulassen“ hinzugefügt, und trotzdem scheint der Datenverkehr immer noch zu hängen.

Ich habe außerdem die Protokolle des Ingress-Controllers geprüft, um zu sehen, ob die Anfrage dort angekommen ist, habe jedoch beim Stellen der Anfrage keine Protokollausgabe gesehen.

Das Seltsame ist, dass das direkte Curling des Knotenports https://192.168.1.100.30000/v1/apifunktioniert und ich eine erfolgreiche Antwort zurückbekomme.

Die Frage ist, warum Curling https://192.168.1.100:8000/v1/api (with the REDIRECT rule to 30000)dazu führt, dass die Anfrage hängen bleibt.

verwandte Informationen