JungleLabs Insights

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

Статья

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

Traceroute — это инструмент для диагностики сети, который помогает показать путь, по которому пакеты отправляются с вашего устройства к конечному пункту. Он перечисляет промежуточные маршрутизаторы, обычно называемые хопами, и измеряет, как долго отвечают каждые из них. Это может помочь вам определить, где меняется путь, где начинаются задержки или где перестают появляться ответы.

Traceroute не показывает все детали того, как работает интернет-маршрутизация, и тайм-аут не означает автоматически, что роутер или связь повреждены. Многие маршрутизаторы ограничивают или фильтруют ответы, на которые рассчитывается traceroute. Тем не менее, когда вы понимаете, что может и не может сказать вывод, он становится полезным первым шагом в диагностике.

Это руководство объясняет, как работает traceroute, как запустить его в Windows, macOS и Linux, и как интерпретировать обычные результаты. Если вы изучаете основы сетей, это также поможет понять роль шлюз по умолчанию и как организованы диапазоны адресов IP подсети.

Что такое Traceroute?

Traceroute — это утилита командной строки, которая пытается определить маршрутизаторы, через которые проходит пакет на пути к назначению. В Windows встроенная утилита называется tracert. На macOS и большинстве дистрибутивов Linux он называется tracerouteИмена разные, но их основная цель похожа.

Инструмент отправляет серию проверок с постепенно увеличивающимся лимитом переходов. Лимит перехода указывает пакету, сколько маршрутизаторов он может пройти, прежде чем будет удален. В IPv4 это поле называется Время жизни, или TTL. В IPv6 он называется Лимит прыжков.

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

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

Что показывает трассировка маршрута?

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

Упрощенный пример может выглядеть так:

traceroute в example.com, 30 хопов макс

 1  192.168.1.1       2,1 мс   1,8 мс   2,0 мс
 2  100.64.0.1        8,4 мс   8,1 мс   8,6 мс
 3  203.0.113.10     13,2 мс  12,9 мс  13,5 мс
 4  *                 *        *
 5  198.51.100.20    25,6 мс  25,1 мс  26,0 мс

Первый столбец определяет номер перехода. Следующее значение — это адрес или имя маршрутизатора, ответившего на запрос. Оставшиеся значения — это времена отклика для проб, отправленных на этом переходе. В этом примере переход 4 не ответил на пробы, но переход 5 ответил.

Ответный хоп является доказательством того, что проба получила ответ с этого пункта. Это не доказывает, что все остальные части маршрута в хорошем состоянии. Точно так же, неполучение ответа от хопа не означает, что роутер вышел из строя. Устройство может быть настроено на передачу трафика, игнорируя или ограничивая диагностические пробы.

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

Как запустить трассировку маршрута в Windows

Windows включает tracert. Откройте командную строку или PowerShell и введите имя хоста или IP-адрес:

tracert example.com

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

tracert -d example.com

Использование -д может ускорить появление результатов, потому что Windows пропускает обратные DNS-запросы для промежуточных адресов. Это полезно, когда вас интересует путь и время, а не имена, связанные с каждым маршрутизатором.

Вы можете ограничить максимальное количество переходов с помощью -h и установите время ожидания для каждого ответа с -вНапример:

tracert -d -h 20 -w 2000 example.com

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

Чтобы протестировать определенный IP-адрес вместо хоста, выполните:

tracert -d 203.0.113.25

При сравнении результатов тестируйте один и тот же пункт назначения последовательно. Трассировка до имени домена и трассировка до определенного IP-адреса могут следовать разным путям, если домен разрешается в различные серверы.

Как запустить трассировку узла на macOS

На macOS откройте Terminal и выполните:

traceroute example.com

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

traceroute -n example.com

Вы можете ограничить максимальное количество переходов с помощью -м и настройте время ожидания с -вНапример:

traceroute -n -m 20 -w 2 example.com

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

man traceroute

Traceroute может занять некоторое время, так как он отправляет несколько проверок на каждом узле и ожидает ответов. Если кажется, что он останавливается на строке, возможно, он ждет ответов от маршрутизаторов, которые не отвечают на эти проверки.

Как запустить traceroute в Linux

Многие дистрибутивы Linux включают traceroute, но некоторые из них могут потребовать сначала установить их. Базовый тест:

traceroute example.com

Чтобы избежать обратных проверок DNS и отображать только числовые адреса, используйте:

traceroute -n example.com

Вы также можете установить максимальное количество переходов и время ожидания ответа:

traceroute -n -m 20 -w 2 example.com

На Linux варианты команд зависят от установленной реализации traceroute. Если команда отсутствует, используйте менеджер пакетов вашей системы для установки соответствующего пакета или воспользуйтесь доступной альтернативой, такой как tracepath.

Для IPv6 назначений, многие системы Linux поддерживают:

traceroute -6 example.com

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

Как прочитать каждый хоп

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

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

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

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

Что означает звездочка?

Звездочка (*) означает, что traceroute не получил ответ на это исследование в течение периода ожидания. Маршрутизатор мог все еще переслать исследование в сторону назначения. Просто он мог отказать в отправке диагностического ответа.

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

ЕСЛИ КАЖДЫЙ СЛЕДУЮЩИЙ ШАГ ПОСЛЕ ОПРЕДЕЛЕННОГО ПУНКТА ПОКАЗЫВАЕТ ЗВЕЗДОЧКИ, ПУТЬ МОЖЕТ БЫТЬ ФИЛЬТРОВАН В ЭТОМ МЕСТЕ, ЦЕЛЬ МОЖЕТ БЫТЬ НЕДОСТИЖИМОЙ ИЛИ ВОЗВРАТНЫЙ ТРАФИК МОЖЕТ БЫТЬ ЗАБЛОКИРОВАН. ЧТОБЫ РАЗЛИЧИТЬ ЭТИ СЛУЧАИ, ПРОВЕРЬТЕ РАБОТОСПОСОБНОСТЬ СЕРВИСА С ПОМОЩЬЮ СООТВЕТСТВУЮЩЕГО ПРИЛОЖЕНИЯ, ТАКОГО КАК ВЕБ-ПРОСМОТРИТЕЛЬ ИЛИ КЛИЕНТ SSH, И СРАВНИТЕ ТРАССЫ С ДРУГИМИ ЦЕЛЯМИ.

Понимание времени отклика и задержки

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

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

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

Общие шаблоны Traceroute

Если первый узел отвечает, но последующие не отвечают, локальная сеть может работать, а более удалённая сеть фильтрует диагностический трафик. Проверьте, доступна ли сама целевая служба, прежде чем предполагать, что соединение разорвано.

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

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

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

Traceroute и Tracert не являются одинаковыми

Команды tracert и traceroute имеют схожую цель, но их методы и параметры диагностики могут различаться в зависимости от операционной системы и реализации. Windows tracert часто использует ICMP Echo-запросы. Реализации, похожие на Unix, могут использовать UDP по умолчанию, с поддержкой некоторых ICMP или TCP режимов запросов.

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

Некоторые реализации traceroute позволяют выбрать метод проверки. Например, версии Linux могут поддерживать параметры для проверок UDP, ICMP или TCP. Трассировка на основе TCP может быть полезной, когда обычные проверки фильтруются, но определенный TCP-сервис доступен. Синтаксис параметров различается, поэтому перед использованием конкретного флага следует обратиться к локальной справке.

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

Traceroute против Ping

Тесты ping проверяют, отвечает ли целевой объект на определенный тип сетевого зонда и измеряют время往返. Он полезен для проверки базовой доступности, но не показывает промежуточный путь.

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

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

Практический рабочий процесс устранения неполадок

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

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

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

Если вы сообщаете о проблеме интернет-провайдеру или компании, предоставляющей хостинг, предоставьте необработанный вывод вместо того, чтобы просто сказать «traceroute не работает». Укажите назначение, время, операционную систему и доступность самого сервиса назначения. Эти детали облегчают расследование.

Ограничения трассировки маршрута

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

Время отклика не является прямым измерением того, насколько быстро роутер передает обычный трафик. Оно измеряет время для проверки и ответа, и маршрутизаторы могут обрабатывать эти диагностические пакеты по-разному по сравнению с обычным прикладным трафиком.

Traceroute также не доказывает, кто владеет адресом маршрутизатора, не определяет точную причину потери пакетов и не подтверждает, что маршрут разрешен. Данные о публичной маршрутизации и регистрации требуют отдельной проверки. Для более широкого обзора публичного ресурса IPv4 или IPv6 используйте Проверка готовности IP-ресурса.

Часто задаваемые вопросы

Безопасно ли использовать traceroute?

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

Почему traceroute показывает разный путь каждый раз?

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

Значит ли звездочка, что роутер выключен?

Нет. Это означает, что traceroute не получил ответ на это исследование в течение таймаута. Роутер может по-прежнему перенаправлять трафик, при этом фильтруя или ограничивая диагностические ответы.

Почему трассировка узла прекращается до достижения веб-сайта?

Целевая сеть или промежуточный фаервол могут заблокировать тип пробы. Веб-сайт может быть доступен через обычный трафик HTTPS. Проверьте сервис самостоятельно, прежде чем делать вывод о недоступности маршрута.

Может ли traceroute определить, где происходит потеря пакетов?

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

Могу ли я запустить traceroute для IPv6 адреса?

Да. Windows, macOS и Linux поддерживают трассировку маршрутов IPv6, хотя названия команд и параметры различаются. В Linux, traceroute -6 часто поддерживается. На Windows, tracert can trace IPv6 when given an IPv6 destination.

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

Использовать tracert на Windows и traceroute на macOS или Linux. Проверьте первый этап, сравните шаблоны ответов на последующих этапах и повторите тест, когда результаты выглядят необычными. Звездочки и изолированные высокие времена отклика являются обычными и не автоматически доказывают, что сеть повреждена.

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

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