
預設情況下,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
orsnat
語句NAT
指定連接埠範圍,如下所示--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
在我的測試中 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