Команда ping: опции ping в Linux и проверка 100% packet loss

Тестовая средаСемейство RHELAlmaLinux 9.8iputils 20210202Учётная запись rootDebian 12 · iputils 20221126 обычная учётная запись
Сетевые командыpingРасположение/usr/bin/pingПроверено 2026-11-04

На сервере Linux команда ping проверяет, доходят ли пакеты до другого сервера и сколько длится путь туда и обратно. При отправке на example.com с серверов AlmaLinux 9 и Debian 12 с числом, заданным через -c, время приёма-передачи составило 1–3 мс, а сервер, блокирующий ICMP, показал в ping 100% packet loss, хотя отвечал на веб-запросы.

Вывод ниже получен на сервере AlmaLinux 9.8 (учётная запись root) и на сервере Debian 12 (обычная учётная запись). Каждый ping запускался с числом отправок, заданным через -c. Частные IP-адреса промежуточных маршрутизаторов заменены примерами, а адреса, полученные из публичных доменов вроде example.com, оставлены как есть.

1️⃣ Как пользоваться командой ping

  • ↪️ Как читать строки вывода

ping отправляет другому серверу эхо-запрос ICMP и построчно выводит, сколько времени шёл эхо-ответ. В Linux ping без числа, заданного через -c, отправляет пакеты, пока вы не остановите его клавишами Ctrl+C (по официальному руководству), поэтому сразу запускайте его с числом, например -c 4.

ping -c 4 example.com
PING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.46 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.30 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.28 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=58 time=1.30 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.279/1.336/1.464/0.074 ms

При четырёх отправках на example.com с сервера Debian 12 пришли все четыре ответа, время приёма-передачи — 1,28–1,46 мс. Что показывает каждая строка, описано ниже.

ВыводЧто показывает
PING example.com (172.66.147.243) 56(84) bytes of data.Адрес, полученный из имени, и отправляемый размер — 56 байт данных плюс 20 байт заголовка IP и 8 байт заголовка ICMP дают 84 байта
64 bytes from …Размер пришедшего ответа (56 байт данных + 8 байт заголовка ICMP)
icmp_seq=1Порядковый номер отправки
ttl=58TTL, оставшийся в пакете ответа, — уменьшается на 1 на каждом пройденном маршрутизаторе
time=1.46 msВремя приёма-передачи этого пакета
4 packets transmitted, 4 received, 0% packet lossОтправлено, получено и доля без ответа
time 3003msВремя от первой отправки до завершения
rtt min/avg/max/mdevМинимальное, среднее и максимальное время приёма-передачи и его разброс (mdev)

mdev показывает, насколько время приёма-передачи отклоняется от среднего, и в официальном руководстве сказано, что чем больше это значение, тем неравномернее время. В этом результате все четыре ответа уложились в 1,5 мс, и mdev составил 0,074 мс.

Та же команда на сервере AlmaLinux 9 отправила пакеты на IPv6-адрес example.com, и в первой строке было только 56 data bytes без 84.

ping -c 4 example.com
PING example.com(2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3)) 56 data bytes
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=1 ttl=51 time=2.20 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=2 ttl=54 time=2.30 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=3 ttl=51 time=2.55 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=4 ttl=54 time=2.26 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.203/2.326/2.547/0.131 ms

Версию установленного ping проверяют через -V. На сервере Debian 12 был iputils 20221126, на сервере AlmaLinux 9 — iputils 20210202.

ping -V
ping from iputils 20221126
libcap: yes, IDN: yes, NLS: no, error.h: yes, getrandom(): yes, __fpending(): yes
ping -V
ping from iputils 20210202

2️⃣ Опции числа и интервала ping

  • ↪️ -c, -i, -w, -W, -q

Среди опций ping -c — число отправок, а -i — интервал между ними (в секундах). Интервал по умолчанию — 1 секунда, а с -i 0.5 время на четыре отправки сократилось с 3003 мс до 1502 мс.

ping -c 4 -i 0.5 example.com
PING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.26 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.31 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.37 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=58 time=1.44 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 1502ms
rtt min/avg/max/mdev = 1.264/1.343/1.436/0.065 ms

По руководству iputils 20210202 на сервере AlmaLinux 9 задать интервал короче 0,2 секунды может только root, а руководство iputils 20221126 на сервере Debian 12 указывает этот порог как 2 мс. Короткие интервалы могут нагружать другой сервер и сеть.

-w — время (в секундах), через которое ping полностью завершается, сколько бы пакетов ни было отправлено. Вместе с -c он завершается, когда получено заданное число ответов или истекло время -w. При запуске с -c 10 -w 3 через 3 секунды было отправлено только три пакета, и ping завершился.

ping -c 10 -w 3 example.com
PING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.34 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.27 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.34 ms

--- example.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.272/1.318/1.342/0.032 ms

Все три ответа пришли, но заданные 10 не набрались, поэтому код выхода ping был 1. В официальном руководстве тоже сказано, что при совместном использовании -c и -w ping завершается с кодом 1, если не получено заданное число ответов.

-W — время (в секундах) ожидания одного ответа. По официальному руководству это значение действует, только когда ответов нет вообще; для узла, который отвечает, ping ждёт вдвое больше времени приёма-передачи.

Чтобы видеть только итог без строк результата, добавьте -q. После четырёх отправок остались только первая строка и статистика в конце.

ping -c 4 -q example.com
PING example.com (104.20.23.154) 56(84) bytes of data.

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.551/1.649/1.715/0.060 ms

3️⃣ Опции размера пакета и IPv6 в ping

  • ↪️ -s, -t, -4, -6

Размер отправляемых данных меняют через -s. С -s 1000 первая строка стала 1000(1028) bytes, а строки ответа — 1008 bytes.

ping -c 2 -s 1000 example.com
PING example.com (172.66.147.243) 1000(1028) bytes of data.
1008 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.21 ms
1008 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.31 ms

--- example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.214/1.262/1.311/0.048 ms

1028 — это 1000 байт данных плюс 20 байт заголовка IP и 8 байт заголовка ICMP, а 1008 — данные плюс только заголовок ICMP. Время приёма-передачи составило 1,21–1,31 мс, почти как при размере по умолчанию (56 байт).

-t задаёт TTL отправляемых пакетов. TTL уменьшается на 1 на каждом маршрутизаторе, а когда доходит до 0, этот маршрутизатор отбрасывает пакет и возвращает [Time to live exceeded].

ping -c 2 -t 3 example.com
PING example.com (172.66.147.243) 56(84) bytes of data.
From 192.0.2.103 (192.0.2.103) icmp_seq=1 Time to live exceeded
From 192.0.2.103 (192.0.2.103) icmp_seq=2 Time to live exceeded

--- example.com ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1001ms

При TTL, сниженном до 3, третий маршрутизатор оба раза вернул [Time to live exceeded]. При увеличении TTL по одному начиная с 1 первый ответ от example.com пришёл на 8.

-4 и -6 ограничивают тип адреса назначения только IPv4 или только IPv6. Сервер AlmaLinux 9 отправлял на IPv6-адрес example.com даже без опций, поэтому для отправки на IPv4-адрес добавили -4.

ping -4 -c 4 example.com
PING  (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=54 time=2.64 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=54 time=2.55 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=54 time=2.57 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=54 time=2.58 ms

---  ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 2.553/2.585/2.642/0.033 ms

В iputils 20210202 на сервере AlmaLinux 9 с -4 поле имени в первой строке и в строке статистики оказалось пустым. Та же команда в iputils 20221126 на сервере Debian 12 показала example.com как обычно.

На сервере Debian 12 без IPv6-маршрута по умолчанию с -6 команда сразу завершилась сообщением [connect: Network is unreachable] без строк ответа.

ping -6 -c 2 example.com
ping: connect: Network is unreachable

🔲 Опции команды ping

📌 Основные опции: результаты из этой статьи

ОпцияНазначениеРезультат в этой статье
-c числоЗадаёт, сколько пакетов отправить, и завершается после отправки-c 4 на сервере Debian 12: четыре отправки, четыре ответа, приём-передача 1,28–1,46 мс
-i интервалИнтервал между отправками пакетов (в секундах), по умолчанию 1 секундаС -i 0.5 время на четыре отправки сократилось с 3003 мс до 1502 мс
-w времяВремя (в секундах), через которое ping полностью завершается, сколько бы пакетов ни было отправлено-c 10 -w 3 за 3 секунды отправил только три пакета и завершился с кодом выхода 1
-W времяВремя (в секундах) ожидания одного ответа, когда ответов нет вообщеДве отправки на 192.0.2.1 с -W 1: [100% packet loss], код выхода 1
-qВыводит только первую строку и статистику в конце, без строк ответаПосле четырёх отправок остались только первая строка и строка статистики
-s размерРазмер отправляемых данных (в байтах), по умолчанию 56С -s 1000 в первой строке 1000(1028) bytes, в строках ответа 1008 bytes
-t TTLTTL отправляемых пакетовС -t 3 третий маршрутизатор оба раза вернул [Time to live exceeded]
-4Отправляет только на IPv4-адресаНа сервере AlmaLinux 9 отправка на IPv4-адрес вместо IPv6; поле имени пустое
-6Отправляет только на IPv6-адресаНа сервере Debian 12 без IPv6-маршрута по умолчанию: [connect: Network is unreachable]
-DСтавит время Unix (секунды.микросекунды) в начало каждой строки ответаВ начале каждой строки ответа появляется метка времени вида [1793227536.574201]
-VВыводит сведения о версииDebian 12 — iputils 20221126, AlmaLinux 9 — iputils 20210202

📎 Другие опции: по официальному руководству

ОпцияНазначение
-nВыводит адреса только числами, не преобразуя их в имена
-I интерфейсЗадаёт интерфейс или адрес источника для отправки
-AСам подстраивает интервал отправки под время приёма-передачи; без root минимальный интервал 200 мс
-fФлуд-пинг, который отправляет быстро, не дожидаясь ответов; интервал 0 только для root
-l числоЧисло пакетов, отправляемых заранее без ожидания ответа; больше 3 только для root
-M doЗадаёт режим Path MTU Discovery; do запрещает фрагментацию (принимаются также want и dont)
-p шаблонШаблон байтов для заполнения отправляемых пакетов, до 16 байт
-OСообщает о запросах без ответа до отправки следующего пакета; используется вместе с -D при записи
-RЗаписывает пройденный маршрут (только IPv4; многие узлы игнорируют эту опцию)
-bРазрешает отправку на широковещательный адрес
-aПодаёт звуковой сигнал при каждом ответе

🔲 Симулятор команды ping

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

Симулятор команды pingiputils 20221126
[root@server work]#
Работает только в браузере и не отправляет настоящих пакетов. Клавишами ↑↓ можно вернуть ранее введённые команды.

4️⃣ ping не получает ответа

  • ↪️ 100% packet loss и ошибка разрешения имени

[100% packet loss] означает, что на отправленные пакеты не пришло ни одного ответа. При двух отправках с -W 1 на 192.0.2.1, адрес, зарезервированный для документации, вывелась только статистика без строк ответа.

ping -c 2 -W 1 192.0.2.1
PING 192.0.2.1 (192.0.2.1) 56(84) bytes of data.

--- 192.0.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1024ms

Когда ответов не было вообще, код выхода ping был 1, а при полученных ответах — 0. Скрипты используют это значение, чтобы проверить, отвечает ли другой сервер.

ping -c 2 -W 1 192.0.2.1 > /dev/null; echo $?; ping -c 1 example.com > /dev/null; echo $?
1
0

ping проверяет только ICMP, поэтому сервер, блокирующий ICMP, может отвечать на веб-запросы и при этом не отвечать на ping. Две отправки на amazon.com с сервера Debian 12 дали [100% packet loss], а веб-запрос через curl на тот же адрес получил ответ 301.

ping -c 2 -W 1 amazon.com
PING amazon.com (98.82.161.185) 56(84) bytes of data.

--- amazon.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1002ms
curl -sI https://amazon.com/ | head -1
HTTP/1.1 301 Moved Permanently

Сервер, блокирующий ICMP, похож на магазин, который снял дверной звонок.

Некоторые облачные серверы отвечают на ping только после того, как ICMP разрешён в правилах брандмауэра. Экземпляр ВМ в Oracle Cloud начал отвечать на ping после того, как тип ICMP в списке безопасности публичной подсети изменили на 8.

Если ping не может преобразовать имя в IP-адрес, он сразу завершается сообщением [Name or service not known] без первой строки, и код выхода был 2. .invalid — имя, зарезервированное так, чтобы нигде не разрешаться, поэтому его использовали для проверки этой ошибки.

ping -c 1 no-such-host.invalid
ping: no-such-host.invalid: Name or service not known

Если эта ошибка появляется для реального домена, смотрите: Команда nslookup — проверьте, возвращает ли DNS-сервер адрес для этого имени. Четыре варианта вывода без ответа и что проверять дальше — ниже.

ВыводНазначениеЧто проверить дальше
100% packet lossНа отправленные пакеты не пришло ни одного ответаВеб-службу — через curl, брандмауэр — правило, разрешающее ICMP
Name or service not knownНе удалось преобразовать имя в IP-адресОтвет DNS через nslookup
connect: Network is unreachableНет исходящего маршрута для этого типа адресаОтправить на IPv4-адрес с -4
Time to live exceededTTL дошёл до 0 на промежуточном маршрутизатореУвеличить значение -t или убрать его и отправить снова

🔢 FAQ & рекомендуемые материалы

На сервере Debian 12 обычная учётная запись получала ответы без sudo. У /usr/bin/ping на этом сервере есть право cap_net_raw (capability), поэтому он мог отправлять пакеты ICMP без root.

На двух проверенных серверах ping устанавливался пакетом iputils в AlmaLinux 9 и пакетом iputils-ping в Debian 12. Поэтому в семействе RHEL его ставят через [sudo dnf install iputils], а в семействе Debian — через [sudo apt install iputils-ping].

С -D в начале каждой строки ответа появляется время Unix (секунды.микросекунды). При двух отправках на example.com с сервера Debian 12 перед каждой строкой ответа записалась метка времени вида [1793227536.574201].

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 1   +   6   =