Как выбираются исходные порты для целей SNAT iptables?

Как выбираются исходные порты для целей SNAT iptables?

По умолчанию цель SNAT сохраняет исходный порт исходного пакета. Если этот порт уже используется, он выбирает один случайным образом. Есть ли способ повлиять на выбор этого порта или оценить диапазон, в котором он выбирается? В моем тестировании, net.ipv4.ip_local_port_rangeпохоже, это не повлияло на это. Мне интересно, есть ли для этого другая настройка

решение1

По умолчанию цель SNAT сохраняет исходный порт исходного пакета. Если этот порт уже используется, он выбирает один случайным образом.

Он не выбирается случайным образом по умолчанию, вместо этого ниже приведен алгоритм по умолчанию
(выделенная жирным шрифтом часть подтверждает ваше утверждение о сохранении исходного порта):

Если диапазон портов не указан, то исходные порты ниже 512 будут сопоставлены с другими портами ниже 512: порты между 512 и 1023 включительно будут сопоставлены с портами ниже 1024, а остальные порты будут сопоставлены с портами 1024 или выше.По возможности никаких изменений в портах производиться не будет.

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

Есть ли способ повлиять на выбор этого порта или измерить диапазон, в пределах которого он выбирается?

Да, это возможно, если использовать в правиле операторы masqueradeили , указав диапазоны портов следующим образом:snatNAT--to-ports port[-port]

--to-ports порт[-порт]

          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

В моем тестировании net.ipv4.ip_local_port_range, похоже, не оказывал на это влияния.

Применяется net.ipv4.ip_local_port_rangeк портам прослушивателя, которые должны быть доступны для прослушивания, это не имеет ничего общего с , то есть эти порты фактически SNATникогда не будут использоваться .NAT

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

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