мониторинг_проблем_сети

Мониторинг проблем сети

Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства. Такими протоколами могут быть UDP, TCP, ICMP или GRE. Компьютеры с установленной операционной системой Windows используют ICMP-протокол, при этом операционные системы Linux и маршрутизаторы Cisco — протокол UDP.

По умолчанию в Ubunte не установлена ставим

sudo apt install traceroute

Каждый пакет проходит на своем пути определенное количество узлов, пока достигнет своей цели. Причем каждый пакет имеет свое время жизни. Это количество узлов, которые может пройти пакет перед тем, как он будет уничтожен. Этот параметр записывается в заголовке TTL, каждый маршрутизатор, через который будет проходить пакет уменьшает его на единицу. При TTL=0 пакет уничтожается, а отправителю отсылается сообщение Time Exceeded.

В linux traceroute использует UDP пакеты. Она отправляет пакет с TTL=1 и смотрит адрес ответившего узла, дальше TTL=2, TTL=3 и так пока не достигнет цели. Каждый раз отправляется по три пакета и для каждого из них измеряется время прохождения. Пакет отправляется на случайный порт, который, скорее всего, не занят. Когда утилита traceroute получает сообщение от целевого узла о том, что порт недоступен трассировка считается завершенной.

В качестве адреса может использоваться ip адрес или доменное имя, а также дополнительные опциональные параметры:

  • -4 или -6 – использовать ipv4 или ipv6 протокол;
  • -I – использовать ICMP пакеты вместо UDP;
  • -T – использовать TCP пакеты вместо UDP;
  • -F – не фрагментировать пакеты;
  • -f – указать TTL с которого нужно начать;
  • -g – передавать пакет через указанный шлюз;
  • -i – передавать пакет через указанный интерфейс;
  • -m – максимальное количество узлов, через которые пройдет пакет;
  • -q – количество пакетов, отправляемых за раз, по умолчанию три;
  • -n – не узнавать доменные имена;
  • -p – указать порт вместо порта по умолчанию;
  • -w – установить время ожидания ответа от узла, по умолчанию полсекунды;
  • -r – использовать другой роутер вместо того, что указанный в таблице маршрутизации;
  • -z – минимальный интервал между пакетами;
  • -U – использовать UDP с увеличением номера порта;
  • -UL – использовать протокол UDPLITE;
  • -D – использовать протокол DCCP;
  • --mtu – указать размер пакета;
  • -P – протокол, доступны такие значения: raw, dccp, udplite, udp, tcpconn, tcp, icmp.

Запуск без опций

traceroute nevvad.com

Используем ICMP протокол

sudo traceroute -I nevvad.com

А тут TCP

sudo traceroute -T nevvad.com

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

sudo traceroute -q 1 nevvad.com

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

В Ubuntu 20.04 идет из коробки. В Debian надо накатить

apt install mtr

Синтаксис легко освоить:

mtr nevvad.com

Получаем такой вывод, в котором пергаментно обновляются данные

                                                 My traceroute  [v0.93]
v0id (172.28.48.75)                                                                            2021-02-19T16:12:42+0300
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                               Packets               Pings
 Host                                                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. v0id                                                                      0.0%   247    0.4   0.5   0.1   0.9   0.2
 2. 10.10.10.14                                                            0.0%   247    1.0   0.9   0.4   1.3   0.2
 3. CR-431-VL-1217.access.comstar.ru                                          0.0%   247    1.9   1.7   1.0   5.6   0.4
 4. ASR-197-BE17-2001.NGN.Moscow.comstar.ru                                   0.0%   247    3.0   2.9   2.2   3.5   0.3
 5. a197-cr02-be17.2001.msk.mts-internet.net                                  0.0%   247    2.7   2.8   2.2   4.6   0.3
 6. 195.34.50.182                                                             0.0%   247    2.5   3.0   2.2   4.0   0.3
 7. 212.188.55.207                                                            0.4%   247    2.5   2.6   2.0   3.0   0.3
 8. a197-cr04-be30.50.msk.mts-internet.net                                    0.0%   247    3.1   3.0   2.3   3.7   0.3
 9. anc-cr03-ae3.77.ff.mts-internet.net                                       4.0%   247   39.7  36.8  35.7  60.5   2.7
10. ipv4.de-cix.fra.de.as63949.linode.com                                     0.0%   246   40.2  38.8  36.0  61.4   4.6
11. 139.162.129.17                                                            0.0%   246   37.0  36.7  36.2  38.3   0.2
12. 139.162.179.192                                                           0.0%   246   36.4  36.7  36.1  39.4   0.3

Пояснение содержания вывода:

  • host — имя хоста;
  • Loss% – процент потерь пакетов;
  • Snt – количество отправленных пакетов;
  • Last – время задержки последнего отправленного пакета в миллисекундах;
  • Avg – среднее время задержки;
  • Best – минимальное время задержки;
  • Wrst – максимальное время задержки;
  • StDev – среднеквадратичное отклонение времени задержки;

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

  • -c <число> – Количество циклов проверки, по сути количество отправленных пакетов;
  • -r – Режим отчета. Программа выполнит указанное при помощи параметра -c количество циклов, выведет отчет и завершит свою работу;
  • -w – Режим расширенного отчета. Результат такой же, как и при использовании опции -r, но длинные имена хостов обрезаться не будут;
  • -s <количество-байт> – Установить размер пакетов для отправки;
  • -n - Не использовать DNS для разрешения имен хостов и отображать вместо них IP-адреса;
  • -o <список-полей> – Отображать только указанные поля и в таком порядке, в котором они были указаны;
  • -p – Выводить информацию построчно, без перерисовки экрана, с разделением полей пробелом. Этот формат удобен, если используется какая-то дополнительная программа-парсер или скрипт для анализа, которому передаются данные.
  • -a <IP-адрес> – Указать адрес интерфейса, с которого будут отправляться пакеты;
  • -i <число-секунд> – Интервал между отправляемыми запросами;
  • -u – Использовать протокол UDP для отправки пакетов;
  • -4 – Использовать только IPv4;
  • -6 – Использовать только IPv6.

Скажем товарищу mtr-у, чтобы он работал по 80 порту, делал интервал между каждым запросом две секунды, вывел расширенный отчет и отправил 5 пакетов

mtr -P 80 -i 2 -rwc 5 nevvad.com
Start: 2021-02-19T16:32:15+0300
HOST: v0id                                     Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- v0id                                      0.0%     5    0.2   0.6   0.2   0.8   0.2
  2.|-- 10.10.10.14                               0.0%     5    1.1   1.0   0.7   1.1   0.2
  3.|-- CR-431-VL-1217.access.comstar.ru          0.0%     5    1.3   1.6   1.3   1.9   0.3
  4.|-- ASR-197-BE17-2001.NGN.Moscow.comstar.ru   0.0%     5    3.2   3.0   2.5   3.4   0.3
  5.|-- a197-cr02-be17.2001.msk.mts-internet.net  0.0%     5    3.1   2.9   2.3   3.3   0.4
  6.|-- 195.34.50.182                             0.0%     5    3.4   3.2   3.0   3.4   0.2
  7.|-- 212.188.55.207                            0.0%     5    2.9   2.7   2.4   2.9   0.2
  8.|-- a197-cr04-be30.50.msk.mts-internet.net    0.0%     5    3.2   3.0   2.8   3.2   0.1
  9.|-- anc-cr03-ae3.77.ff.mts-internet.net       0.0%     5   36.0  36.4  36.0  36.6   0.3
 10.|-- ipv4.de-cix.fra.de.as63949.linode.com     0.0%     5   36.9  40.4  36.7  54.6   8.0
 11.|-- 139.162.129.17                            0.0%     5   36.8  36.8  36.6  37.1   0.2
 12.|-- mx.nevvad.com                             0.0%     5   36.9  36.9  36.8  37.0   0.1

Куда же без него.

Делаем ping более праздничным

  • -4 – использовать только ipv4 (по умолчанию);
  • -6 – использовать только ipv6;
  • -A – адаптивный режим, время между отправками пакета адаптируется к времени передачи и приема пакета, но не меньше чем 200мс;
  • -b – разрешить ping широковещательного адреса;
  • – количество пакетов, которые нужно отправить;
  • -D – выводить время в виде UNIX timestamp;
  • -f – режим флуда, в этом режиме пакеты передаются без задержек, может использоваться для совершения DoS атак на отдельные узлы. Количество точек, которые выводит утилита обозначает количество потерянных пакетов;
  • -i – интервал в секундах между отправкой пакетов;
  • -I – использовать этот сетевой интерфейс для отправки пакетов;
  • -l – режим перегрузки, отправляется очень много пакетов и система не следит за ответными пакетами;
  • -n – не получать домены для ip адресов;
  • -r – игнорировать таблицы маршрутизации и отправить пакет на указанный интерфейс;
  • -s – размер одного пакета;
  • -t – установить TTL вручную;
  • -v – более подробный вывод.

В линуксе, команда ping без дополнительных параметров будет пинговать заданный хост бесконечно. Чтобы отправить, например, 5 запросов, необходимо добавить ключ :

ping -c 5 nevvad.com

Не резолвить имена адресов, выводить только ip

ping -n nevvad.com

Завершение работы ping по заданному времени (в секундах)

ping -w 10 nevvad.com

Установить размер отправляемых пакетов в байтах (в linux по умолчанию 64 байта):

ping -s 1024 nevvad.com

Получаем пинг с указанием времени отправки пакета, потребуется установка пакета moreutils, в нем интересует пакет – ts: timestamp standard input

ping -c 5 ya.ru | ts

C использованием xargs

ping google.in | xargs -n1 -i bash -c 'echo `date +"%Y-%m-%d %H:%M:%S"`" {}"'
  • мониторинг_проблем_сети.txt
  • Последнее изменение: 2021/09/22 16:35
  • admin