- Главная
- Блог
- Без категории
- Команда Ping - Диагностика сети в Linux
Команда Ping - Диагностика сети в Linux
Команды:
ping -c (count - считать) 4 192.168.0.1
Теперь перейдем к самой известной сетевой утилите - ping. Название происходит от звука сонара подводных лодок, а принцип работы идеально описывается аналогией с игрой ping-pong: как мячик летает между игроками, так и сетевой пакет отправляется на удаленный хост и возвращается обратно.
На практике, команда ping используется для проверки доступности какого-то конкретного сетевого устройства, либо для диагностики корректности настройки сетевых служб в нашей сети или самой машины, с которой мы пингуем другие ресурсы.
Вы уже помните, как мы проверяли корректность работоспособности на данной машине через проверку доступности какого-то сетевого оборудования в нашей сети. В виндоус системах по умолчанию ping отправляет 4 пакета, в Linux же он отправляет бесконечно, поэтому давайте так же ограничим 4 пакетами, чтобы далее было удобнее анализировать статистику.
ping -c (count - считать) 4 192.168.0.1
ping -c 4 192.168.0.1
Для проверки доступности выхода во внешнюю сеть интернет.
ping -c 4 8.8.8.8
И для диагностики корректности работы DNS сервера в нашей сети
ping -c 4 yandex.ru
Давайте изучим результаты работы утилиты ping для разных серверов.
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
Первая строка нам говорит, что будет выполняться пинг устройства с адресом 192.168.0.1, если бы мы указали его dns имя, то в скобочках, скорее всего, отобразился бы его IP адрес, как в yandex.ru (5.255.255.77)
56(84) bytes of data - объем данных, которые будут отправляться, на указанный адрес. 56 байт — это количество полезных данных, которые отправляются в ICMP Echo Request (пинг-запрос), а 84 байта — это общий размер пакета. Т.е. по факту будут отправляться пакеты размером 84 байта.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.341 ms
Получен ответ размером 64 байта. Почему именно 64, если мы отправляли пакет размером 84 байта? Дело в том, что утилита ping в своей статистике показывает размер именно ICMP-пакета, без учета IP-заголовка, который составляет дополнительные 20 байт, icmp_seq=1, номер запроса 1, 2, 3 и т.д. TTL (time to life) время жизни пакета 64, но об этом чуть позже, time=0.341 ms время, за которое пакет дошел до пункта назначения и вернулся обратно. В принципе, время меньше одной миллисекунды, что говорит о том, что оборудование находится очень близко, скорее всего в рамках локальной сети.
4 packets transmitted, 4 received, 0% packet loss, time 4082ms
Далее, общая статистика опроса устройства, 4 packets transmitted — всего отправлено 4 пакета, 4 received — все 4 пакета получили ответы, 0% packet loss — не было потерь пакетов, связь с адресатом стабильная, time 3144ms — общее время, за которое выполнялась проверка (около 3 секунд).
rtt min/avg/max/mdev = 0.270/0.290/0.324/0.020 ms
RTT (Round-Trip Time) - Время в пути туда и обратно в котором указываются, min - минимальное зафиксированное время отклика из всех отправленных пакетов, avg - среднее (average) время отклика за весь период проверки, max - максимальное время отклика среди всех проверок, mdev — это сокращение от mean deviation, среднее отклонение времени отклика. Показывает, насколько сильно варьируются задержки между минимальным и максимальным значениями. Чем меньше mdev — тем стабильнее связь.
Какой вывод, мы можем сделать, проанализировав отчеты проверки связи до разных сетевых узлов.
TTL (64, 106, 55)
Что вообще такое TTL (Time To Live - время жизни пакета): число, которое показывает, сколько маршрутизаторов (или хопов) пакет может пройти до уничтожения. Значение 64 — типичное начальное значение у Linux-систем. Если TTL меньше 64, значит пакет прошёл через некоторое количество устройств.
В первом случае, TTL=64, это говорит о том, что у нас запрос не прошел ни одного оборудования и это логично, так как запрос был направлен напрямую оборудованию, к которому подключена наша машина.
Смотрите, если мы попробуем пропинговать мой физический роутер, то получим следующий TTL
ping -c 4 192.168.88.1
TTL=63, это говорит о том, что запрос прошел через один маршрутизатор (64-1=63) и да, это соответствует действительности, так как пакет идет на наш виртуальный маршрутизатор МикроТИК, потом на физический маршрутизатор и обратно.
Кстати, почему при пинге сервера гугла 8.8.8.8 TTL=106?
Дело в том, что, когда наш пакет достигает пункт назначения, конечное устройство отправляет обратно аналогичный пакет. Но, время жизни пакета TTL может отличаться от того, которое мы задавали в своем пакете.
Например, для разных систем предустановлено значение TTL поумолчанию:
Linux: 64
Windows: 128
Сетевые устройства: 255
В данном случае, ответный TTL=106 и скорее всего, изначально TTL был равен 128, а значит прошел 22 хопа (128-106) и, следовательно, сервер гугла либо работает на операционной системе Windows, либо на Linux, но значение TTL по умолчанию было изменено на 128. Причем, второе более вероятно, чем первое.
Что еще интересного, это время в пути туда и обратно. Как вы видите, при тесте наших локальных устройств, время очень маленькое, значит запрос быстро возвращается, а если говорить про сервера гугл и яндекс, то тут время больше, так как они находятся за пределами нашей сети и добираться до них намного дольше.
Типовые задачи с использованием ping и их описание:
- Проверка сетевой доступности удаленного хоста. - Администратор отправляет запросы ping к серверу или любому другому устройству, чтобы убедиться, что сеть между ними работает и хост отвечает.
- Диагностика сетевых проблем. - Ping помогает определить место разрыва соединения, проверяя доступность последовательных узлов (например, сервера или шлюза).
- Измерение задержек (latency). - Анализируя время отклика (RTT), администратор может выявить проблемы с производительностью сети.
- Мониторинг состояния сети. - Регулярное выполнение ping позволяет отслеживать стабильность соединения и предупреждать сбои.
- Определение завершения перезагрузки удаленного сервера. - Администратор запускает непрерывный ping к серверу и видит, когда устройство снова отвечает после перезагрузки.
- Тестирование качества соединения с разными параметрами пакетов. - Изменение размера пакетов позволяет проверить пропускную способность и устойчивость сети к нагрузкам.
Какие еще дополнительные команды используют при работе с утилитой ping:
Чаще всего применяемые следующие ключи:
- -i [interval] — установка интервала между запросами (в секундах);
- -t [ttl] — установка времени жизни пакета, чтобы ограничить число промежуточных узлов;
- -s [packet_size] — задание размера пакета данных;
- -n [numeric] — вывод только числовых IP-адресов без имен хостов;
- -w [deadline] — общее время работы команды;
- -W [timeout] — время ожидания ответа.