Есть ли способ ограничить порты Src в маскировке IPtables?

Есть ли способ ограничить порты Src в маскировке IPtables?

У меня есть следующая настройка цепочки kube-proxy в iptables на всех моих узлах.

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

Все мои узлы находятся за Stateless / Static Firewall от провайдера. Со следующей настройкой правил.

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

Это означает, что трафик из любой точки мира разрешен только на портах 32768-65535 TCP/ACK для обеспечения обратных соединений из исходящего трафика.

На всех моих узлах (Ubuntu 16.04) установлены следующие системные настройки.

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

Когда я пытаюсь получить доступ к удаленному серверу, например, через curl и http, у меня происходят обрывы соединений (ложная повторная передача TCP) с исходных портов ниже 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

Есть ли способ «сказать» iptables, kube-proxy и/или ядру ограничить диапазон исходного порта с помощью iptables masquarde?

решение1

Theдокументация МАСКАРАДАдокументирует --to-portsвозможность:

Параметр --to-ports используется для установки исходного порта или портов, которые будут использоваться для исходящих пакетов. ...

Связанный контент