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

Обновлено: 07.07.2024

Для диагностики и поиска проблем в сети системные администраторы часто применяют такой удобный инструмент, как трассировка маршрута. Она позволяет определить все узлы (маршрутизаторы, серверы, компьютеры), через которые проходит трафик по дороге к точке назначения. Если связь с каким-либо удалённым хостом рвётся или вообще пропадает, то трассировка маршрута сети позволит быстро найти участок, на котором появились проблемы как в локальной сети, так и в глобальной паутине Интернет.

Для выполнения этой процедуры в каждой современной операционной системе есть соответствующий инструмент.

В ОС Windows - это утилита tracert. В XP она была доступна по умолчанию, а вот во всех последующих версия вплоть до Windows 10 её надо включать дополнительно через "Программы и Компоненты".

В операционных система ОС семейства *NIX - Linux, FreeBSD, Android - программа traceroute
Смысл алгоритма трассировки маршрута в том, что посылается по три специальных запроса на каждый сетевой узел, через который идёт трафик до нужного хоста, затем для каждого из них на экране, рядом с его адресом, выдаётся время ответа. По этим результатам можно легко отследить на каком участке сети начинают появляться задержки ответа или он вообще пропадает.

Трассировка в Windows 10

Трассировка в Linux

В операционных системах семейства Linux - Ubuntu, Fedora, CentOS и т.п. - для запуска трассировки маршрута в надо открыть системную консоль и ввести команду:

Внимание! Использовать трассировку маршрута в сети для оценки качества последней мили (абонентской линии ADSL,FTTB или PON) нельзя, так как эта системная программа никоим образом оценить качество линии не может и не умеет.

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

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

Windows

В ОС Windows для выполнения трассировки нужно выполнить следующие действия:

  1. Нажать сочетание клавиш Win+R (Win - клавиша с логотипом Windows);
  2. В открывшемся окне набрать команду "cmd" (без кавычек) и нажать кнопку "ОК";
  3. В новом окне терминала набрать команду "tracert ДОМЕН" (без кавычек), затем нажать клавишу "Enter";
  4. После того, как команда будет выполнена (в окне терминала снова появится мигающий курсор), в области терминала нажать правую кнопку мыши, в открывшемся меню выбрать вариант "Выделить все" и после этого нажать клавишу "Enter";
  5. Нажать сочетание клавиш Ctrl+V. Это позволит вставить текст из терминала с результатом трассировки в заявку из Панели управления, либо в письмо в техническую поддержку;


Linux

В ОС семейства Linux для выполнения трассировки нужно выполнить следующие действия:


MacOS

В ОС MacOS для выполнения трассировки нужно выполнить следующие действия:

Мониторинг сети и сетевых подключений – важная часть администрирования сервера.

Для этого разработано несколько достаточно простых инструментов. Данное руководство рассказывает, как использовать инструмент traceroute для диагностики потенциальных проблем сети.

Кроме того, руководство охватывает использование утилиты mtr, интерфейс которой объединяет функции ping и traceroute.

Использование traceroute

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

Программа traceroute установлена на каждый дистрибутив Linux по умолчанию, потому не требует отдельной установки.

Чтобы вызвать traceroute, нужно указать вебсайт или IP-адрес сервера:

Как читать вывод traceroute

Первая строка вывода говорит об условиях работы traceroute:

Максимальное количество хопов можно изменить при помощи флага –m. Если до необходимого хоста больше 30 хопов, нужно указать большее значение. Программа traceroute позволяет задать максимум 225 хопов.

Кроме того, можно задать размер пакета, который отправляется на каждый хоп, указав целое число после имени хоста:

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

Каждая из этих строк имеет следующий формат:

hop_number host_name (IP_address) packet_round_trip_times

Вот пример хопа:

Указанная выше строка содержит следующие поля:

  • hop_number: последовательный подсчет промежуточных участков (начинается с текущего компьютера).
  • host_name: данное поле содержит результат обратного DNS-запроса (т.е., преобразования IP-адреса в доменное имя, если адрес доступен). Если информация не возвращается, будет указан сам IP-адрес.
  • IP_address: данное поле содержит IP-адрес сетевого хопа.
  • packetroundtrip_times: остальная часть строки указывает время прохождения пакетов на хост и обратно. По умолчанию на каждый хост посылается три пакета, и каждая такая попытка вносится в конец строки.

Примечание: чтобы изменить количество отправляемых пакетов, используйте опцию –q:

Чтобы отключить обратный DNS-запрос с целью ускорить мониторинг, используйте флаг -n:

Если же traceroute возвращает звездочки (*), значит, с трассировкой пакетов к хосту возникли проблемы.

15 209.85.248.220 (209.85.248.220) 121.809 ms 72.14.239.12 (72.14.239.12) 76.941 ms 209.85.248.220 (209.85.248.220) 78.946 ms
16 72.14.239.247 (72.14.239.247) 101.001 ms 92.478 ms 92.448 ms
17 * * 209.85.250.124 (209.85.250.124) 175.083 ms
18 * * *
19 * * *

Иногда traceroute останавливается на определенном хопе и не может продолжить трассировку маршрута.

Хоп, на котором оборвался маршрут, может иметь некоторые сетевые проблемы, но это не всегда так просто диагностировать.

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

Может, проблемы возникли с хопом, выполненным непосредственно после последнего выведенного хопа. В случае если запустить обратную трассировку конкретного хопа невозможно (обычно это происходит, если хоп находится за пределами сети), диагностировать точное местоположение проблемы будет непросто.

Использование MTR

MTR – это динамическая альтернатива программе traceroute. Объединяя функции ping и traceroute, mtr позволяет постоянно опрашивать удаленный сервер и отслеживать изменения задержки и производительности с течением времени.

В отличие от traceroute, в большинстве систем mtr не поставляется по умолчанию. Для установки mtr используйте следующие команды:

sudo apt-get install mtr

yum install mtr

Установив программу, вызовите ее при помощи команды:

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

При запуске traceroute есть вероятность, что пакеты, отправленные на каждый хоп, были переданы должным образом, даже если маршрут пострадал от потери пакетов. Утилита MTR позволяет отслеживать подобные ситуации путем сбора данных в широком диапазоне времени.

Кроме того, mtr можно запустить с опцией –report, которая вернет результаты отправки 10 пакетов на каждый хоп:

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

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

Оригинал: CLI tools for Network analysis 2
Автор: Riccardo Capecchi
Дата публикации: 25 сентября 2010 г.
Перевод: А.Панин
Дата публикации перевода: 3 декабря 2012 г.

После рассмотрения программ ping, telnet и dig, продолжим обзор инструментов для исследования сетей с интерфейсом командной строки.

Traceroute

Программа traceroute является инструментом для определения маршрута следования пакетов в сетях, работающих по межсетевому протоколу (Internet Protocol (IP)). Также доступен вариант программы для работы по протоколу IPv6 с названием traceroute6.

Программа traceroute доступна практически во всех UNIX-подобных операционных системах. Также существуют аналоги со сходными функциями, такие, как tracepath в современных дистрибутивах Linux и tracert в операционных системах Microsoft Windows. Операционные системы на основе Windows NT также имеют в своем составе утилиту PingPath c аналогичной функциональностью.

Whois

Netstat

На компьютерах под управлением GNU/Linux программа netstat позволяет увидеть состояние открытых сетевых соединений.

При запуске программы без параметров командной строки, будет выведен список активных сокетов в системе, например:

  • -a : Показать все активные TCP-соединения и все TCP- и UDP-порты, на которых принимаются соединения.
  • -e : Показать статистику работы локальной сети (по технологии Ethernet), включающую в себя количество отправленных и принятых байт и пакетов. Параметр может комбинироваться с параметром -s.
  • -g : Показать информацию о членстве в группах многоадресной передачи данных (Multicast) для протоколов IPv4 и IPv6 (должно быть доступно только на современных операционных системах).
  • -i : Показать список сетевых интерфейсов и статистику их использования.
  • -n : Показать активные TCP-соединения, при этом адреса и номера портов будут представлены в числовом виде и не будет производиться установление имен ресурсов.
  • -p : Показать названия процессов, использующих сокеты (работает только в Linux при наличии прав пользователя root; для Windows аналогичная задача выполняется при помощи параметра -b).
  • -r : Показать содержимое таблицы маршрутизации (эквивалентно выводу команды route print в Windows).
  • -u : Показать состояние UDP-сокетов.
  • -t : Показать состояние TCP-сокетов.

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

Выводит график в ASCII-представлении, отображающий количество установленных соединений с различными IP-адресами. Пример вывода:

Программа mtr является инструментом для диагностики сети и комбинирует в себе возможности программ traceroue и ping.

Вывод команды mtr google.com

Вывод команды "mtr google.com":

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

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

Но что такое пинг и что такое трассировка? Пинг (ping) – это инструмент (утилита) для проверки целостности соединения в сетях на основе TCP/IP. Трассировка (traceroute или tracert команда) – это программа для определения маршрутов следования данных в сетях TCP/IP.

Однако не всегда можно встретить информацию о том, как именно выполняется эта проверка: как пинговать или как сделать трассу.

Содержание

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

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

1) Пуск -> Все программы -> Стандартные -> Командная строка

2) Пуск -> Выполнить -> cmd

cmd

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

Запуск терминала в Linux

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

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

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

Как проверить пинг и трассировку

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

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

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

Установка количества отправляемых пакетов

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

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

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

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

Проверка трассировки

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

Проверка трассировки

Для выполнения трассировки используется следующая команда:

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

Чтобы активировать эту опцию необходимо использовать следующий вид команды:

Читайте также: