Главная >> Команды >> Команда ping в Linux

Команда ping в Linux

Всем знакомы ситуации, когда интернет на компьютере неожиданно разрывается, такое поведение можно наблюдать при использовании ADSL модемов, Wifi на большом расстоянии, GSM и других подобных ненадежных технологий. Быстро выяснить есть ли на компьютере интернет можно с помощью утилиты ping.

Но область ее применения намного шире, ее используют сетевые администраторы для проверки доступности удаленного узла в сети, она применяется в различных скриптах и многих других местах. В этой статье будет рассмотрена команда ping в Linux, мы поговорим о том, как пользоваться утилитой, как она работает, рассмотрим ее опции и возможности.


Содержание статьи

Как работает ping?

Утилита ping - это очень простой инструмент для диагностики сети. Она позволяет проверить доступен удаленный хост или нет и все. Для этого утилита проверяет, может ли хост отвечать на сетевые запросы с помощью протокола ICMP.

Надеюсь, не нужно говорить, что все данные по сети передаются в виде небольших пакетов. Программа передает небольшой пакет с данными ICMP и ожидает получить обратно пакет ответа, если получает, то считается что удаленный узел доступен. ICMP или Internet Control Message Protocol - это надстройка над протоколом IP, которая используется для передачи служебных сообщений и сообщений и ошибках.

Протокол ICMP может передавать только два типа пакетов - это сообщения с отчетами про ошибки и сообщения запросов. В свою очередь, сообщения запросов делятся на:

  • Сообщение эхо-запрос;
  • Сообщение эхо-ответ.

Попытаемся разобраться что делает команда ping. Итак, когда вы отправляете запрос ping удаленному узлу, утилита устанавливает для каждого пакета уникальный идентификатор, а также TTL и время отправки пакета. Если хост доступен, он отправляет ответ, на основе времени отправки утилита может вычислить время прохождения пакета туда и обратно. Затем отправляется следующий пакет. В конце рассчитывается общее количество отправленных и принятых пакетов, процент потерь и другие данные.

Команда Ping

Теперь нам осталось немного попрактиковаться. Но перед тем, как мы перейдем к практике давайте рассмотрим синтаксис команды и ее опции. Синтаксис довольно прост:

$ ping опции адрес_узла

Формат команды ping очень прост. В качестве адреса узла можно передавать как ip адрес, так и доменное имя. Опции настраивают поведение утилиты. Рассмотрим основные из них:

  • -4 - использовать только ipv4 (по умолчанию);
  • -6 - использовать только ipv6;
  • -A - адаптивный режим, время между отправками пакета адаптируется к времени передачи и приема пакета, но не меньше чем 200мс;
  • -b - разрешить ping широковещательного адреса;
  • - количество пакетов, которые нужно отправить;
  • -D - выводить время в виде UNIX timestamp;
  • -f - режим флуда, в этом режиме пакеты передаются без задержек, может использоваться для совершения DoS атак на отдельные узлы. Количество точек, которые выводит утилита обозначает количество потерянных пакетов;
  • -i - интервал в секундах между отправкой пакетов;
  • -I - использовать этот сетевой интерфейс для отправки пакетов;
  • -l - режим перегрузки, отправляется очень много пакетов и система не следит за ответными пакетами;
  • -n - не получать домены для ip адресов;
  • -r - игнорировать таблицы маршрутизации и отправить пакет на указанный интерфейс;
  • -s - размер одного пакета;
  • -t - установить TTL вручную;
  • -v - более подробный вывод.

Теперь, когда мы рассмотрели основные параметры команды ping и ее синтаксис, пришло время практики, дальше поговорим о том, как сделать ping определенного узла в Linux.

Как пользоваться Ping?

Для проверки работоспособности сети часто используется программа ping любого сайта, который всегда доступен, например, google.com или еще проще и короче ya.ru. Вам будет достаточно передать утилите в параметрах этот адрес, она сама найдет ip и сделает все нужное:

ping ya.ru

Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:

  • packets transmitted - отправлено пакетов;
  • received - получено пакетов;
  • packet loss - процент потерянных пакетов;
  • time - обще время работы;
    rtt min/avg/max/mdev - минимальное время/среднее время/максимальное время/квадратичное отклонение.

Если выполнение команды ping не остановить, то пакеты могут отправляться очень долгое время, это создает дополнительную нагрузку на сервер и поэтому не желательно. Вы можете сразу в вызове команды ограничить количество отправляемых пакетов с помощью опции -c:

ping -c 3 ya.ru

Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:

ping -c 3 8.8.8.8

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

ping -f losst.pro

По умолчанию, в обычном режиме, каждый следующий пакет отправляется, когда получен ответ на предыдущий. Но вы можете сами установить интервал между отправкой пакетов -i:

ping -i 0.2 losst.pro

 

Здесь программа ping выполняет так званный, настраиваемый флуд, вы указываете с какой интенсивностью нужно отправлять пакеты. С помощью опции -D вы можете увидеть Unix Timestamp для каждого сообщения:

ping -D losst.pro

Выводы

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

10 комментариев к “Команда ping в Linux”

  1. А ещё есть полезная штука: просмотр отчета до завершения. Для этого нужно нужно во время выполнения нажать Ctrl+4 и в терминал будет выведена текущая статистика. Например:
    4474/4531 packets, 1% loss, min/avg/ewma/max = 78.846/98.600/87.929/450.158 ms

    Ответить

Оставьте комментарий