Программа traceroute: отслеживание IP-пакетов
Категория: Управление сетями | Автор: admin | 5-06-2010, 19:03 | Просмотров: 11284

Программа traceroute, которую написал Ван Джейкобсон (Van Jacobson), позволяет установить последовательность шлюзов, через которые проходит IP-пакет на пути к пункту своего назначения. Почти все современные операционные системы содержат ту или иную версию данной программы.

Синтаксис ее вызова таков:

traceroute имя_компыотера

 

У этой программы очень много опций, большинство из которых в повседневной работе не применяется. Как обычно, имя_компьютера может быть задано в символической или числовой форме. Выходная информация — это список узлов начиная с первого шлюза и заканчивая пунктом назначения.

Например, на нашем компьютере jaguar команда traceroute drevil дает следующие результаты:

% traceroute drevil

traceroute to drevil  (192.225.55.137),  30 hops max,  38 byte packets 1    xor-gw2   (192.108.21.254)    0.840 ms    0.693 ms    0.671 ms

2    xor-gw4  (192.225.56.10)    4.642 ms    4.582 ms    4.674 ms

3    drevil  (192.225.55.137)    7.959 ms    5.949 ms    5.908 ms

 

 

Эта информация говорит о том, что для попадания с компьютера jaguar на компьютер drevil пакеты должны пройти два наших внутренних шлюза. Кроме того, показано время полного обхода для каждого шлюза — проведено по три замера. Обычно количество переходов от одного узла Internet к другому составляет от 10 до 12.

Программа traceroute осуществляет запись искусственно заниженного значения в поле TTL (Time То Live — время жизни, или предельное число переходов) исходящего пакета. Когда пакет приходит на очередной шлюз, его значение TTL уменьшается на единицу. Если шлюз обнаруживает, что значение TTL стало равным нулю, он удаляет пакет и возвращает узлу-отправителю специальное ICMP-сообщение.

Для первых нескольких пакетов программа traceroute задает значение TTL равным 1. Первый же шлюз, получивший пакет (в нашем примере это xor-gw2), обнаруживает, что его время жизни истекло. Тогда он отбрасывает пакет и посылает компьютеру jaguar ICMP-сообщение, в поле отправителя которого указывается IP-адрес шлюза. Программа traceroute обращается к службе DNS и по имеющемуся адресу находит имя шлюза.

 

Для получения данных о следующем шлюзе посылается очередная группа пакетов, поле TTL которых равно 2. Первый шлюз маршрутизирует эти пакеты и уменьшает значение TTL на единицу. Второй шлюз удаляет пакеты и генерирует описанное выше ICMP-сообщение. Этот процесс продолжается до тех пор, пока пакеты не достигнут требуемого компьютера; значение TTL при этом будет равно числу переходов.

Большинство маршрутизаторов посылает свои ICMP-сообщения через тот интерфейс, который является "ближайшим" к узлу-отправителю. Если, наоборот, запустить программу traceroute на машине-получателе, чтобы узнать маршрут к исходному компьютеру, то, скорее всего, будет выдан другой список IP-адресов, соответствующий тому же набору маршрутизаторов.

Программа traceroute посылает для каждого значения TTL три пакета, что иногда приводит к неожиданным результатам. Если промежуточный шлюз распределяет трафик по нескольким маршрутам, то эти пакеты могут возвращаться разными компьютерами. В таком случае программа traceroute сообщает обо всех полученных ответах.

Рассмотрим интересный пример, в котором посредством программы traceroute определяется маршрут с компьютера в домене colorado.edu к домену xor.com:

rupertsberg% traceroute xor.com

traceroute: Warning: xor.com has multiple addresses; using 192.225.33.1 traceroute to xor.com (192.225.33.1),  30 hops max,  40 byte packets

1 cs-gw3-faculty.cs.colorado.edu (128.138.236.3)  1.362 ms  2.144 ms 2.76 ms

2 cs-gw-dmz.cs.colorado.edu (128.138.243.193)  2.720 ms  4.378 ms   5.052 ms

3 engr-cs.Colorado.EDU (128.138.80.141)    5.587 ms   2.454 ms   2.773 ms

4 hut-engr.Colorado.EDU (128.138.80.201)    2.743 ms   5.643 ms   2.772 ms

5 cuatm-gw.Colorado.EDU (128.138.80.2)    5.587 ms   2.784 ms   2.777 ms

6 204.131.62.6  (204.131.62.6)    5.585 ms    3.464 ms    2.761 ms

7 border-from-BRAN.coop.net (199.45.134.81)   5.593 ms   6.433 ms   5.521 ms

8 core-gw-eth-2-5.coop.net  (199.45.137.14)    53.806 ms    *    19.202 ms

9 xor.com (192.225.33.1)    16.838 ms    15.972 ms    11.204 ms

 

 

Мы видим, что пакеты, прежде чем покинуть домен colorado.edu, проходят пять внутренних шлюзов (от cs-gw3-faculty до cuatm-gw). На следующем переходе пакеты попадают в шлюз с адресом 204.131.62.6, который не имеет DNS-имени. Затем, после двух переходов в домене coop.net, они оказываются в домене xor.com.

На восьмом переходе вместо одного из значений времени обхода отображается звездочка. Это означает, что на какой-то из отправленных пакетов не был получен ответ. Такая ситуация может быть вызвана перегрузкой сети, но это не единственное возможное объяснение. Программа traceroute использует низкоприоритетные ICMP-пакеты, которые отбрасываются многими маршрутизаторами, отдающими предпочтение "реальному" трафику. Появление нескольких звездочек в выводе программы traceroute не является причиной для беспокойства.

Если для конкретного шлюза отображаются все три звездочки, это означает, что от него не было получено ни одного сообщения. Вероятнее всего, шлюз просто выключен. Правда, иногда шлюз конфигурируют таким образом, чтобы он молча отбрасывал устаревшие пакеты. В этом случае пакеты благополучно перейдут на следующий шлюз. Другой возможной причиной появления звездочек может быть то, что ответные пакеты шлюза возвращаются слишком долго и программа traceroute перестает ожидать их прибытия.

Некоторые брандмауэры полностью блокируют передачу ICMP-сообщений о пакетах с истекшим временем жизни. Если маршрут пролегает через один из таких брандмауэров, программа не сможет получить информацию о шлюзах, находящихся за ним. Однако она узнает общее число переходов до пункта назначения, так как отправляемые эхо-пакеты в конце концов пройдут весь маршрут. Некоторые брандмауэры могут также блокировать исходящие UDP-пакеты, которые программа traceroute посылает для инициирования ICMP-ответов. В этой ситуации программа не выдаст никакой полезной информации.

Медленная передача данных не всегда свидетельствует о неисправности сети. Некоторые сети действительно имеют большую задержку. Медлительность может быть также следствием перегрузки передающих сетей, особенно если в них используется технология CSMA/CD (Carrier Sense Multiple Access with Collision Detection — множественный доступ с контролем несущей и обнаружением конфликтов). В таких сетях (например, в Ethernet) производятся многократные повторные попытки передачи пакета. Определить это можно по нелогичному значению времени полного обхода, так как коллизии (конфликты) увеличивают случайную составляющую поведения сети.

Иногда можно увидеть символы !N вместо значения времени. Это говорит о том, что соответствующий шлюз вернул сообщение о "недостижимости" сети, т.е. ему не известно, куда посылать пакет. Сообщения о "недостижимости" узла или протокола помечаются как !H или !Р соответственно. Шлюз, от которого получено одно из указанных сообщений, является последним в маршруте и обычно имеет проблемы с маршрутизацией (возможно, они вызваны разрывом связи): либо его статические маршруты заданы неверно, либо протоколы динамической маршрутизации не могут определить верный маршрут для передачи пакета получателю.

Если программа traceroute не работает (или работает слишком медленно), это может быть вызвано превышением периода тайм-аута при попытках узнать имя компьютера посредством службы DNS. Если на том компьютере, с которого производится трассировка, не функционирует DNS, воспользуйтесь командой traceroute -n. Она будет выводить только IP-адреса шлюзов.



 (голосов: 3)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page