
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_range
schien 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 masquerade
oder snat
Anweisungen verwenden NAT
und 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_range
gilt 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 NAT
tatsächlich nie von verwendet.
https://www.ibm.com/docs/en/filenet-p8-platform/5.5.x?topic=listener-linux