Wie werden Quellports für iptables SNAT-Ziele ausgewählt?

Wie werden Quellports für iptables SNAT-Ziele ausgewählt?

Standardmäßig behält das SNAT-Ziel den Quellport des ursprünglichen Pakets. Wenn dieser Port bereits verwendet wird, wählt es einen zufällig aus. Gibt es eine Möglichkeit, die Auswahl dieses Ports zu beeinflussen oder den Bereich zu messen, innerhalb dessen er ausgewählt wird? Bei meinen Tests net.ipv4.ip_local_port_rangeschien dies keinen Einfluss darauf zu haben. Ich frage mich, ob es dafür eine andere Einstellung gibt.

Antwort1

Standardmäßig behält das SNAT-Ziel den Quellport des Originalpakets bei. Wenn dieser Port bereits verwendet wird, wird ein anderer nach dem Zufallsprinzip ausgewählt.

Es wird standardmäßig nicht zufällig ausgewählt, sondern der folgende Algorithmus ist der Standard
(der fettgedruckte Teil bestätigt jedoch Ihre Aussage, dass der ursprüngliche Port beibehalten wird):

Wenn kein Portbereich angegeben ist, werden Quellports unter 512 anderen Ports unter 512 zugeordnet: diejenigen zwischen 512 und 1023 einschließlich werden Ports unter 1024 zugeordnet und andere Ports werden 1024 oder höher zugeordnet.Es werden, soweit möglich, keine Portänderungen vorgenommen.

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

Gibt es eine Möglichkeit, die Wahl dieses Ports zu beeinflussen oder den Bereich einzuschätzen, innerhalb dessen er gewählt wird?

Ja, das ist möglich, indem Sie in Ihrer Regel entweder masqueradeoder snatAnweisungen verwenden NATund die Portbereiche wie folgt angeben--to-ports port[-port]

--to-ports port[-Port]

          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

In meinen Tests schien net.ipv4.ip_local_port_range darauf keinen Einfluss zu haben.

Dies net.ipv4.ip_local_port_rangegilt für Listener-Ports, die zum Abhören verfügbar sein müssen. Es hat nichts mit zu tun SNAT, d. h. diese Ports werden NATtatsächlich nie von verwendet.

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

verwandte Informationen