Диагностика проблем с подключением с помощью команды 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
станет первым инструментом, к которому вы обратитесь.