Gibt es eine Möglichkeit, Src-Ports in IPtables-Masquerading zu begrenzen?

Gibt es eine Möglichkeit, Src-Ports in IPtables-Masquerading zu begrenzen?

Ich habe die folgende Kette per Kube-Proxy in meinen Iptables auf allen meinen Knoten eingerichtet.

Chain KUBE-POSTROUTING (1 references)
target     prot opt source               destination
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            /* kubernetes service traffic requiring SNAT */ 

Alle meine Knoten befinden sich hinter einer Stateless/Static Firewall des Anbieters. Mit folgendem Regel-Setup.

tcp_established: &tcp_established
  name: tcp established
  ip_version: ipv4
  dst_port: '32768-65535'
  action: accept
  protocol: tcp
  tcp_flags: ack

Das bedeutet, dass Datenverkehr von überall nur auf den TCP/ACK-Ports 32768–65535 zugelassen ist, um Rückverbindungen für ausgehenden Datenverkehr sicherzustellen.

Auf allen meinen Knoten (Ubuntu 16.04) ist die folgende Systemeinstellung eingestellt.

cat /proc/sys/net/ipv4/ip_local_port_range
32768   60999

Wenn ich versuche, auf einen Remote-Server zuzugreifen, z. B. über Curl und HTTP, kommt es zu Verbindungsabbrüchen (TCP Spurious Retransmission), die von Quellports unter 32768 kommen.

3   1.051525000 80→20092 [SYN, ACK] Seq=0 Ack=1 Win=64876 Len=0 MSS=1336 SACK_PERM=1 TSval=1259153497 TSecr=1768475026 WS=128   THETARGETIP THESOURCEIP TCP 74

4   2.079464000 [TCP Spurious Retransmission] 20092→80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1768476055 TSecr=0 WS=128 THESOURCEIP THETARGETIP TCP 74

Gibt es eine Möglichkeit, iptables, kube-proxy und/oder dem Kernel „anzuweisen“, den Bereich des Quellports mithilfe von iptables masquarde zu begrenzen?

Antwort1

DerDokumentation zu MASQUERADEdokumentiert die --to-portsOption:

Mit der Option „--to-ports“ werden der oder die Quellports festgelegt, die für ausgehende Pakete verwendet werden sollen. …

verwandte Informationen