Traceroute guide

Как сделать трассировку?

Для этого вам понадобится служебная программа (утилита) traceroute. Принцип ее действия прост: программа посылает в проблемном направлении информационный сигнал – пакет данных, получая ответ от каждого из узлов – своеобразное информационное эхо. Таким образом, можно замерить время прохождения сигнала от одного узла к другому, без труда выявив «слабое звено».

Не нужно бросаться искать, где бы скачать такую полезную вещь: утилита traceroute уже встроена в вашу операционную систему. Для ее запуска служит команда tracert. Итак, что вам необходимо сделать:

  1. Вызываем командную строку. Для этого:
    • Нажимаем кнопку пуск на экране либо клавишу win на клавиатуре (клавиша win на стандартной клавиатуре находится между Alt и Control, на ней изображен всемирно известный логотип всеми любимой операционной системы Windows);
    • В появившемся меню (стартовом меню) выбираем пункт «выполнить». Команда «выполнить» позволяет задействовать служебные программы системы Windows, спрятанные подальше от рук любопытных пользователей, так как неумелое пользование некоторыми программами может нанести вред работе операционной системе и хранящимся на компьютере данным. Своего рода «защита от дурака». Но мы уж точно не дураки, поэтому продолжаем;
    • В появившейся после выбора «выполнить» строке вводим вручную латинским шрифтом cmd и нажимаем Ok. Командная строка вызвана.

Справка: быстро вызвать строку «выполнить» можно нажав на клавиатуре комбинацию win+r. После чего можно ввести cmd.

  1. В командную строку вводим команду tracert имя или IP сайта (с подсоединением к которому возникли проблемы). Например, tracert ru.
  2. Ожидаем результат. В результате мы увидим несколько строк (до 30), каждая из которых – узел, через который проходит информация. В строке будет написано имя или IP узла и время прохождения сигнала в миллисекундах (ms – тысячная доля секунды).

Выше описанное актуально для операционной системы Windows, а как выполняется трассировка маршрута под Linux? В общих чертах аналогично, только терминал (аналог командной строки) вместо cmd вызывается сочетанием клавиш Ctrl+Alt+t, а вместо tracert вводим traceroute. Стоит также отметить, что трассировка в Linux будет продолжаться, пока пользователь не прервет ее сам, нажав ctrl+c.

Что нам даст результат? Чем больше время прохождения пакета, тем больше сайт «тормозит», таким образом, мы выявим узел, виновный в «тормозах». Непроходимый же узел будет обозначен надписью «Превышен интервал ожидания маршрута». Чем выше в списке проблемная строка, тем более локальна проблема. «Непроходимость» внизу списка указывает на проблемы с сайтом или доменом, а вверху – у вашего провайдера либо в локальной сети.

Примечания

  • Диагностическое средство, предназначенное для определения маршрута до точки назначения с
    помощью посылки в точку назначения эхо-запросов протокола Internet Control Message Protocol
    (ICMP) с различными значениями срока жизни (TTL, Time-To-Live). Каждый маршрутизатор, через
    который проходит путь, обязан перед дальнейшей пересылкой пакета уменьшить значение его поля
    TTL по меньшей мере на 1. Фактически, TTL счетчик узлов. Предполагается, что когда параметр
    TTL становится равен 0, маршрутизатор посылает системе-источнику сообщение ICMP об истечении
    времени. Команда tracert определяет маршрут, посылая первый эхо-запрос с полем TTL, равным 1,
    и увеличивая значение этого поля на единицу для каждого последующего отправляемого эхо-пакета
    до тех пор, пока конечный узел не ответит или пока не будет достигнуто максимальное значение
    поля TTL. Максимальное количество переходов по умолчанию равно 30 и может быть изменено с
    помощью параметра -h. Путь определяется из анализа сообщений ICMP об истечении
    времени, полученных от промежуточных маршрутизаторов, и это-ответов точки назначения. Однако
    некоторые маршрутизаторы не посылают сообщений об истечении времени для пакетов с нулевыми
    значениями TTL и не видны для команды tracert. В этом случае для перехода отображается ряд
    звездочек (*).
  • Чтобы выполнить трассировку маршрута, вывести значение задержки распространения по сети и
    потерь пакета на каждом маршрутизаторе и узле в пути, используйте команду pathping.
  • Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения
    в качестве компонента установлен протокол Интернета
    (TCP/IP)
    .

Реализации

Команда доступна на многих современных операционных системах . В Unix-подобных системах, таких как FreeBSD , macOS и Linux, он доступен как инструмент командной строки. Traceroute также доступен графически в macOS из пакета сетевых утилит .

Microsoft Windows и ReactOS предоставляют программу с именем, которая выполняет ту же функцию отслеживания маршрута. Операционные системы на базе Windows NT также предоставляют PathPing с аналогичными функциями. Версия ReactOS была разработана Гедом Мерфи и находится под лицензией GPL .

В Unix-подобных операционных системах traceroute по умолчанию отправляет последовательность пакетов протокола пользовательских дейтаграмм (UDP) с номерами портов назначения в диапазоне от 33434 до 33534; реализации traceroute, поставляемые с Linux , FreeBSD , NetBSD , OpenBSD , DragonFly BSD и macOS, включают возможность использования пакетов эхо-запроса ICMP ( -I ) или любого произвольного протокола ( -P ), такого как UDP, TCP с использованием пакетов TCP SYN , или ICMP.

В Windows tracert отправляет пакеты ICMP Echo Request, а не UDP-пакеты, которые traceroute отправляет по умолчанию.

Значение времени жизни (TTL), также известное как предел перехода , используется при определении промежуточных маршрутизаторов, которые проходят по направлению к месту назначения. Traceroute отправляет пакеты со значениями TTL, которые постепенно увеличиваются от пакета к пакету, начиная со значения TTL, равного единице. Маршрутизаторы уменьшают значения TTL пакетов на единицу при маршрутизации и отбрасывают пакеты, значение TTL которых достигло нуля, возвращая сообщение об ошибке ICMP ICMP Time Exceeded . Для первого набора пакетов первый маршрутизатор получает пакет, уменьшает значение TTL и отбрасывает пакет, поскольку тогда он имеет нулевое значение TTL. Маршрутизатор отправляет сообщение ICMP Time Exceeded обратно источнику. Следующему набору пакетов присваивается значение TTL, равное двум, поэтому первый маршрутизатор пересылает пакеты, но второй маршрутизатор отбрасывает их и отвечает ICMP Time Exceeded. Действуя таким образом, traceroute использует возвращенные сообщения ICMP Time Exceeded для создания списка маршрутизаторов, которые проходят пакеты, пока пункт назначения не будет достигнут, и возвращает сообщение ICMP Destination Unreachable, если используются пакеты UDP, или сообщение ICMP Echo Reply, если ICMP Echo сообщения используются.

Значения отметок времени, возвращаемые для каждого маршрутизатора на пути, представляют собой значения задержки ( задержки ), обычно измеряемые в миллисекундах для каждого пакета.

Отправитель ожидает ответа в течение указанного количества секунд. Если пакет не подтвержден в течение ожидаемого интервала, отображается звездочка. Интернет-протокол не требует, чтобы пакеты шли по одному и тому же маршруту к определенному месту назначения, поэтому перечисленные хосты могут быть хостами, которые прошли другие пакеты. Если узел на узле №N не отвечает, переход пропускается в выходных данных.

Если сеть имеет брандмауэр и работает как с Windows, так и с Unix-подобными системами, для работы traceroute и приема ответов через межсетевой экран необходимо включить более одного протокола.

Некоторые реализации traceroute используют TCP-пакеты, например tcptraceroute и traceroute четвертого уровня (lft). PathPing — это утилита, представленная в Windows NT, которая сочетает в себе функции ping и traceroute. MTR — это расширенная версия ICMP traceroute, доступная для Unix-подобных систем и Windows. Все различные реализации traceroute полагаются на пакеты ICMP Time Exceeded (тип 11), отправляемые источнику.

В Linux tracepath — это утилита, похожая на traceroute, с той лишь разницей, что не требует прав суперпользователя .

Реализация traceroute в Cisco также использует последовательность дейтаграмм UDP , каждая с увеличивающимся значением TTL , до недопустимого номера порта на удаленном хосте; по умолчанию используется UDP-порт 33434. Расширенная версия этой команды (известная как расширенная команда traceroute ) может изменять номер порта назначения, используемый для зондирующих сообщений UDP.

Примеры, переключатели и многое другое

Команда tracert – это команда командной строки, которая используется для отображения нескольких сведений о пути, который проходит пакет с компьютера или устройства, на котором вы находитесь, в любое указанное вами место назначения.

Tracert, как объясняется ниже, относится только к Windows, но команда traceroute доступна и для Linux.

Наличие команды Tracert

Команда tracert доступна из командной строки во всех операционных системах Windows, включая Windows 10, Windows 8, Windows 7, Windows Vista, Windows XP и более ранние версии Windows.

Доступность некоторых командных переключателей tracert и другого синтаксиса команд tracert может отличаться в зависимости от операционной системы.

Синтаксис команды Tracert

tracert target [ /? ]

См. Как читать командный синтаксис, если вам сложно понять синтаксис tracert, как это показано выше или объяснено в таблице ниже.

Существуют и другие, менее часто используемые опции для команды tracert, включая , и . Используйте переключатель справки с командой tracert для получения дополнительной информации об этих параметрах.

Сохраните длинные результаты команды tracert в файл с оператором перенаправления. Для получения справки ознакомьтесь с разделом Как перенаправить вывод команды в файл или ознакомьтесь с советами по использованию командной строки, а также другими полезными советами.

Примеры команд Tracert

В приведенном выше примере команда tracert используется для отображения пути от сетевого компьютера, на котором команда tracert выполняется сетевым устройством, в данном случае – маршрутизатором в локальной сети, которому назначен 192.168. 1.1 IP-адрес.

Результат, отображаемый на экране, будет выглядеть примерно так:

Хмель с 4 по 12 был исключен выше просто для простоты примера.Если вы выполняете настоящий tracert, все эти результаты будут отображаться на экране.

Как вы можете видеть, tracert на этот раз не разрешил имена хостов, что значительно ускорило процесс.

Вот несколько примеров результатов этой последней команды:

Tracert Связанные команды

Команда tracert часто используется с другими командами командной строки, такими как ping, ipconfig, netstat, nslookup и другими.

Команда pathping похожа на tracert, но также показывает задержку в сети и информацию о потерях.

Параметры Tracert

Если выполнить команду tracert без указания веб-ресурса, в консоли отобразится справочная информация о параметрах запуска или, как их называют, ключах приложения.

Ключи пишутся через пробел после команды перед именем веб-узла, если в стандартных настройках нужно что-то изменить. Например:

Tracert –w 1000 yandex.ru, что означает: провести трассировку маршрута к yandex.ru с таймаутом ответов в 1000 ms.

Ниже приведен список параметров с их значениями.

-dНе выводить имена сетевых узлов, только IP (сокращает время трассировки).-hОграничить количество прыжков заданным числом.-jВ сетях IPv4: свободный выбор маршрута по списку веб-узлов, приведенных после ключа.-wУстановить таймаут ответов в миллисекундах.-RТрассировка пути в IPv6.-SВ IPv6: трассировка от заданного адреса, указанного после команды.-4Использование только протокола IPv4.-6Использование только протокола IPv6.

Вот видите, всё оказалось проще, чем казалось. Кстати, в закромах Windows еще немало таких полезных штуковин. О них я тоже обязательно расскажу как-нибудь в следующий раз. Надеюсь, будет полезно.

Проверка пинга

Для проверки пинга используется одноименная команда ping, которую необходимо вводить в командной строке. Запустить командную строку можно следующими способами:

В данной ОС существует множество терминалов, поэтому для этих целей можно использовать любой из установленных на ПК. Обычно стандартный терминал можно запустить сочетанием клавиш CTRL+ALT+T.

Итак, чтобы пропинговать определенный сервер, необходимо выполнить команду:

Например, для пинга адреса 11.222.33.44 необходимо выполнить команду:

Ниже приведён пример результатов выполнения пинга одного из IP адресов.

Как видно из результатов, было передано и получено 4 пакета размером 32 байта. Время обмена одним пакетом составило 47 милисекунд.

Стоит отметить, что в Windows по умолчанию выполняется отправка только 4 пакетов. В Linux обмен пакетами продолжается до тех пор, пока пользователь самостоятельно не остановит процесс сочетанием клавиш CTRL+C. Чтобы запустить ping аналогичным образом в Windows, необходимо использовать параметр -t. Например:

Остановка обмена пакетами выполняется тем же сочетанием клавиш – CTRL+C.

Изменение размера отправляемых пакетов

Чтобы выполнить ping с использованием пакетов определенного размера (в байтах), необходимо использовать следующую команду:

В данном случае производилась отправка пакетов размером в 64 байта.

Traceroute Directory

By Country

Viafacil (AS16814)
SubiTuWeb (AS18747)
Australia
Hafey.Org (AS10145)
Austria
Globedom (AS12401)
nemox.net (AS31394)
Brazil
Registro.br (AS22548)
Canada
Network Tools (AS10577)
Cyprus
ThunderWorx (AS13033)
Czech Republic
SilesNet (AS702)
Network Server Monitor (AS15685)
Denmark
Azero (AS9167)
France
SDV (AS8839)
WZ-Conseil (AS29402)
Germany
HanNet (AS1275)
SpaceNet (AS5539)
Plusserver (AS8972)
InterNetWire (AS13246)
TELTA Citynetz Eberswalde (AS21032)
Kloth.Net (AS24940)
Insode (AS24940)
Gaertner Datensysteme (AS24956)
interscholz Internet Servivces GmbH & Co. KG (AS33843)
Kosten (AS33984)
Greece
Athens University of Economics and Business (AS5408)
University of Ioannina (AS8581)
Hong Kong
Powerbase (AS9925)
Iceland
RHnet — Iceland University Research Network (AS15474)
Indonedia
MCM Net (AS 38211)
Italy
Bilink (AS8816)
Sysnet (AS12474)
Japan
CTNet Computer Communication Network (AS7670)
Kyrgyzstan
ElCat (AS8449)
Lithuania
BITE Internet (AS13194)
Luxembourg
FMC Consulting (AS13049)
The Netherlands
NXS (AS16237)
Transip B.V. (AS20857)
Pakistan
Nexlinx (AS17563)
Poland
Internet Partners (AS6714)
dhosting.pl (AS48896,AS31116)
Romania
ZYX (AS8708)
Gazduire Web Ltd. (AS25116)
Russia
TeliaNet Russia (AS1299)
Singapore
NewMedia Express (AS38001)
SingTel Internet Exchange (AS7473)
Slovakia
Rhenus Logistics (AS48326)
Sweden
Wiberg (AS8642)
Switzerland
Init7 (AS13030)
Antares Kommunikationstechnik (AS34554)
Taiwan
HiNet (AS3462)
EBIX (AS17709)
United Kingdom
Enta (AS8468)
Cerberus Networks Ltd (AS51918)
United States
Princeton University (AS88)
Cogent (AS174)
T1 Shopper (AS2914)
Global Crossing (AS3549)
netINS (AS5056)
InterWorld Communications, Inc (AS5726)
NETPLEX (AS6062)
Opus One (AS6373)
Fifi.Org (AS6461)
foreThought.net (AS6653)
Blue Moon Online System (AS10259)
Tellurian Networks (AS10848)
Die.net (AS11051)
Easynews (AS11588)
INFLOW (AS13756/19290)
ARPNetworks (AS25795)
Steadfast Networks (AS32748)

Troubleshooting

You have now seen the output of the traceroute command when everything worked as it should. Let’s look at two examples where we don’t have end-to-end connectivity. I only need these three routers for this example:

Destination Unreachable

Let’s start with a destination that is unreachable. I will add a new loopback on R3 with an IP address:

Right now, none of our routers know how to reach 3.3.3.3. Let’s see what the traceroute output looks like:

Above we see that none of the probes make it to the destination. Let’s add a static route on R1 so that this traffic makes it to R2 at least:

And do another traceroute:

Now we can see that R1 is able to forward it, R2 responds that it’s unreachable. Let’s add the static route on R2:

And try one more trace:

Now we are able to make it to the destination.

Source Unreachable

We can use traceroute to figure out if we can reach a certain destination, but you can also use it to check if other routers know about your source. Let’s add another loopback interface, this time on R1:

I will now do a traceroute to 192.168.3.1 with 1.1.1.1 as our source. We know that 192.168.3.1 is reachable since we tried it before. Let’s take a look:

This trace is failing. Nobody knows how to reach 1.1.1.1. Let’s add a static route on R2:

R2 now knows how to reach 1.1.1.1. Let’s try that traceroute again:

R2 is now responding. This tells us that the problem is not between R1 and R2 but somewhere further down the line. Let’s add the last static route:

R3 now also knows how to get to 1.1.1.1. Let’s try that trace:

Which now completes successfully.

If you see some asterisks (timeouts) in your trace for some routers, then this router (or firewall) is probably configured with an access-list and configure not to respond with any TTL expired messages.

List Of Available Methods

In general, a particular traceroute method may have to be chosen by -M name, but most of the methods have their simple cmdline switches (you can see
them after the method name, if present).

default

The traditional, ancient method of tracerouting. Used by default.

Probe packets are udp datagrams with so-called «unlikely» destination ports. The «unlikely» port of the first probe is 33434, then for each next probe it is
incremented by one. Since the ports are expected to be unused, the destination host normally returns «icmp unreach port» as a final response. (Nobody knows
what happens when some application listens for such ports, though).

This method is allowed for unprivileged users.

icmp -I

Most usual method for now, which uses icmp echo packets for probes.
If you can ping(8) the destination host, icmp tracerouting is applicable as well.

tcp -T

Well-known modern method, intended to bypass firewalls.
Uses the constant destination port (default is 80, http).

If some filters are present in the network path, then most probably any «unlikely» udp ports (as for default method) or even icmp echoes (as for
icmp) are filtered, and whole tracerouting will just stop at such a firewall. To bypass a network filter, we have to use only allowed protocol/port
combinations. If we trace for some, say, mailserver, then more likely -T -p 25 can reach it, even when -I can not.

This method uses well-known «half-open technique», which prevents applications on the destination host from seeing our probes at all. Normally, a tcp syn is
sent. For non-listened ports we receive tcp reset, and all is done. For active listening ports we receive tcp syn+ack, but answer by tcp reset (instead of
expected tcp ack), this way the remote tcp session is dropped even without the application ever taking notice.

There is a couple of options for tcp method:

syn,ack,fin,rst,psh,urg,ece,cwr

Sets specified tcp flags for probe packet, in any combination.

flags=num

Sets the flags field in the tcp header exactly to num.

ecn

Send syn packet with tcp flags ECE and CWR (for Explicit Congestion Notification, rfc3168)

sack,timestamps,window_scaling

Use the corresponding tcp header option in the outgoing probe packet.

sysctl

Use current sysctl (/proc/sys/net/*) setting for the tcp header options above and ecn. Always set by default, if nothing else
specified.

mss=num

Use value of num for maxseg tcp header option (when syn).

Default options is syn,sysctl.

tcpconn

An initial implementation of tcp method, simple using connect(2) call, which does full tcp session opening. Not recommended for normal use, because a
destination application is always affected (and can be confused).

udp -U

Use udp datagram with constant destination port (default 53, dns).
Intended to bypass firewall as well.

Note, that unlike in tcp method, the correspond application on the destination host always receive our probes (with random data), and most can
easily be confused by them. Most cases it will not respond to our packets though, so we will never see the final hop in the trace. (Fortunately, it seems that
at least dns servers replies with something angry).

This method is allowed for unprivileged users.

udplite -UL

Use udplite datagram for probes (with constant destination port, default 53).

This method is allowed for unprivileged users.
Options:

coverage=num

Set udplite send coverage to num.

raw -P proto

Send raw packet of protocol proto.
No protocol-specific headers are used, just IP header only.
Implies -N 1.
Options:
protocol=proto
Use IP protocol proto (default 253).

Назначение и применение Tracert на практике

Tracert – не просто некая абстрактная команда, которую понимает командная строка, а полноценная программа. Точнее, служебное консольное (не имеющее оконного интерфейса) Windows-приложение, предназначенное для определения пути, по которому направляются сетевые пакеты от одного узла к другому. Имя приложения образовано от «trace route», что означает «трассировка маршрута».

Программа Tracert является собственным компонентом Windows (устанавливается на компьютер вместе с ОС), ее исполняемый файл – TRACERT.exe, постоянно находится в папке %windir%/system32.

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

Подобным образом работает и Tracert. Только он предоставляет информацию о не почтовых, а о сетевых отправлениях.

Обратите внимание на сходство этих записей:

Трассировка применяется как один из инструментов комплексной диагностики сетевых сбоев. Так, с ее помощью можно определить:

Программная трассировка

Трассировка программного обеспечения предоставляет разработчикам информацию, полезную для отладки. Эта информация используется как во время циклов разработки, так и после выпуска программного обеспечения. В отличие от регистрации событий, программная трассировка обычно не имеет понятия «класс» события или «код события». Другие причины, по которым решения для регистрации событий, основанные на кодах событий, не подходят для программной трассировки, включают:

Поскольку программная трассировка является низкоуровневой, часто необходимо определить гораздо больше типов сообщений, многие из которых будут использоваться только в одном месте кода. Парадигма кода события вводит значительные накладные расходы на разработку этих «одноразовых» сообщений.
Типы сообщений, которые регистрируются, часто менее стабильны на протяжении цикла разработки, чем для регистрации событий.
Поскольку выходные данные трассировки предназначены для использования разработчиком, сообщения не нужно локализовать

Поэтому важно хранить сообщения трассировки отдельно от других ресурсов, которые необходимо локализовать (например, сообщений о событиях). Есть сообщения, которые никогда не следует видеть

Сообщения трассировки следует хранить в коде, потому что они могут улучшить читаемость кода. Это не всегда возможно или выполнимо с решениями для регистрации событий.

Еще одно важное соображение при трассировке программного обеспечения — это производительность. Поскольку программная трассировка выполняется на низком уровне, возможный объем сообщений трассировки намного выше

Чтобы решить проблемы с производительностью, часто требуется возможность отключения трассировки программного обеспечения либо во время компиляции , либо во время выполнения.

Другие особые проблемы:

  • В проприетарном программном обеспечении данные отслеживания могут включать конфиденциальную информацию об исходном коде продукта .
  • Если трассировка включена или отключена во время выполнения, многие методы трассировки требуют включения значительного количества дополнительных данных в двоичный файл, что может косвенно повлиять на производительность, даже если трассировка отключена.
  • Если трассировка включена или отключена во время компиляции, получение данных трассировки для проблемы на компьютере клиента зависит от желания клиента и возможности установить специальную версию программного обеспечения с поддержкой трассировки, а затем дублировать проблему.
  • Многие виды использования трассировки предъявляют очень строгие требования к надежности . Это связано как с надежностью вывода трассировки, так и с тем, что отслеживаемый вариант использования не должен быть нарушен.
  • В операционных системах трассировка иногда полезна в ситуациях (например, при загрузке ), когда некоторые из технологий, используемых для ведения журнала событий, могут быть недоступны.
  • во встроенном ПО для отслеживания требуются специальные методы.

Синтаксис

Рассмотрим синтаксис команды.

В той части команды, где будет указан адрес узла, необходимо прописать доменное имя или IP-адрес.

Дополнительные опции

Чтобы изменить тип пакетов, необходимо воспользоваться соответствующими опциями. Для пакетов ICMP – опция -I. Для пакетов TCP – опция -T. Вследствие чего формат UDP больше не будет использован программой.

Если нужно указать размер пакета, задайте опцию —mtu. В таблице маршрутизации будет указано конкретное устройство. Чтобы поменять его, и задать другой роутер, задайте опцию -r. Для установки максимально допустимого времени жизни пакета задайте опцию -m. Чтобы задать длительность паузы между прыжками, задайте опцию -z.

Вышеперечисленные ключи не являются обязательными для использования traceroute в командной строке устройства Линукс. Вы всегда можете запустить утилиту без добавления вспомогательных опций.

Примеры трассировки в Linux

Рассмотрим на примере выполнение трассировки сети до определенного сервера. Он будет указан в завершении:

Как видно из скриншота, пакет дошел до сайта всего за два хоста

Система отправляла по 3 пакета на каждый из этих узлов, засекая при этом точное время их прохождения. Имея подобную информацию на руках, очень просто понять, на каком узле возникла проблема, если сеть дала сбой.

Следует учитывать тот факт, что сервисная задержка может отнять немало времени. Это связано с приоритетностью маршрутизатора. Приходящие пакеты всегда находятся в фаворе.

Если в появившемся окне вместо узла указаны звёздочки утилиты, не стоит делать поспешных выводов о его поломке. Скорее всего, узел просто не ответил на этот раз.

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

Для начала пробуем без изменений:

Если не получается, измените формат пакетов:

Обрыв цепочки – не единственное, что может выявить трассировка сети Linux. Её также можно применить для исследования сети. К примеру, пользователю нужно выяснить, какие подсети используются поставщиком Интернет-услуг. Для этого необходимо отправить 3 запроса с указанием разных адресов. Вот так это выглядит на практике:

Первый адрес:

Второй адрес:

Третий адрес:

Чтобы разобраться с полученными данными и сделать правильное умозаключение, следует провести сравнение 3 выводов заданных команд. Вы увидите, к какой локальной сети подключен ваш маршрутизатор, и какие сети использует провайдер.

Подводя итог, следует резюмировать основные функции команды traceroute:

  1. Тестирование сети
  2. Управление сетью
  3. Измерение сети.

Заключение

Утилита treaceroute – весьма популярный и надежный инструмент для проверки обрыва цепочки, используемый не только системными администраторами, но и обычными пользователями дистрибутива Linux. Эта команда может пригодиться при различных неисправностях. Её рекомендуется использовать исключительно для ручной локализации проблем. Использование traceroute во время стандартных операций и автоматических сценариев может оказать мощную нагрузку на сеть, что не является целесообразным решением.

Common Traceroute Error Messages

If there is an issue within the network, the traceroute results will also show error commands, which include Request timed out, Destination unreachable, * in RTT columns, and more.

  • Request timed out: Seeing this error at the end of the traceroute means that a firewall or a security device might be blocking your request, or there was a problem in the return route. If you see this at the beginning, it’s nothing to worry about as it is a common hop.
  • Destination net unreachable: This means that the data packets have stopped traveling within the network. Most of the time, this is because there is a problem with the router or that the website or IP address you are trying to reach is down.
  • * in RTT columns: It means the router did not respond to the request within the maximum allotted time of two seconds. It could also mean that the router in the hop was not set up to provide a response to a traceroute request. However, it does not necessarily mean that the packet was dropped. To verify if there was a packet loss, you can ping the IP address of the router where you see the asterisk.

Traceroute Command Variations

If you are looking for ways to run a traceroute, you can open the Command Prompt app and type tracert /? to see variations you can use.

Now that you know how to run a traceroute on your Windows 10 computer, check out our article on how to boost your WiFi signal.

Несколько советов о том, как читать и интерпретировать выводы результатов работы команды tracert

Во-первых, отмечу, что пользоваться командой tracert очень легко, на самом деле очень легко пользоваться любыми сетевыми утилитами, легко писать команды на сетевых устройствах, но понимать, как это всё работает, задача гораздо более сложная. Понимать выводы команды tracert тоже непросто, иногда даже невозможно их правильно интерпретировать.

Вы наверняка думает, что tracecrt позволяет вам правильно оценить задержку прохождения пакетов по сети, ведь так? Всё вроде бы очевидно, три раза отправили, три раза получили, взяли среднее арифметическое и получили среднее время, так? Нет, не так. У пакетов есть время распространения по сети, а у сетевых устройств есть такие факторы как сериализация и буферизация, они довольно сложные.

Когда вы используете tracert или traceroute не забывайте, что маршрутизатор, который будет отвечать на ваши запросы, обрабатывает эти запросы несколько иначе, чем полезный сетевой трафик, который проходит через него транзитом. Мы с вами делали трассировки до узлов Яндекса, Гугла и Майкрософта, мы получали определенные задержки на хопах, но при трассировке мы видим только маршрут «туда», обратный маршрут с вероятностью 90% будет отличаться, но у вас нет возможности сделать трассировку до себя с указанных серверов.

То есть получается, что мы видим маршрут «туда», но получаем усредненное время, которое получается путем сложения времени, которое будет затрачено на то, чтобы добраться туда с временем, которое будет затрачено на то, чтобы добраться обратно другим маршрутом (еще раз повторю, что маршрут «обратно» не обязательно должен совпадать и очень часто не совпадет с маршрутом «обратно»), несовпадение маршрутов главным образом связано с коммерческой и юридической сферой взаимодействия провайдеров и других крупных игроков интернета.

Провайдеры используют протоколы динамической маршрутизации, у которых есть функция балансировки трафика, часто до одного и того же сервера можно добраться по нескольким маршрутам. Иногда, когда вы делаете трассировку, ваш первый пакет «туда» идет одним маршрутом, а ваш второй пакет «туда» пойдет другим маршрутом.

Команда tracert только на первый взгляд кажется простой, на самом деле это не так, я сейчас даже не говорю про простых пользователей, многие админы умеют пользоваться tracert на уровне обезьяны и не хотят это исправлять, иначе не объяснишь их восприятие звездочек в выводе («это потери, ужас, мрак, хостер, провайдер, дата-центр, за что я плачу тебе 100 рублей?» обычно именно такие ребята поднимают поросячий визг из-за своей некомпетентности в вопросе, потому что те кто может платить больше, позволяют себе нанимать более компетентных людей, хотя это и не всегда так), например, вот так:

Если вы посчитали первый ответ потерей, то вам нужно изучать принцип работы tracert, а также помнить, что сетевое оборудование можно настраивать, в том числе и на работу с ICMP, а может это не потери, а роутер настроен таким образом, чтобы игнорировать часть запросов?

Tracert прекрасно справляется со своей задачей – она отображает путь, по которому проходит IP-пакет, а также время ответа транзитных роутеров/маршрутизаторов, но при помощи данной утилиты невозможно точно оценить потери и нельзя с уверенностью сказать – на каком участке сети потери происходят, чтобы оценить потери в компьютерной сети (здесь можно почитать про основные характеристики компьютерной сети), лучше воспользоваться стандартной утилитой Windows, которая называется pathping, либо более удобной программой WinMTR или mtr в операционных системах семейства Linux.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *