ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

10 минут чтени€

Ѕлагодар€ Linux, у нас есть очень много инструментов облегчающих администрирование и диагностику сети. ¬ этом плане команда PING €вл€етс€ одним из самых полезных инструментов дл€ системных и сетевых администраторов.

—ама базова€ возможность этой утилиты Ц определить доступен ли тот или иной хост. “ем не менее в этом материале мы приведем примеры расширенных возможностей этой команды в системе Linux.

PING!

ƒл€ чего используетс€ команда PING?

 оманда ping один из базовых инструментов дл€ работы с сетью. Ќар€ду с проверкой доступности удаленного хоста, эта команда даЄт возможность выполн€ть и другие диагностические задачи в том числе:

  • измерение времени за которое общаютс€ два хоста;
  • вы€вление IP адреса конкретного хоста, как в локальной сети, так и в глобальной
  • она может быть частью bash скрипта дл€ автоматической проверки сетевого устройства
  • проверка св€зи с конкретным устройством.

 ак видно, эта команда очень необходима дл€ администрировани€ сети и серверов.


 ак работает команда PING?

ѕринцип работы команды Ping прост: она посылает серию пакетов маленького размера на указанное устройство.

ƒл€ тестировани€ устройства может быть использован либо IP-адрес, либо им€ хоста. ѕосле отправки пакета, утилита провер€ет и измер€ет врем€ ответа целевого устройства.

 ак вы могли предположить, врем€ ответа зависит от нескольких условий в том числе географическое расположение или устройств, расположенных между источником и целевым устройством.

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

ќднако, на основе полученной информации утилита будет судить о состо€нии целевого устройства.

—интаксис команды следующий:

ping [options] [destination]

Ќиже приведены некоторые полезные и часто используемые ключи дл€ этой команды:

  • -c: ѕозвол€ет указать количество пакетов дл€ отправки.
  • -s: ѕозвол€ет измен€ть размер пакета по умолчанию.
  • -v: ќтображает текущее состо€ние выполнени€ команды.
  • -w: ”казывает в секундах врем€ завершени€ команды.
  • -i: ѕозвол€ет указать интерфейс, с которого будут идти запросы.

ћожно ли использовать PING с прокси-сервером?

ѕрокси Ц это сервер или приложение играющее роль посредника дл€ соединени€ двух хостов в сети. Ёто своего рода Ђчеловек посерединеї, который отправл€ет запросы пр€мо к хосту.

ѕроблема в том, что команда PING требует пр€мого соединени€ между устройствами. “аким образом, команда Ping не может функционировать если перед ним стоит прокси-сервер.

 ак вариант, можно воспользоватьс€ сайтами, которые предлагают команду Ping как услугу. — другой стороны, дл€ решени€ некоторых задач с командой Ping, можно использовать команду curl. “акже можно прибегнуть к помощи VPN, который спр€чет ваш реальный IP.


Ping IPv6 адресов

ѕо умолчанию, когда запускаем команду PING, мы используем IP версии 4. ќднако, с по€влением протокола IPv6, все чаще стали встречатьс€ адреса такого формата.

ядро Linux поддерживает IPv6 начина€ с версии 2.2, так что все дистрибутивы Linux поддерживают этот протокол.

Ѕазовый синтаксис таков:

$ ping -6 2001:4860:4860::8888

¬ старых верси€х была команда ping6. ¬ новых дистрибутивах еЄ нет и весь функционал объединен с ping.

 ак и при работе с IPv4, ключом Цc можем указать число пакетов, дл€ отправки, а ключ Цi Ц определ€ет интерфейс дл€ исход€щих запросов.


Ping конкретного порта

»ногда приходитс€ провер€т доступен ли тот или иной порт на провер€емом хосте.   сожалению, команда Ping не имеет такой возможности, но это можно сделать с помощью telnet, который по умолчанию установлен на Linux.

„тобы проверить доступность порта просто введите следующую команду:

telnet [host] [port]
telnet google.com 80
ѕинг порта

Ping с выводом времени

’от€ команда ping дает много полезной информации, но этого может быть недостаточно. “ем не менее, есть возможность настроить команду так, чтобы она показала дату и врем€ отправки пакета. Ёто может сделать вывод при€тней и полезней дл€ скриптов и логировани€.

ƒл€ этого достаточно прописать указанную ниже команду. Ќо вам придетс€ установить пакет ccze.

ping [host] | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze
ccze

 ак видно из скриншота, команда показывает дату и врем€ отправки каждого пакета.


Ping всех устройств в указанной подсети

 омандой Ping можно посылать сигнал всем хостам в сети или подсети. ƒл€ этого нужно запустить ping с ключом Цb на широковещательный адрес, который заканчиваетс€ на 255. Ќапример:

ping -b -c 4 192.168.1.255
-b

»так, если хост назначени€ недоступен, значит либо там блокируютс€ ICMP пакеты, либо есть проблемы с сетью или таблицей маршрутизации.


 ак завершить команду PING?

ѕо умолчанию, в системе Linux команда Ping непрерывно посылает пакета на хост. Ќо если нужна€ информаци€ получена, то необходимо как-то прервать выполнение команды. ƒл€ этого просто нужно нажать комбинацию клавиш CTRL+C.

«авершить пинг

ѕосле этого команда немедленно остановитс€.


«авершение работы команды по счетчику

¬ы можете ограничить число посылаемых пакетов. Ќапример, если поставить число пакетов равным 10, то после отправки указанного числа пакетов выполнение команды прекратитс€.

ping -c 10 [host]
«авершение по счетчику

√де расположена утилита PING?

¬ Unix-подобных системах таких, как Linux бинарные файлы обычно располагаютс€ по пути

/usr/bin/

¬ этой папке можно найти все множество бинарных файлов, которые мы используем как команды в терминале. ¬ других ќ— семейства Linux, они могут быть расположены в:

/usr/sbin/

ѕроверить это можем командой ls:

$ ls /usr/bin | grep ping
grep ping

Ќа скриншоте видно, что команда ping находитс€ в папке

/usr/bin/

ƒругой метод, которым можно найти место расположени€ команд это which:

$ which ping

Ќа выводе она даст следующую информацию:

/usr/bin/ping

ѕроверка задержки командой PING

ќдна из возможностей, предоставл€емых командой PING, €вл€етс€ возможность измерени€ времени отклика сети. ѕо-другому это называетс€ задержка или врем€ ожидани€.

„тобы измерить задержку введи указанную команду и обратите внимание на ввыод:

ping -c 4 [host]

ping -c 4 192.168.1.1
ѕроверка задержки

 ак вы могли заметить, каждый пакет был отправлен с конкретным временем ответа. ¬ конце же есть строка, котора€ начинаетс€ на:

rtt min/avg/max/mdev

¬торое значение после знака равенства Ц это врем€ задержки. ¬ нашем случае он равен 6,798.

«адержка

— помощью этого показател€ мы можем определить хосты, св€зь с которыми хуже и при€ть соответствующие меры.


ѕоиск идеального значени€ MTU

MTU (Maximum Transmission Unit) это максимальный размер пакета, который может быть передан по сети.

—егодн€, в цел€х безопасности, в сет€х создаютс€ преп€тстви€ дл€ работы MTU. Ќо большинство локальных сетей на основе Ethernet использует MTU размером 1500 байт.

≈сли нужно найти самый подход€щий размер MTU с помощью команды Ping, следует определить начальное значение и уменьшать его до тех пор, пока прекрат€тс€ ошибки. ≈сли значение большое, мы получим следующую ошибку:

ping: local error: Message too long

„тобы сделать это запустите следующую команду:

ping -M do -s [initial_value] [host]
MTU

¬ нашем случае, значение размера пакета слишком большое. ѕоэтому уменьшаем его до 1472 байтов.

1472

≈сли получите другое сообщение, начальное значение должно быть уменьшено по единице до тех пор, пока не получите требуемый результат.

≈сли значение MTU известно, оно может быть использовано дл€ улучшени€ сети. ќсобенное если сеть больша€ вплоть до городских сетей.


Ping на 2-ом уровне OSI (использование arping)

— помощью команды ping диагностика проводитс€ на основе IP-адреса конкретного узла в сети. Ёто св€зано с тем, что команда ping работает на третьем сетевом уровне модели OSI.

— другой стороны, можно использовать другую встроенную в Linux команду Ц arping. Ёта утилита работает так же, как ping, но на втором Ц канальном уровне модели OSI.

—интаксис команды следующий:

$ sudo arping [Ip_address]
$ sudo arping [Ip_address]
$ sudo arping 192.168.1.1

¬ результате получите что-то подобное:

arping

¬ывод команды показывает размер отправленного пакета, затем MAC адрес узла назначени€, а также врем€ ответа.

ќтметим, что эта команда не предустановлена на системе Debian и производных.


Ping по имени узла

ѕо умолчанию, команда ping посылает пакеты на узел назначени€ использу€ IP адрес или им€ узла назначени€. “акже нужно отметить, что большинство реализаций утилиты ping на Linux не разрешают DNS в обратном направлении.

Ќапример, если мы запустим команду ping, указав IP адрес, он вернЄт только IP узла. » наоборот, если параметром передадим им€ узла, то команда вернет его IP адрес. ѕосмотрите вывод введ€ команду ниже:

$ ping google.com

Ping маршрута (traceroute)

—ама по себе команда ping не показывает пути от источника к узлу назначени€. Ќо это было бы очень кстати в том случае, когда узел назначени€ не отвечает, чтобы определить где именно тер€етс€ св€зь.

 оманда tracert (Windows) или traceroute работают аналогично ping. ѕреимуществом этой команды €вл€етс€ то, что он показывает весь путь следовани€ пакета от источника до узла назначени€.

¬ принципе traceroute посылает тот же ICMP пакет, что и Ping. Ќо в случае traceroute, в отличии от ping начально значение TTL пакета выставл€етс€ равным единице. ѕакет доходит до первого узла по пути к узлу назначени€. ”стройство уменьшает TTL на одну единицу и если получаетс€ нуль, то возвращает сообщение об ошибке истечени€ времени пакета. ¬ сообщение так же содержитс€ IP адрес и им€ хоста. ќтправитель получает данное сообщение. ≈сли оно не от узла назначени€, то посылает второй пакет с TTL на один больше предыдущего. » так до тех пор, пока не получит ответ от узла назначени€. ƒл€ получени€ пути нужно ввести команду:

traceroute [hostname/IPaddres]
traceroute

«апустить команду если ping вернул ошибку

ѕредставьте, что вам нужно получить оповещение если узел назначени€ перестал отвечать на запросы команды ping. ƒл€ этого нужно включить команду ping в bash скрипт и прописать нужные команды. Ќапример, скрипт ниже позвол€ет вам проверить отвечает ли узел на запросы ping:

#! /bin/bash

ping -c 1 [host]

If [ $? -eq 0]; then

    #Your_command_here

Fi

”становление размера пакета ping

ѕо умолчанию, размер пакетов ICMP равен 56 байтам. Ёто позвол€ет не вли€ть на работу сети во врем€ проверки. Ќо при необходимости можно измен€ть это значение. ƒл€ этого достаточно запустить команду ping с ключом Цs и требуемым размером. Ќапример:

ping -s [packet_size] hostname/IP

≈сли нужно установить значение пакета равным 100 байтам, нужно прописать команду ниже:

ping -s 100 192.168.1.1
-s

ќтключение команды ping

≈сли вы обслуживаете сеть, то вам может быть необходимо отключить ответ на ping запросы в любое врем€. Ёто можно сделать как временно, так и посто€нно, в зависимости от ваших нужд. ƒл€ временного отключени€ команды ping нужно ввести команду ниже от имени root-а:

$ su

$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
ќтключение пинга

ќна выключить возможно ответа на ICMP запросы до перезагрузки системы. Ќо если нужно навсегда отключить эту возможность, то придетс€ отредактировать файл

/etc/sysctl.conf

и добавить следующую строку:

$ nano /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1
sysctl.conf

—охраните файл и, дл€ применени€ изменений введите команду:

$ sysctl -p
sysctl -p

«аключение

¬ этом материале мы рассмотрели, как команда ping работает в системе Linux. Ping одна из самых легких команд. ќна позвол€ет лицам, ответственным в обеспечении нормально работы сети, вы€вл€ть проблемы и устран€ть их.