Como as portas de origem são escolhidas para os destinos SNAT do iptables?

Como as portas de origem são escolhidas para os destinos SNAT do iptables?

Por padrão, o destino SNAT mantém a porta de origem do pacote original. Se essa porta já estiver em uso, ele escolhe uma aleatoriamente. Existe alguma forma de influenciar a escolha desta porta ou avaliar a faixa dentro da qual ela é escolhida? Nos meus testes net.ipv4.ip_local_port_rangenão pareceu ter influência nisso. Gostaria de saber se existe uma configuração diferente para isso

Responder1

Por padrão, o destino SNAT mantém a porta de origem do pacote original. Se essa porta já estiver em uso, ele escolhe uma aleatoriamente.

Não é escolhido aleatoriamente por padrão, em vez disso, o algoritmo padrão é o seguinte
(a parte em negrito confirma sua afirmação sobre manter a porta original)

Se nenhum intervalo de portas for especificado, as portas de origem abaixo de 512 serão mapeadas para outras portas abaixo de 512: aquelas entre 512 e 1023 inclusive serão mapeadas para portas abaixo de 1024 e outras portas serão mapeadas para 1024 ou acima.Sempre que possível, nenhuma alteração na porta ocorrerá.

https://man7.org/linux/man-pages/man8/iptables-extensions.8.html

Existe alguma forma de influenciar a escolha desta porta ou avaliar a faixa dentro da qual ela é escolhida?

Sim, é possível usando instruções masqueradeou snatem sua NATregra, especificando intervalos de portas da seguinte maneira--to-ports port[-port]

--to-ports porta[-porta]

          This specifies a range of source ports to use, overriding
          the default SNAT source port selection heuristics (see
          above). This is only valid if the rule also specifies one
          of the following protocols: tcp, udp, dccp or sctp.

https://man7.org/linux/man-pages/man8/iptables-extensions.8.html

Nos meus testes, net.ipv4.ip_local_port_range não pareceu ter influência nisso.

O net.ipv4.ip_local_port_rangeaplica-se a portas ouvintes que devem estar disponíveis para serem ouvidas, não tem nada a ver com SNAT, ou seja, essas portas nunca serão utilizadas de NATfato.

https://www.ibm.com/docs/en/filenet-p8-platform/5.5.x?topic=listener-linux

informação relacionada