デフォルトでは、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]
--ポートポート[-ポート]
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