
По умолчанию цель 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
или , указав диапазоны портов следующим образом:snat
NAT
--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