본문 바로가기
서버,보안

Traceroute (Tracert) 동작원리와 옵션들

by 세이박스 2008. 10. 21.
반응형
1. 동작원리

목적지까지 찾아가는 경로를 파악할 수 있음. 그러나 귀환경로를 알려주는 것은 아님. 즉, 목적지에서 출발지로 traceroute 하면 경로가 다를 수 있다.

Win95/98/NT/2K/XP에서는 tracert를 이용. Unix/Linux에서는 traceroute를 이용. (traceroute는 UDP, tracert는 ICMP를 사용) Sam Spade, VisualRoute를 이용하면 보다 시각적으로 결과를 알 수 있음.

Traceroute의 동작원리는 다음과 같음
1.1.1.1에서 목적지 10.10.10.10에 대해 TTL=1인 ICMP echo request를 생성/전달 (기본적으로 3개의 UDP 패킷을 보냄)
첫번째 IP네트웍장비가 TTL을 1을 감소시키고 TTL=0이 되므로 TTL이 모자라 더 이상 packet을 전달할 수 없다는 ICMP time exceeded를 1.1.1.1에게 전달
1.1.1.1에서는 이 ICMP time exceeded를 보고 목적지까지 가는 경로상의 첫번째 장비 ip address와 delay를 알아냄.
1.1.1.1에서 TTL=2인 ICMP echo request를 던짐. 목적지까지 가는 경로상의 두번째 장비가 ICMP time exceeded를 발생시키고 1.1.1.1에서는 이것으로 두번째 장비까지의 delay를 알아냄.
이것이 목적지까지 계속됨

2. * timeout

종종 목적지 중간경로에 있는 장비에서 timeout 현상(별표 *가 나타나는 현상)이 발생하는데 이것이 source와 destination간의 네트웍상태를 정확히 알려주는 것은 아님.

몇몇 IP네트웍장비에서는 ICMP packet이 아닌 다른 일반적인 packet에 보다 많은 시간을 할애하도록 설계된 경우가 있는데 해당 IP네트웍장비가 매우 바쁠경우에는 TTL=0인 packet에 대해서 ICMP time exceed등을 생성/전달하지 않는 경우가 많음. 또는 ICMP 메시지의 우선순위가 매우 낮아서 적절한 시간내에 돌아오지 않는 경우도 있음.

다른 경우는 중간경로에 있는 IP네트웍장비가 아예 ICMP echo reply 혹은 ICMP time exceeded를 발생하지 않는(막는) 경우인데 주로 이러한 장비들은 Firewall 인 경우가 많음. 그러나 Firewall이라고 해서 ICMP echo reply, ICMP time exceed를 생성하지 않는 것은 아니며, 관리자의 설정에 따라 좌우됨. 또한 몇몇 오래된 라우터는 TTL 값이 0 임에도 불구하고 패킷을 계속 전달하는 경우도 있음.

이러한 이유로 traceroute 수행시 중간경로상의 timeout 현상에 대해서는 무시해도 좋으며, 최종목적지와 ping의 상태가 좋은지를 파악하는 것이 보다 중요함.


3. no resolve

traceroute 의 수행상태가 매우 늦게 보여질 때 그 이유는?
source에서 기본적으로 reverse domain name을 점검하기 때문
따라서 noresolve 를 지정하면 결과가 보다 빠르게 보여짐

예)
traceroute –n 164.124.116.4 // UNIX
tracert –d 164.124.116.4 // Windows
[ unix : /usr/sbin ] traceroute 211.169.248.190
traceroute to 211.169.248.190 (211.169.248.190), 30 hops max, 40 byte packets
1 ysnacb81-e4-0.rt.dacom.net (164.124.102.3) 3 ms 1 ms 1 ms
2 211.60.241.2 (211.60.241.2) 1 ms 1 ms 1 ms
3 ysng12bb2-pos7-0.rt.bora.net (210.120.255.117) 1 ms 1 ms 2 ms
4 kidcg5-pos9-0.rt.bora.net (210.120.192.198) 2 ms 3 ms 1 ms
5 kidcg6-ge8-0.rt.bora.net (210.92.194.238) 1 ms 1 ms 1 ms
6 211.169.248.254 (211.169.248.254) 1 ms 1 ms 1 ms
7 211.169.248.216 (211.169.248.216) 2 ms 2 ms 2 ms
8 211.169.248.190 (211.169.248.190) 2 ms 2 ms 1 ms

[ win: /usr/sbin ] traceroute -n 211.169.248.190
traceroute to 211.169.248.190 (211.169.248.190), 30 hops max, 40 byte packets
1 164.124.102.3 3 ms 1 ms 1 ms
2 211.60.241.2 1 ms 1 ms 1 ms
3 210.120.255.117 1 ms 1 ms 1 ms
4 210.120.192.198 1 ms 1 ms 1 ms
5 210.92.194.238 1 ms 1 ms 1 ms
6 211.169.248.254 1 ms 1 ms 1 ms
7 211.169.248.216 2 ms 2 ms 2 ms
8 211.169.248.190 1 ms 1 ms 1 ms

4. !
몇 가지 라우팅 문제가 있을 수 있다.
어떤 경우 traceroute는 행의 끝에 느낌표와 한 개의 문자 형식으로 된 추가 메시지를 덧붙인다.

!H, !N, !P 는 각각 호스트, 네트웍, 프로토콜에 도달하지 못했음을 나타냄.
!F 는 패킷 분할이 필요함. !S 는 소스 라우팅 실패를 나타냄.

sol:/hosting/elca% traceroute 210.116.117.100
traceroute 210.116.117.100
traceroute to 210.116.117.100 (210.116.117.100), 30 hops max, 40 byte packets
1 210.116.105.126 (210.116.105.126) 1 ms 1 ms 1 ms
2 203.231.224.246 (203.231.224.246) 1 ms 1 ms 1 ms
3 203.231.224.190 (203.231.224.190) 1 ms !H * 1 ms !H

5. Traceroute Options

-m : Set maximum TTL (default 30)
TTL 필드는 8비트 숫자로 되어 있어 255개 까지 홉을 지정할 수 있다.
대부분의 traceroute 구현은 30개 까지의 홉을 시도하고 중단한다.

-n : Report IP addresses only (not hostnames)

-q : Set the number of queries at each TTL (default 3)
보통 traceroute는 각 TTL 값에 3개의 검사용 패킷을 보내는 데 -q 옵션으로 한 집합 당 패킷의 개수를 변경할 수 있다.

-v : Verbose. 더 많은 정보(Source 주소 및 패킷 크기)를 보여준다.

-w : Set timeout for replies (default 5 sec)

-A : Report AS# at each hop

* 위의 옵션은 Unix (Solaris)를 기준으로 한 것임. Linux나 Windows의 경우 다른 옵션을 가지고 있음.
반응형