В Linux команда ping
— один из наиболее часто используемых инструментов для устранения неполадок, тестирования и диагностики проблем с сетевым подключением.
Команда ping
отправляет один или несколько пакетов эхо-запроса ICMP (Internet Control Message Protocol) на указанный IP-адрес назначения в сети и ожидает ответ. Пункт назначения после получения пакета отвечает эхо-ответом ICMP.
Содержание
Возможности
С помощью этой утилиты можно определить:
- активен или неактивен удаленный IP-адрес;
- время задержки туда-обратно при связи с пунктом назначения;
- есть ли потеря пакетов.
Синтаксис
ping [опции] <destination>
Опции
- <destination>
- DNS-имя или IP-адрес
- -A
- Использовать адаптивный пинг
- -c <count>
- Остановить после <count> ответов
- -D
- Выводить временных меток
- -d
- Использовать параметр сокета SO_DEBUG
- -f
- Флуд ping
- -I <interface>
- Имя интерфейса, либо адрес
- -i <interval>
- N секунд между отправкой каждого пакета
- -L
- Подавлять закольцовывание многоадресных пакетов
- -l <preload>
- Отправить <preload> количество пакетов во время ожидания ответов
- -n
- Не получать DNS-имена
- -s <size>
- Использовать <size> как количество байтов данных для отправки
- -t <ttl>
- Определить время жизни
- -v
- Подробный вывод
- -4
- Использовать IPv4
- -6
- Использовать IPv6
Примеры использования команды ping в Linux
Использование без опций
В качестве простейшего примера даём ping
для google.com
:
oleg@mobile:~:$ ping google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=15.9 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=17.5 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=12.1 ms
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=4 ttl=119 time=10.5 ms
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=5 ttl=119 time=18.0 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.509/14.788/17.966/2.987 ms
oleg@mobile:~:$
Утилита преобразовала доменное имя (google.com
) в IP-адрес (216.58.214.142
) и начала отправлять пакеты ICMP на целевой IP-адрес. Доступный IP-адрес назначения ответил и утилита напечатала строку, содержащую следующие поля:
- Количество байтов данных
- Значение по умолчанию — 56, что соответствует 64 байтам данных ICMP 64 bytes
- IP-адрес получателя
- from fra16s06-in-f142.1e100.net (216.58.214.142)
- Порядковый номер ICMP для каждого пакета
- icmp_seq=1
- Время жизни
- ttl=119
- Время проверки связи туда-обратно, ms
- time=15.9 ms
По умолчанию интервал между отправкой нового пакета составляет одну секунду.
Если ответ не возвращается, это означает, что сетевое соединение не установлено. Когда это происходит, это не всегда означает, что IP-адрес назначения не активен. Некоторые хосты могут иметь брандмауэр, который блокирует трафик ICMP или не отвечает на запросы ping
.
Как остановить команду ping в Linux
Команда ping
будет продолжать отправлять пакеты ICMP на IP-адрес назначения, пока не получит прерывание. Для того чтобы остановить команду, просто нажмите комбинацию клавиш Ctrl+C.
Потери пакетов
После остановки команда ping
отображает статистику, включая процент потери пакетов. Потеря пакета означает, что данные были потеряны где-то в сети, что указывает на проблему в сети. В случае потери пакетов, вы можете использовать команду traceroute, чтобы определить, где произошла потеря.
Ограничение количества пакетов
Команда ping
по умолчанию отправляет ICMP-пакеты до получения сигнала прерывания. Для ограничения количества пакетов отправляемых эхо-запросов используется опция -c
, за которой следует количество пакетов:
oleg@mobile:~:$ ping -c 3 google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from sof02s42-in-f14.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=15.3 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=13.0 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=16.8 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 12.973/15.029/16.820/1.581 ms
oleg@mobile:~:$
Теперь прерывание произошло автоматически.
Указание Интернет-протокола
Например, для принудительного использования протокола IPv4, передайте команде опцию -4
:
oleg@mobile:~:$ ping -4 -c 3 google.com
PING google.com (216.58.214.142) 56(84) bytes of data.
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=1 ttl=119 time=13.5 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=2 ttl=119 time=12.6 ms
64 bytes from fra16s06-in-f142.1e100.net (216.58.214.142): icmp_seq=3 ttl=119 time=14.9 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 12.610/13.666/14.876/0.931 ms
oleg@mobile:~:$
Заключение
В Linux сетевая утилита командной строки ping
позволяет вам проверить подключение на уровне IP данного хоста в сети. Она проста в использовании и может быть очень полезна многим пользователям.