- traceroute
-
Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства. Такими протоколами могут быть UDP, TCP, ICMP или GRE. Компьютеры с установленной операционной системой Windows используют ICMP-протокол, при этом операционные системы Linux и маршрутизаторы Cisco - протокол UDP.
Traceroute входит в поставку большинства современных сетевых операционных систем. В системах Microsoft Windows эта программа носит название tracert, а в системах GNU/Linux, Cisco IOS и Mac OS — traceroute.
Рассмотрим пример работы программы в операционной системе Windоws. Программа tracert выполняет отправку данных указанному узлу сети, при этом отображая сведения о всех промежуточных маршрутизаторах, через которые прошли данные на пути к целевому узлу. В случае проблем при доставке данных до какого-либо узла программа позволяет определить, на каком именно участке сети возникли неполадки. Здесь хочется отметить, что программа работает только в направлении от источника пакетов и является весьма грубым инструментом для выявления неполадок в сети. В силу особенностей работы протоколов маршрутизации в сети Интернет, обратные маршруты часто не совпадают с прямыми, причем это справедливо для всех промежуточных узлов в трейсе. Поэтому ICMP ответ от каждого промежуточного узла может идти своим собственным маршрутом, затеряться или прийти с большой задержкой, хотя в реальности с пакетами, которые адресованы конечному узлу, этого не происходит. Кроме того, на промежуточных маршрутизаторах часто стоит ограничение числа ответов ICMP в единицу времени, что приводит к появлению ложных потерь.
Содержание
Принцип работы traceroute
Для определения промежуточных маршрутизаторов traceroute отправляет целевому узлу серию ICMP-пакетов (по умолчанию 3 пакета), с каждым шагом увеличивая значение поля TTL («время жизни») на 1. Это поле обычно указывает максимальное количество маршрутизаторов, которое может быть пройдено пакетом. Первая серия пакетов отправляется с TTL, равным 1, и поэтому первый же маршрутизатор возвращает обратно ICMP-сообщение "time exceeded in transit", указывающее на невозможность доставки данных. Traceroute фиксирует адрес маршрутизатора, а также время между отправкой пакета и получением ответа (эти сведения выводятся на монитор компьютера). Затем traceroute повторяет отправку серии пакетов, но уже с TTL, равным 2, что заставляет первый маршрутизатор уменьшить TTL пакетов на единицу и направить их ко второму маршрутизатору. Второй маршрутизатор, получив пакеты с TTL=1, так же возвращает "time exceeded in transit".
Процесс повторяется до тех пор, пока пакет не достигнет целевого узла. При получении ответа от этого узла процесс трассировки считается завершённым.
На оконечном хосте IP-дейтаграмма с TTL = 1 не отбрасывается и не вызывает ICMP-сообщения типа срок истёк, а должна быть отдана приложению. Достижение пункта назначения определяется следующим образом: отсылаемые traceroute дейтаграммы содержат UDP-пакет с заведомо неиспользуемым номером порта на адресуемом хосте. Номер порта будет равен 33434 + (максимальное количество транзитных участков до узла) - 1. В пункте назначения UDP-модуль, получая подобные дейтаграммы, возвращает ICMP-сообщения об ошибке «порт недоступен». Таким образом, чтобы узнать о завершении работы, программе traceroute достаточно обнаружить, что поступило ICMP-сообщение об ошибке этого типа.
Пример в Windows
Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:
- Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.
- Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.
- Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.
В открывшемся окне написать:
tracert example.net
Где tracert — обращение к программе, а example.net — любой домен или IPv4 адрес.
C:\Documents and Settings\Administrator>tracert ru.wikipedia.org Трассировка маршрута к rr.esams.wikimedia.org [91.198.174.2] с максимальным числом прыжков 30: 1 1 ms <1 ms <1 ms vpn4.kras.gldn [10.10.1.14] 2 2 ms <1 ms <1 ms C7604-BRAS4-FTTB.ranetka.ru [80.255.150.41] 3 1 ms 1 ms 4 ms C76-External.ranetka.ru [80.255.128.162] 4 1 ms <1 ms <1 ms pe-l.Krasnoyarsk.gldn.net [195.239.173.37] 5 79 ms 79 ms 98 ms cat01.Stockholm.gldn.net [194.186.157.62] 6 131 ms 131 ms 132 ms ams-ix.2ge-2-1.br1-knams.wikimedia.org [195.69.145.176] 7 131 ms 131 ms 131 ms te-8-2.csw1-esams.wikimedia.org [91.198.174.254] 8 133 ms 134 ms 133 ms rr.esams.wikimedia.org [91.198.174.2] Трассировка завершена.
Пример в Linux
В UNIX/Linux системах существуют режимы, в которых запуск программы возможен только от имени суперпользователя root (администратора). К числу этих режимов относится важный режим трассировки с помощью ICMP (ключ
-I
).Во всех остальных случаях, traceroute может работать от имени обычного рядового пользователя. При этом, параметры по умолчанию различаются от дистрибутива к дистрибутиву, хотя в справке традиционно пишется ключ
-U
(UDP) в качестве такового. В отдельных RedHat-based дистрибутивах фактически в качестве умолчания используется-I
, поэтому в случае, если команда из следующего примера выдаст сообщение о недостатке прав, попробуйте явно указать ключ-U
.Проблемы с firewall-ами
Часто встречается заблуждение, что traceroute, как и ping, работает только по протоколу ICMP. В связи с этим начинающие администраторы, разрешив в файерволе протокол ICMP, получают рабочий ping и нерабочий traceroute. Для исправления такой ситуации необходимо дополнительно разрешить в файерволе UDP-пакеты на порты выше 33434 (в некоторых источниках указано, что достаточно указать диапазон портов от 33434 до 33534).
Альтернативы и дополнения к traceroute
- tracepath — похожая на traceroute программа, но может строить асимметричные трассы и имеет некоторые другие отличия.
- mtr — Интерактивная программа, способная постоянно выводить обновлённую статистику по трассе.
- tracemap — программа, позволяющая выполнять трассировку пути на несколько хостов сразу и представить полученные данные в виде графической карты.
- tcptraceroute (tracetcp) — аналогичная traceroute программа, но предназначена для диагностики TCP соединений; вместо UDP-пакетов использует TCP-пакеты открытия соединения (SYN|ACK) с указанным сервисом (по умолчанию — web-сервер, порт 80) интересующего хоста; в результате получаем информацию о времени прохождения данного вида TCP-пакетов через маршрутизаторы и информацию о доступности сервиса на интересующем хосте, либо, в случае проблем с доставкой пакетов — видим, в каком месте трассы они возникли.
См. также
Ссылки
- tracemap — программа, позволяющая выполнять трассировку пути на несколько хостов сразу и представить полученные данные в виде графической карты.
- traceroute.org — трассировка из разных точек мира он-лайн.
- trace.die.net
- Онлайн трасировка сразу из нескольких точек — Точки рассположены в Голандии, Гонк-Конге, США, Хорватии, Украине, Малайзии, России, Индии, Турции.
Команды Unix POSIX.1-2008 Утилиты POSIX.1-2008 admin • alias • ar • asa • at • awk • basename • batch • bc • bg • c99 • cal • cat • cd • cflow • chgrp • chmod • chown • cksum • cmp • comm • command • compress • cp • crontab • csplit • ctags • cut • cxref • date • dd • delta • df • diff • dirname • du • echo • ed • env • ex • expand • expr • false • fc • fg • file • find • fold • fort77 • fuser • gencat • get • getconf • getopts • grep • hash • head • iconv • id • ipcrm • ipcs • jobs • join • kill • lex • link • ln • locale • localedef • logger • logname • lp • ls • m4 • mailx • make • man • mesg • mkdir • mkfifo • more • mv • newgrp • nice • nl • nm • nohup • od • paste • patch • pathchk • pax • pr • printf • prs • ps • pwd • qalter • qdel • qhold • qmove • qmsg • qrerun • qrls • qselect • qsig • qstat • qsub • read • renice • rm • rmdel • rmdir • sact • sccs • sed • sh • sleep • sort • split • strings • strip • stty • tabs • tail • talk • tee • test • time • touch • tput • tr • true • tsort • tty • type • ulimit • umask • unalias • uname • uncompress • unexpand • unget • uniq • unlink • uucp • uudecode • uuencode • uustat • uux • val • vi • wait • wc • what • who • write • xargs • yacc • zcat GNU Coreutils Файловые утилиты chgrp • chown • chmod • cp • dd • df • dir • dircolors • install • ln • ls • mkdir • mkfifo • mknod • mv • rm • rmdir • shred • sync • touch • vdir Текстовые утилиты cat • cksum • comm • csplit • cut • expand • fmt • fold • head • join • md5sum • nl • od • paste • ptx • pr • sha1sum • sort • split • sum • tac • tail • tr • tsort • unexpand • uniq • wc Shell-утилиты basename • chroot • date • dirname • du • echo • env • expr • factor • false • groups • hostid • id • link • logname • nice • nohup • pathchk • pinky • printenv • printf • pwd • readlink • seq • sleep • stat • stty • tee • test • true • tty • uname • unlink • users • who • whoami • yes Категории:- TCP/IP
- UNIX
- Системное программное обеспечение
- Управление компьютерной сетью
Wikimedia Foundation. 2010.