Команда Ping в Linux
Обновлено: 21.11.2024
ping [ -LRUbdfnqrvVaAB] [ -c количество] [ -i интервал] [ -l предварительная загрузка] [ -p шаблон] [ -s размер пакета] [ -t ttl] [ -w крайний срок] [ -F метка потока< /i>] [ -I интерфейс] [ -M подсказка] [ -Q tos] [ -S sndbuf] [ -T параметр метки времени] [ -W время ожидания] [ переход . ] пункт назначения< /я>
Описание
ping использует обязательную дейтаграмму ECHO_REQUEST протокола ICMP для получения ICMP ECHO_RESPONSE от хоста или шлюза. Дейтаграммы ECHO_REQUEST («пинги») имеют заголовок IP и ICMP, за которым следует struct timeval, а затем произвольное количество «заполняющих» байтов, используемых для заполнения пакета.
Параметры
При использовании ping для локализации сбоев сначала следует запустить его на локальном хосте, чтобы убедиться, что локальный сетевой интерфейс запущен и работает. Затем хосты и шлюзы все дальше и дальше должны быть пропингованы. Рассчитывается время приема-передачи и статистика потери пакетов. Если получены повторяющиеся пакеты, они не включаются в расчет потери пакетов, хотя время прохождения этих пакетов туда и обратно используется при расчете минимального/среднего/максимального времени прохождения туда и обратно. Когда заданное количество пакетов отправлено (и получено) или если программа завершается с сигналом SIGINT, отображается краткая сводка. Более короткую текущую статистику можно получить без остановки процесса по сигналу SIGQUIT.
Если ping вообще не получает ответных пакетов, он завершится с кодом 1. Если пакет count и deadline указаны оба, но меньше, чем количество пакетов, полученных к моменту наступления крайнего срока, он также завершит работу с кодом 1. При другой ошибке он завершится с кодом 2. В противном случае он завершится с кодом 0. Это делает его можно использовать код выхода, чтобы узнать, жив хост или нет.
Эта программа предназначена для тестирования, измерения и управления сетью. Из-за нагрузки, которую он может оказать на сеть, неразумно использовать ping во время обычных операций или из автоматических скриптов.
Сведения о пакете ICMP
Заголовок IP без параметров занимает 20 байт. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов заголовка ICMP, за которыми следует произвольное количество данных. Когда указывается packetsize, это указывает на размер этого дополнительного фрагмента данных (по умолчанию 56). Таким образом, объем данных, полученных внутри IP-пакета типа ICMP ECHO_REPLY, всегда будет на 8 байт больше, чем запрошенное пространство данных (заголовок ICMP).
Если размер пространства данных не меньше struct timeval, ping использует начальные байты этого пространства для включения метки времени, которая используется при расчете времени приема-передачи. Если пространство данных короче, время прохождения туда и обратно не указывается.
Дубликаты и поврежденные пакеты
ping сообщит о дублирующихся и поврежденных пакетах. Дублирование пакетов никогда не должно возникать и, по-видимому, вызвано неправильными повторными передачами на уровне канала. Дубликаты могут возникать во многих ситуациях и редко (если вообще когда-либо) являются хорошим признаком, хотя наличие небольшого количества дубликатов не всегда может вызывать тревогу.
Поврежденные пакеты, очевидно, являются серьезной причиной для беспокойства и часто указывают на неисправное оборудование где-то на пути ping-пакета (в сети или на хостах).
Испытание различных шаблонов данных
(Меж)сетевой уровень никогда не должен обрабатывать пакеты по-разному в зависимости от данных, содержащихся в части данных. К сожалению, известно, что проблемы, связанные с данными, проникают в сети и остаются незамеченными в течение длительного периода времени. Во многих случаях конкретный шаблон, который будет иметь проблемы, - это тот, у которого нет достаточного количества «переходов», например, все единицы или все нули, или шаблон прямо на краю, например, почти все нули. Не обязательно указывать шаблон данных, состоящий из всех нулей (например) в командной строке, потому что интересующий шаблон находится на уровне канала передачи данных, и отношение между тем, что вы вводите, и тем, что передают контроллеры, может быть сложный.
Это означает, что если у вас есть проблема, связанная с данными, вам, вероятно, придется провести много тестов, чтобы найти ее. Если вам повезет, вы можете найти файл, который либо не может быть отправлен по вашей сети, либо для его передачи требуется гораздо больше времени, чем для других файлов аналогичной длины. Затем вы можете проверить этот файл на наличие повторяющихся шаблонов, которые можно проверить с помощью параметра -p команды ping.
Детали TTL
Значение TTL IP-пакета представляет собой максимальное количество IP-маршрутизаторов, через которые может пройти пакет, прежде чем он будет отброшен. В текущей практике вы можете ожидать, что каждый маршрутизатор в Интернете будет уменьшать поле TTL ровно на единицу.
В спецификации TCP/IP указано, что поле TTL для пакетов TCP должно быть установлено на 60, но многие системы используют меньшие значения (4.3 BSD использует 30, 4.2 использует 15).
Максимально возможное значение этого поля — 255, и в большинстве систем Unix для поля TTL пакетов ICMP ECHO_REQUEST установлено значение 255. Вот почему вы обнаружите, что можете «пинговать» некоторые хосты, но не можете связаться с ними с помощью < i>telnet(1) или ftp(1).
- Не менять его; это то, что делали системы Berkeley Unix до выпуска 4.3BSD Tahoe. В этом случае значение TTL в полученном пакете будет равно 255 минус количество маршрутизаторов на пути туда и обратно.
- Установите значение 255; это то, что делают современные системы Berkeley Unix. В этом случае значение TTL в полученном пакете будет равно 255 минус количество маршрутизаторов на пути от удаленной системы до проверяемого хоста.
- Установите другое значение. Некоторые машины используют для пакетов ICMP то же значение, что и для пакетов TCP, например, 30 или 60. Другие могут использовать совершенно дикие значения.
- Многие хосты и шлюзы игнорируют параметр RECORD_ROUTE.
- Максимальная длина IP-заголовка слишком мала, чтобы такие параметры, как RECORD_ROUTE, могли быть полностью полезными. Однако с этим мало что можно сделать.
- Флоуд-пинг в целом не рекомендуется, а флуд-пинг широковещательного адреса должен выполняться только в строго контролируемых условиях.
См. также
netstat(1), ifconfig(8).
История
Команда ping появилась в 4.3BSD.
Описанная здесь версия является потомком для Linux.
Безопасность
ping требует выполнения возможности CAP_NET_RAWIO. Его можно использовать как set-uid root.
Вы когда-нибудь останавливались, чтобы посмотреть, насколько больше может помочь вам проверка связи, помимо быстрой проверки подключения к сети?
Опубликовано: 26 апреля 2021 г. | Дэймон Гарн (Red Hat)
Я уверен, что вы понимаете, что команда ping — это распространенная и относительно простая команда. И, как и во многих основных командах, есть несколько отличных опций и приемов, которые делают инструмент еще лучше. В этой статье рассматриваются различные приемы и советы, которые помогут повысить уровень ваших знаний о пинге.
Я начинаю с некоторых основных параметров проверки связи, а затем интерпретирую результаты проверки связи. После этого я изучаю некоторые расширенные варианты использования. Наконец, я расскажу о некоторых альтернативах проверки связи и дополнительных подходах.
Основы
Для быстрого обзора вы можете просто ввести следующие две команды, чтобы проверить базовое сетевое подключение к удаленному компьютеру с именем хоста server01 или IP-адресом 192.168.2.200:
Вы также можете протестировать локальный стек TCP/IP, используя либо имя хоста localhost, либо петлевой адрес:
Вы также можете использовать команду ping 0 для проверки связи с локальным хостом:
Контейнеры Linux
Менее известные варианты
По умолчанию Linux постоянно отправляет эхо-запросы. Windows по умолчанию отправляет только четыре. Одно из моих любимых применений ping — это информирование меня о перезапуске удаленного сервера или сетевого устройства. Например, представьте, что я удаленно подключен к серверу Windows с моего ноутбука Linux. Сервер необходимо перезагрузить, прежде чем я смогу продолжить его настройку. Я могу выполнить команду перезагрузки, а затем настроить непрерывный пинг с моего ноутбука на сервер. Когда результаты проверки связи показывают успех, я знаю, что процесс перезагрузки на удаленной машине завершен. А пока я могу работать над другими проектами.
Примечание. Параметры проверки связи в Linux и Windows несколько различаются. Запланируйте это, если вы работаете с обеими платформами.
Я даже могу использовать звуковой сигнал с ping , сообщающий мне, когда проверка прошла успешно.
Вы можете настроить количество проверок связи, используя параметр -c, за которым следует желаемое количество сообщений проверки связи. Например, чтобы отправить пять пингов, введите:
Вы можете использовать вариант этого, чтобы просто отобразить IP-адрес пункта назначения, отправив одиночный пинг на имя хоста. Это запрос быстрого разрешения имени:
Может быть, вы хотите изменить уровень детализации результатов проверки связи?Вы можете повысить уровень детализации, добавив параметр -v (подробный) или обобщить результаты, используя параметр -q (тихий).
Я уже нашел несколько хороших способов использования ping с указанными выше параметрами. Мне особенно нравится возможность быстрого запроса разрешения имени. Однако я использовал непрерывный пинг во время перезагрузки больше, чем любой другой трюк.
Вы также можете использовать команду ping для тестирования служб разрешения имен. Если вы пингуете пункт назначения по IP-адресу и пинг проходит успешно, вы знаете, что у вас есть базовое подключение. Если вы пингуете тот же пункт назначения по имени хоста, и это не удается, вы знаете, что разрешение имен не работает. Это связано с тем, что ping не смог преобразовать данное имя хоста в IP-адрес во втором тесте.
Результаты и методы
Чтобы углубиться в результаты, вывод ping отображает информацию об имени хоста и IP-адресе, потере пакетов, времени отклика и т. д.
Вывод ping
Двумя наиболее распространенными результатами, на которые следует обратить внимание, являются время ожидания и неизвестный хост. Оба они указывают на сбой, но знаете ли вы, что вы можете использовать эти два результата, чтобы предсказать, в чем заключается проблема с сетью?
Сообщение timeout указывает на то, что ваш компьютер считает, что успешно отправил запросы проверки связи к месту назначения. Однако он не получил ответов в течение указанного времени, поэтому время ожидания истекло. Неправильная конфигурация, вероятно, на стороне назначения или в сети между вашим компьютером и местом назначения. Ваш компьютер отправил запросы, но пункт назначения не ответил. Начните с проверки того, что целевое устройство включено, физически подключено к сети и имеет действительный IP-адрес. После этого проверьте настройки маршрутизатора и брандмауэра.
Противоположное верно для вывода неизвестный хост. Это указывает на вероятную проблему на вашем конце соединения. Ваш компьютер не смог отправить запрос в нужное место назначения. Это может означать неверную настройку IP-адреса с вашей стороны, проблему со значением шлюза по умолчанию или попытку подключения к несуществующему адресу назначения.
Работайте снаружи внутрь
Многие курсы по работе с сетью предлагают использовать ping для проверки наличия проблем с конфигурацией, сначала проверяя ближайшие конфигурации, а затем продвигаясь наружу. Я всегда с этим не соглашался.
Первый подход к ближайшим адресам выглядит следующим образом:
- Шлейф: проверка связи 127.0.0.1
- Локальный хост: ping 192.168.2.200
- Локальный маршрутизатор/шлюз по умолчанию: ping 192.168.2.1
- Удаленный пункт назначения по IP-адресу: ping 192.168.8.42
- Удаленный пункт назначения по имени хоста: ping server01
Я считаю, что подход "внешний" более эффективен, потому что если шаг 1 завершится успешно, я смогу перейти к другим тестам, не теряя времени. Вероятность сбоя тестов loopback и localhost очень мала по сравнению с другими проблемами конфигурации сети.
Вот внешний подход:
- Удаленный пункт назначения по имени хоста: ping server01 (Примечание. Если это удастся, перейдите к другим тестам сети)
- Удаленный пункт назначения по IP-адресу: ping 192.168.8.42
- Локальный маршрутизатор/шлюз по умолчанию: ping 192.168.2.1
- Локальный хост: ping 192.168.2.200
- Шлейф: проверка связи 127.0.0.1
В облаке
Расширенные варианты использования
Существует несколько разных команд проверки связи, которые можно использовать для различных тестов.
Например, что если у вас не установлен Nmap, но вам нужно посмотреть, какие хосты работают? Добавьте опцию -b, чтобы запустить широковещательную рассылку ping для всей подсети. Это отображает хосты, которые в настоящее время работают, хотя это не так эффективно, как простое сканирование Nmap.
Вы также можете изменить размер полезной нагрузки пакета ping. Заголовок всегда имеет размер 28 байт, поэтому добавьте желаемую сумму плюс 28 байт, чтобы получить общий размер. По умолчанию 64 байта. Чтобы отправить ping со 128 байтами, введите следующее:
Это основная техника, используемая в атаках Ping of Death.
Ограничьте количество прыжков (маршрутизаторов), через которые будет проходить пинг, настроив значение времени жизни (TTL). Например, чтобы ограничить запрос десятью прыжками, введите:
Кроме того, при выполнении непрерывной проверки связи попробуйте Ctrl + вертикальная черта, чтобы отобразить статистику.
Последние приемы
Я закончу одним последним инструментом и напоминанием о маршрутизаторах.
Существует графический интерфейс для ping — gping. Использование графического интерфейса может быть удобно для таких задач, как мониторинг перезагрузки серверов, как упоминалось выше. Из другого конца комнаты можно было наблюдать за состоянием результата непрерывного пинга. Иногда с графическим представлением проще работать или оно полезно для демонстраций. Вы можете найти gping на его официальной странице Git.Он доступен для различных дистрибутивов Linux, macOS и Windows. Для нескольких других установщиков доступно несколько различных типов пакетов.
Вот несколько примеров синтаксиса gping. Первый устанавливает графический пинг на server01, а второй отображает справку по gping:
На снимке экрана показано, как gping проверяет подключение к адресу 8.8.8.8.
Наконец, напоминание: многие маршрутизаторы настроены на отбрасывание пакетов на основе ICMP, таких как пакеты, используемые ping (и traceroute). ICMP, как правило, может использоваться для различных атак, поэтому маршрутизаторы могут быть настроены так, что они не пропускают и не отвечают на ping-запросы. Об этом следует помнить при устранении неполадок сетевого подключения.
Подведение итогов
Конечно, ping — это простой инструмент, с которым вы много работали, но есть несколько отличных опций для изменения его поведения и несколько хороших методов, которые можно использовать при устранении неполадок. Обнаружили ли вы хотя бы одну полезную вещь, о которой не знали, из вышеприведенного списка? А как же гпинг? Можете ли вы придумать какое-либо хорошее применение графической версии ping?
Большинство пользователей Linux знакомы с командой ping и знают, как использовать ее в ее базовой форме. Однако существует множество дополнительных опций и вариаций пинга. В этом руководстве мы познакомим вас с некоторыми наиболее полезными командами проверки связи Linux с примерами.
Команды в этой статье работают с любым дистрибутивом UNIX или Linux. Тестовая система, которую мы использовали для предоставления примеров и выходных образцов, — Ubuntu 18.04.2 LTS.
- Linux или UNIX-подобная система
- Доступ к терминалу
- Пользователь с необходимыми разрешениями для запуска команд
Как работает ping в Linux
Команда ping в Linux — это простая утилита, используемая для проверки доступности сети и доступности хоста. С помощью этой команды вы можете проверить, запущен ли сервер. Это также помогает при устранении различных проблем с подключением.
Команда ping позволяет вам:
- Проверьте подключение к Интернету.
- Проверьте, подключен ли удаленный компьютер к сети.
- Проанализируйте наличие проблем с сетью, таких как потерянные пакеты или высокая задержка.
Когда вы пытаетесь "пинговать" удаленный хост, ваш компьютер начинает отправлять эхо-запросы ICMP и ожидает ответа. Если соединение установлено, вы получаете эхо-ответ на каждый запрос.
Выходные данные команды ping содержат количество времени, которое требуется каждому пакету для достижения пункта назначения и возврата.
Терминал продолжает печатать ответы, пока не будет прерван. После каждого сеанса есть несколько строк со статистикой пинга.
Как использовать команду ping
Основной синтаксис ping включает в себя ping, за которым следует имя хоста, имя веб-сайта или точный IP-адрес.
Нажмите Ctrl + C на клавиатуре, чтобы остановить процесс.
- от: пункт назначения и его IP-адрес. Обратите внимание, что IP-адрес веб-сайта может отличаться в зависимости от вашего географического положения.
- icmp_seq=1: порядковый номер каждого пакета ICMP. Увеличивается на единицу для каждого последующего эхо-запроса.
- ttl=52 : значение Time to Live от 1 до 255. Оно представляет собой количество сетевых переходов, которые может выполнить пакет, прежде чем маршрутизатор его отбрасывает.
- time=7,68 мс: время, которое потребовалось пакету, чтобы достичь пункта назначения и вернуться к источнику. Выражается в миллисекундах.
команды ping в Linux с примерами
пропинговать «localhost» для проверки локальной сети
Если у вас возникли проблемы с доступом к веб-сайту или удаленному компьютеру, вы можете проверить связь с локальным хостом, чтобы убедиться, что у вас есть сетевое подключение. Воспользуйтесь одним из трех способов проверить локальный сетевой интерфейс:
- ping 0 — это самый быстрый способ пропинговать локальный хост. После ввода этой команды терминал определяет IP-адрес и предоставляет ответ.
- ping localhost — вы можете использовать это имя для проверки связи с локальным хостом. Имя относится к вашему компьютеру, и когда мы используем эту команду, мы говорим: «пропинговать этот компьютер».
- ping 127.0.0.1. Некоторые люди предпочитают использовать IP-адрес для проверки связи с локальным хостом.
Какой бы метод вы ни выбрали, выходные данные ping выглядят одинаково.
Укажите Интернет-протокол
IPv6 — это буквенно-цифровой формат IP-адреса, который заменит IPv4. Причина этого в том, что количество адресов IPv4 ограничено, и у нас заканчиваются возможные комбинации.
Чтобы запросить адрес IPv6 или IPv4, добавьте -6 или -4 после команды ping и перед именем хоста/IP-адресом.
Изменить временной интервал между пакетами Ping
Интервал по умолчанию между каждым запросом проверки связи равен одной секунде. Вы можете увеличить или уменьшить это время с помощью переключателя -i. Чтобы уменьшить интервал проверки связи, используйте значения меньше 1.
Чтобы увеличить интервал проверки связи, введите любое значение больше 1.
Изменить размер пакета Ping
В некоторых сценариях вы можете использовать -s, чтобы увеличить размер пакета по сравнению со значением по умолчанию, равным 56 (84) байтам. Число в скобках представляет отправленные байты ping, включая 28 байтов пакета заголовка.
Например, чтобы увеличить размер пакета до 1000 байт:
Вы получите следующий вывод:
Эта команда полезна при тестировании производительности сети. Вы можете проверить, ограничивает ли сетевой канал при увеличении размера пакета до нескольких тысяч байт.
Запудрить сеть с помощью ping для проверки производительности
Вы можете использовать ping-флуд для проверки производительности сети при большой нагрузке.
Для выполнения опции Ping Flood -f требуется root. В противном случае примените sudo к вашей команде ping, чтобы залить хост. Эта команда отправляет большое количество пакетов как можно быстрее.
Вывод печатает точку для каждого отправленного пакета и пробел для каждого ответа. Строка статистики показывает сводку команды ping.
Как ограничить количество пингов
По умолчанию команда ping продолжает отправлять запрос, пока вы его не прервете. Вы можете ограничить количество ping-запросов одним из двух способов.
Ограничить количество пакетов Ping
Чтобы команда ping автоматически останавливалась после отправки определенного количества пакетов, используйте -c и число. Это устанавливает желаемое количество запросов ping, как показано в этом примере:
Как видно на изображении выше, команда ping прекратила отправку пакетов после двух запросов.
Установить лимит времени для команды ping
Чтобы перестать получать результаты проверки связи по истечении определенного времени, добавьте к команде -w и интервал в секундах.
Например, чтобы прекратить печать результатов проверки связи через 25 секунд, введите команду проверки связи:
Другое использование ping
Подавить вывод команды Ping, чтобы распечатать только сводную статистику
Если вы не хотите загромождать экран информацией о каждом пакете, используйте ключ -q, чтобы отобразить только сводку.
Опция -q выводит одну строку с обычной информацией о проверке связи, а затем предоставляет статистику в конце. Буква «q» в этой команде означает «тихий» вывод.
Обычно мы комбинируем тихий выход с другими вариантами. В этом случае мы ограничим пинг до отправки 10 пакетов и подавим вывод.
Добавить метку времени перед каждой строкой в выводе ping
Если вы хотите отметить время суток при выполнении команды ping, добавьте параметр -D.
Это печатает отметку времени в формате UNIX перед каждой строкой.
Примечание. Вам нужно использовать букву D в верхнем регистре, так как эти команды чувствительны к регистру.
Получить звуковой сигнал, когда хост доступен
При использовании ключа –a система воспроизводит звук при получении ответа от хоста.
Звуковой сигнал полезен, когда вы устраняете проблемы с сетью и не хотите смотреть на экран, пока не получите ответ.
Вывод выглядит так же, как обычный вывод команды ping.
Показать версию Ping и выйти
В любое время вы можете проверить версию инструмента проверки связи в вашей системе.
Добавьте -V к команде ping, чтобы отобразить версию этой утилиты.
Часто используемые команды Ping включают:
Параметры проверки связи | Что делает команда |
a | Генерирует звук, когда одноранговый узел доступен. |
b | Позволяет пропинговать широковещательный IP-адрес. |
B | Запрещает эхо-запросу изменить исходный адрес зонда. |
c (количество) | Ограничения количество отправленных ping-запросов. |
d | Устанавливает параметр SO-DEBUG для используемого сокета. |
f | Заполняет сеть, отправляя сотни пакетов в секунду. |
i (интервал) | Указывает интервал между последовательными пакетными передачами. Значение по умолчанию — одна секунда. |
I (адрес интерфейса) | Устанавливает исходный IP-адрес в указанный IP-адрес интерфейса. Эта опция требуется при проверке связи с локальным адресом IPv6. Вы можете использовать IP-адрес или имя устройства. |
l (предварительная загрузка) | Определяет количество пакетов, отправляемых без ожидания ответа. Чтобы указать значение выше 3, вам нужны права суперпользователя. |
n | В выводе ping отображается IP-адрес, а не имя хоста. |
q | Показывает тихий выход. Отображается одна строка ping и сводка команды ping в конце. |
T (ttl) | Устанавливает время жизни. |
v | Предоставляет подробный вывод. |
V | Отображает версию ping и переходит в новую строку командной строки. |
w (крайний срок) | Указывает ограничение по времени до выхода команды ping, независимо от того, сколько пакетов было отправлено или получено. |
W (время ожидания) | Определяет время ожидания ответа в секундах. |