
기본적으로 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-포트 포트[-포트]
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