IPtablesマスカレードでSrcポートを制限する方法はありますか?

IPtablesマスカレードでSrcポートを制限する方法はありますか?

すべてのノードの iptables に kube-proxy によって次のチェーンが設定されています。

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

すべてのノードは、プロバイダーのステートレス/静的ファイアウォールの背後にあります。ルールの設定は次のとおりです。

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 経由でリモート サーバーにアクセスしようとすると、32768 未満のソース ポートからの接続がドロップされます (TCP スプリアス再送信)。

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 masquarde を使用して、iptables、kube-proxy、カーネルにソース ポートの範囲を制限するように「指示」する方法はありますか?

答え1

MASQUERADEのドキュメントオプションを文書化します--to-ports:

--to-ports オプションは、送信パケットで使用する送信元ポートを設定するために使用されます。...

関連情報