Existe uma maneira de limitar as portas Src no mascaramento de IPtables

Existe uma maneira de limitar as portas Src no mascaramento de IPtables

Eu tenho a seguinte configuração de cadeia por kube-proxy em meus iptables em todos os meus nós.

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 */ 

Todos os meus nós estão protegidos por um firewall sem estado/estático do provedor. Com a seguinte configuração de regra.

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

O que significa que o tráfego de qualquer lugar é permitido nas portas 32768-65535 TCP/ACK apenas para garantir conexões reversas do tráfego de saída.

Em todos os meus nós (Ubuntu 16.04), a seguinte configuração do sistema está definida.

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

Quando tento acessar um servidor remoto, por exemplo, via curl e http, tenho conexões perdidas (retransmissão falsa TCP), provenientes de portas de origem inferiores a 32768.

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

Existe uma maneira de "dizer" ao iptables, kube-proxy e/ou kernel para limitar o intervalo da porta de origem usando o iptables masquarde?

Responder1

Odocumentação de MASQUERADEdocumenta a --to-portsopção:

A opção --to-ports é usada para definir a porta ou portas de origem a serem usadas em pacotes de saída. ...

informação relacionada