NAT 서버는 ping ICMP 에코 응답 패킷을 사용자에게 어떻게 전달합니까?


29

NAT 는 IP 주소 포트 번호 조합을 사용하여 발신 요청을 해시합니다. 요청은 ICMP 에코 요청 패킷으로 구성 되므로 포트 번호가 없습니다. NAT 서버는 어떻게 응답을 네트워크 내부의 호스트로 전달합니까?


답변:


34

에코 (ping)와 같은 ICMP 쿼리 / 응답 유형 메시지의 경우 NAPT는 TCP 또는 UDP 포트 번호를 사용하는 것과 같은 방식으로 ICMP 쿼리 ID (때로는 ICMP ID라고도 함)를 사용합니다.

Destination Unreachable과 같은 ICMP 오류 메시지의 경우 ICMP 패킷의 프레임 헤더 내부 복사본을 사용하여 NAT 테이블에서 어떤 매핑을 변환하는 데 사용할지 파악했습니다.

이 절차는 여러 NAT 관련 RFC에서 간략히 참조되지만 절차를 명확하게 설명하는 절차를 찾기가 어려웠습니다. "전통 NAT", RFC3022 , 섹션 4.1을 참조하십시오 .

좋은 NAPT 구현에서 프로토콜은 고유하게 만들기 위해 NAT 테이블 항목에 보유 된 정보 중 하나이므로 TCP 또는 UDP 맵핑과 충돌하지 않습니다.


1
어딘가에서 인용 할 수 있습니까?
Rohit Banga

ICMP ID가 프로세스에서 사용중인 포트 번호와 충돌하면 어떻게됩니까?
Rohit Banga

@iamrohitbanga OK 추가 질문을 다루기 위해 답변을 넓혔습니다.
Spiff

0

ICMP가 충돌 할 때 발생하는 상황을 확인하기 위해 작은 시뮬레이션 (GSN3 Kali Linux CLI 어플라이언스 기반)을 수행했습니다 (분명히 벤더에 따라 다를 수 있음).

ICMP 요청 / NAT 전에 응답 (정중하게 IP를 10.0.0.1 및 10.0.0.2 포함)이 장치에서 ICMP 요청의 식별자가 동일하게되면, 상황을 표시됩니다.

ICMP 요청 / 응답 에 대해 동시에 NAT 이후 충돌 ICMP 세션의 식별자가 NAT에 의해 0으로 변경되고 그 이후부터 증가 함을 나타냅니다.

요약하면 Linux NAT는 ICMP 식별자 충돌을 처리한다고 말할 수 있습니다 (ICMP 식별자는 NAT 전에 변경되지 않기 때문에).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.