Hacker News 의견
  • 리눅스 네트워크 주소 변환(NAT)이 핑 요청을 처리하는 방법에 대한 기사
  • 서버는 고정된 주소로 고정된 ICMP 에코 요청 패킷을 보내며, 이는 반환될 것으로 예상되지 않음
  • 클라이언트가 연결하려 할 때, 서버가 보내던 "원래"의 고정 패킷을 포함한 ICMP 시간 초과 패킷을 서버로 보냄
  • 클라이언트는 인터넷의 홉처럼 행동하여 서버에게 원래 패킷이 전달되지 못했다고 알림
  • NAT 장치는 클라이언트의 전체 IP 헤더를 포함하여 ICMP 시간 초과를 NAT 뒤의 서버로 전달, 서버가 클라이언트의 IP 주소를 알 수 있게 함
  • 로컬 네트워크에서 인터넷의 장치로 핑이 보내질 때, NAT를 수행하는 라우터는 핑의 소스 주소를 공개 IP 주소로 재작성하고 ICMP 패킷의 ID 필드를 고유한 값으로 재작성
  • 라우터는 고유한 ID 값을 사용하여 응답을 로컬 네트워크의 올바른 장치로 전달
  • 게시물은 패킷 망가뜨리기, 네트워크 주소 변환, 패킷 필터링에 사용되는 Netfilter라는 도구에 대한 자료도 제공
  • 기사는 소스 코드까지 모든 추상화 계층을 깊게 파고들어 분석하는 데 대한 칭찬을 받음
  • ICMP에는 포트가 없으므로, NAT는 ICMP 에코 응답을 올바른 포트로 되돌려 보내는 문제를 처리할 필요가 없음
  • ICMP 에코 요청에는 ID가 있으며, 이는 소스 포트 번호와 사실상 동일
  • ICMP 에코의 NAT 처리는 UDP가 소스 포트를 재매핑하는 것과 유사하게 ID를 양방향으로 재매핑해야 함
  • 일부 사용자들은 시간이 지남에 따른 변경으로 인해 블로그 게시물에서 특정 코드 라인에 연결하는 것에 대한 불만을 표현
  • 일부 사용자들은 NAT를 나쁜 추상화로 비판하고 IPv4의 종료를 촉구
  • 중앙 서버 없이 UDP를 통해 핑을 이용하여 피어 투 피어 네트워킹을 위한 짧은 메시지를 보내는 가능성에 대한 추측
  • 기사는 ICMP 패킷에 ID 필드가 있고 Netfilter가 ICMP 패킷을 "특별한 경우"로 처리한다는 것을 설명하는 것으로 요약