Поиск по сайту:

Диагностика проблем с подключением с помощью команды Linux ping


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

<мета-кодировка="utf-8">

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

Базовый пинг

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

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

Команда ping  понимает имя хоста localhost , его IP-адрес и ярлык 0.

Вы можете контролировать количество отправляемых сигналов с помощью -c (как в параметре count) .

$ ping 0 -c1
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms

--- 0 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms

После того, как вы убедились, что ваш локальный сетевой стек запущен и работает, вы можете проверить связь с маршрутизатором. Адрес маршрутизатора обычно начинается с цифр 192, 168 или 10. Точный IP-адрес зависит от конфигурации вашего маршрутизатора.

Если вы не укажете, сколько запросов ping нужно отправить, вы можете остановить запуск ping с помощью Ctrl+C.

$ ping 192.168.0.1 
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1)
^C

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

А как насчет других хостов в моей сети? Вы можете пинговать все виды устройств. Не все гарантированно ответят (некоторые устройства отбрасывают пакеты ICMP), но многие это делают. Например, я могу пропинговать свой принтер:

$ ping 192.168.0.4 

Пинг за пределами вашей сети

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

DNS-сервер Google относительно легко запомнить, и он отвечает на пинги:

$ ping -c 2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms

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

Например, предположим, что вы безуспешно пытаетесь связаться с example.com. Сначала найдите IP-адрес с помощью команды host :

$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 

А затем пропингуйте хост сайта по IP:

$ ping 93.184.216.34 -c 1

Пинг и IPv6

Ping работает как через IPv4, так и через IPv6. Явное использование только одного из них можно обеспечить, указав -4 или -6

Размер пакета

Вы можете изменить размер отправляемых ICMP-пакетов с помощью параметра -s . Размер пакета по умолчанию равен 56, что соответствует 64 байтам данных ICMP в сочетании с 8-байтовым заголовком. Эта команда отправляет 43 байта:

$ ping -s 35 -c 5 8.8.8.8

Вы можете распечатать временную метку перед каждым отчетом о проверке связи в своем терминале с помощью опции -D . Это обеспечивает время эпохи UNIX плюс микросекунды:

$ ping -D 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
[1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms

Время пинга

Вы можете изменить временной интервал между пингами, используя параметр -i . Это изменит интервал пинга на две секунды:

$ ping -i 2 

Вы также можете остановить пинг через некоторое время (в секундах) с помощью опции -w:

$ ping -w 6

Варианты

Существует множество реализаций ping. Пакет iputils предоставляет команду ping , в Busybox есть команда ping , а также есть команда от BSD и других. Существует даже графический интерфейс для ping: Gping доступен для Linux, macOS и Windows. Дополнительную информацию о gping можно найти на Github. 

Научитесь пинговать

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

Статьи по данной тематике: