트래픽을 차단하는 항목이 없으면 traceroute
일반적으로 대상 IP를 마지막 홉으로 사용하여 종료됩니다. (이 경우 10.1.1.10)
보통은 traceroute
이렇겠죠.
user@linux:~$ traceroute 10.1.1.10
traceroute to 10.1.1.10 (10.1.1.10), 30 hops max, 60 byte packets
1 10.2.8.2 (10.2.8.2) 0.572 ms 0.692 ms 0.837 ms
2 10.1.9.50 (10.1.9.50) 202.638 ms 10.1.9.78 (10.1.9.78) 202.547 ms 10.1.9.50 (10.1.9.50) 202.139 ms
3 10.1.4.9 (10.1.4.9) 202.508 ms 202.483 ms 10.1.4.13 (10.1.4.13) 204.149 ms
4 10.1.1.10 (10.1.1.10) 202.133 ms 202.100 ms 202.692 ms
user@linux:~$
최근 출력에 추가 홉(10.1.1.9)이 있는 문제가 발생했습니다 traceroute
(홉 5 참조).
소스 IP 주소: 10.2.8.8
user@linux:~$ ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.2.8.8 netmask 255.255.255.0 broadcast 10.2.8.255
user@linux:~$
대상 IP 주소: 10.1.1.10
추가 홉: 10.1.1.9 ???
user@linux:~$ traceroute 10.1.1.10
traceroute to 10.1.1.10 (10.1.1.10), 30 hops max, 60 byte packets
1 10.2.8.2 (10.2.8.2) 0.572 ms 0.692 ms 0.837 ms
2 10.1.9.50 (10.1.9.50) 202.638 ms 10.1.9.78 (10.1.9.78) 202.547 ms 10.1.9.50 (10.1.9.50) 202.139 ms
3 10.1.4.9 (10.1.4.9) 202.508 ms 202.483 ms 10.1.4.13 (10.1.4.13) 204.149 ms
4 10.1.1.10 (10.1.1.10) 202.133 ms 202.100 ms 202.692 ms
5 10.1.1.9 (10.1.1.9) 6201.720 ms !H * *
user@linux:~$
그리고 홉 2, 3을 보면 추가 IP 주소(10.1.9.78 & 10.1.9.50)가 있습니다.
왜 이런 일이 일어났나요? 나는 전에 이런 것을 본 적이 없습니다.
서버 구성 때문일까요?
답변1
traceroute
순차적으로 증가하는 TTL(Time-to-Live) 필드를 사용하여 UDP 또는 ICMP 에코 패킷을 전송하여 작동합니다. TTL은 패킷을 처리하는 각 라우터에 의해 1씩 감소됩니다.
프로브에 대한 두 가지 유형의 응답을 기대합니다.
- 라우터가 TTL을 감소시킬 때 TTL이 0에 도달하면 ICMP Time-Exceeded 메시지로 응답하고 패킷을 전달하지 않습니다.
- 최종 목적지는 ICMP Port-Unreachable 메시지(UDP의 경우) 또는 ICMP Echo-Response 메시지(ICMP의 경우)로 응답합니다.
두 번째 유형을 수신하면 대상에 도달했음을 알고 더 높은 TTL을 사용하여 프로브 전송을 중지합니다. 참고하세요그렇지 않다응답이 오는 주소에 따라 이 결정을 내립니다. 대상 주소에서 시간 초과 메시지를 받으면 계속해서 증가합니다.
따라서 추적에서는 라우터가 Time-Exceeded 및 대상 주소를 소스로 응답했음을 나타냅니다. 이는 아마도 NAT를 수행하는 라우터이고 대상 주소는 그 뒤에 있는 개인 주소에 해당하는 공용 주소임을 의미합니다.
그런데 이상한 점은 최종 응답이 A로부터 나왔다는 것입니다.다른주소. 일반적으로 응답이 라우터를 통해 되돌아갈 것으로 예상하므로 해당 개인 IP는 공용 IP로 다시 변환됩니다. 이 경우 주소가 10.1.1.10인 두 개의 행이 표시됩니다.
분명히 이 경우에는 10.1.1.9에서 원래 머신까지의 경로가 NAT 라우터를 통과할 필요가 없으므로 주소가 변환되지 않습니다. 비대칭 라우팅은 종종 비정상적인 traceroute
결과를 생성할 수 있습니다. 이 경우 모든 시스템은 10.0.0.0/8 개인 주소 공간 내에 있으므로 직접 경로를 사용할 수 있다는 것은 전혀 놀라운 일이 아닙니다.
답변2
라우터의 구성을 모르면 확신할 수 있는 방법이 없습니다. 그러나 가능한 이유는 대상 NAT(역방향 NAT라고도 함) 또는 포트 전달(이 경우에는 노출된 호스트) 때문일 수 있습니다.
10.1.1.10 라우터는 전달/DNAT로 구성될 수 있습니다.모든 것개인 IP의 요청을 포함하여 10.1.1.9 호스트(=노출된 호스트)로 전송됩니다. 공용 IP에서는 실제 대상 10.1.1.9가 NAT 라우터에 의해 숨겨지기 때문에 이중 마지막 홉이 표시됩니다. 이 경우 요청만 DNATed되고 응답은 있는 그대로 전달될 수 있습니다.
10.1.1.10과 10.1.1.9가 모두 다른 곳에서 DNATed되고 후자가 기본 응답 주소일 수도 있습니다. 이는 RTT의 큰 증가를 설명합니다.
답변3
시간에 주의를 기울이십시오. Traceroute는 스위치나 라우터에 "처리 중"이라는 응답으로 소스에 응답하도록 요청하는 패킷을 보냅니다. 그러나 이 패킷은 TTL 및 응답 시간 구성에 따라 다양한 순서로 대상(이 예에서는 시스템)을 가져올 수 있으며, 사이의 장치 구성, 라우팅 테이블 및 네트워크 토폴로지에 따라 달라집니다.