Как сделать пинг на линуксе

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Ping работает, отправляя один или несколько пакетов эхо-запросов ICMP (Internet Control Message Protocol) на указанный IP-адрес назначения в сети и ожидает ответа. Когда получатель получит пакет, он ответит эхо-ответом ICMP.

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

Утилита ping является частью iputils (или iputils-ping ) упаковки, которая предварительно установлена на почти всех дистрибутивов Linux. ping также доступен в Windows, MacOS и FreeBSD.


Как использовать команду Ping

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

Чтобы лучше проиллюстрировать, как работает команда ping, давайте пинг baks.dev :

Вывод будет выглядеть примерно так:


Команда ping преобразует имя домена в IP-адрес и начинает отправку пакетов ICMP на IP-адрес назначения. Если целевой IP-адрес доступен, он ответит, и команда ping напечатает строку, содержащую следующие поля:

По умолчанию интервал между отправкой нового пакета составляет одну секунду.

Команда ping продолжит отправку пакетов ICMP по IP-адресу назначения, пока не получит прерывание. Чтобы остановить команду, просто нажмите комбинацию клавиш Ctrl+C.

Как только команда останавливается, она отображает статистику, включающую процент потери пакетов. Потеря пакета означает, что данные были отброшены где-то в сети, что указывает на проблему в сети. Если есть потеря пакета, вы можете использовать traceroute команду, чтобы определить, где происходит потеря пакета.

Если ping не возвращает ответ, это означает, что сетевое соединение не установлено. Когда это происходит, это не всегда означает, что IP-адрес назначения не активен. Некоторые хосты могут иметь брандмауэр, который блокирует трафик ICMP или настроен так, чтобы не отвечать на запросы ping.

В случае успеха ping команда завершается с кодом 0 . В противном случае он выйдет с кодом 1 или 2 . Это может быть полезно при использовании ping утилиты в скрипте оболочки.

В следующих разделах мы рассмотрим наиболее часто используемые ping параметры команд.


Укажите количество пакетов

Как уже упоминалось, по умолчанию, ping будет продолжать отправлять пакеты ICMP, пока не получит сигнал прерывания. Чтобы указать количество отправляемых пакетов эхо-запросов, после которых ping будет завершен, используйте -c параметр с указанием количества пакетов:

Например, чтобы пинговать baks.dev только один раз, вы должны использовать:


Укажите интерфейс источника

Поведение команды по умолчанию ping - отправка пакетов ICMP по маршруту по умолчанию. Если у вас есть несколько интерфейсов на вашем компьютере, вы можете указать исходный интерфейс с -I опцией:

Следующая команда будет пинговать, baks.dev используя em2 в качестве исходного интерфейса:

Укажите интернет-протокол

При запуске ping команды она будет использовать IPv4 или IPv6, в зависимости от настроек DNS вашего компьютера.

Чтобы принудительно ping использовать IPv4, передайте -4 опцию или используйте ее псевдоним ping4 :

Для IPv6, передайте -6 опцию или используйте ping6 :

Вывод

ping это сетевая утилита командной строки, которая позволяет вам проверять подключение на уровне IP данного хоста в сети.

Чтобы просмотреть все доступные параметры ping команды, введите man ping свой терминал.

Бывают ситуации, когда резко пропадает интернет или компьютер в локальной сети перестает работать, чтобы быстро определить работает ли сеть, работает ли интернет - поможет ping. Эта универсальная команда есть во всех операционных системах. Она проверяет доступность удаленного хоста, отправляя ICMP-пакеты.

Согласно модели OSI, все данные в компьютерном мире передаются небольшими пакетами. Утилита посылает эхо-запрос по протоколу ICMP и ожидает получить ответ, если получает, то считается что узел доступен.

Параметры

Посмотрим, что говорит справка команда ping --help.

ping --help

Результат выполнения ping --help

Как мы видим выше, синтаксис очень простой. В качестве адреса мы пишем доменное имя или ip-адрес узла. Например ip-адрес локального компьютера может выглядеть так: 192.168.0.1. Рассмотрим параметры или их еще называют аргументы:

-w. Ограничение посылаемых пакетов по времени. В аргументе указывается время в секундах.

-i. Интервал в секундах между данными.

-d. Если дословно переводить, то запретить адрес хоста.

-r. Игнорировать правила таблицы маршрутизации.

-4. Использовать только четвертую версию интернет протокола IPv4.

-6. Соответственно, только 6 версию IPv6.

-b. Разрешить широковещательный адрес.

-D. Вывести время.

-v. Подробный вывод.

-f. Режим flood. Данные передаются без задержки. Опция может использоваться как Dos-атака. Доступна только с правами root.

-t. Установить TTL.

-?. Вывести справочную информацию.

-s. Установить размер пакета.

Примеры

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

В Линуксе при выполнение этой операции пакеты будут посылаться очень долго, в отличие от Windows. Там всего 4 пакета.

Пингуем сайт

Как остановить ping в linux? Для этого необходимо прервать процедуру принудительно, нажимаем горячие клавиши ctrl + C.

Оставновка процесса ctrl +c

Результат нажатия клавиш ctrl + c

На скриншоте выше смотрим статистику:

  • 14 packets transmitted - отправлено пакетов;
  • 14 received - количество полученных пакетов;
  • 0% packet loss - сколько процентов потерянных пакетов;
  • 13322mc time - время работы;

Чтобы не прерывать процедуру в будущем, можно ввести дополнительный аргумент "-с", тем самым мы зададим количество отправляемых пакетов.

Пинг конкретного порта

Часто приходится диагностировать доступность порта на хосте. Однако, команда пинг не умеет этого делать. Нельзя просто написать ping номер порта. Так это не работает.

Для такой задачи идеально подойдет - telnet. Он по умолчанию устанавливается в операционную систему Linux.

Эта заметка выросла из шпаргалки для самого себя. Мне по работе приходится отлавливать баги в сети. Как проверить скорость в VPN-туннеле? Почему сервер не пингуется? Или пингуется, но не доступен. Кто забил весь канал торрентами? Где пропадают пакеты? Почтовый клиент выдает непонятную ошибку, что произошло на самом деле? Эти и многие другие вопросы периодически возникают у любого пользователя. Под катом описание программ входящих во все современные дистрибутивы, начиная от пинга и до таких экзотических как ngrep. А так же картинками, если картинками можно назвать, копии дампа с консоли.

Ключ -n означает, что надо выводить IP адреса вместо доменных имен, это полезно если пингуете по IP, тогда не будет тратится время на разрешение доменого имя, а еще, если DNS сервер не доступен это приведет к паузе в несколько секунд. Ключ -i задает интервал между отправкой пакетов, а -s размер пакета. Размер не может быть больше, чем MTU интерфейса. При помощи комбинации ключей -i и -s можно загрузить канал на любую ширину. -I задает имя интерфейса, через который будет отправлен пакет, полезно, если надо обойти таблицу маршрутизации. Чтобы вывести статистику, как я сделал я после третьего пакета, надо послать пингу сигнал SIGQUIT, с клавиатуры это делается Cntr+\

traceroute

traceroute показывает маршрут до удаленного хоста. По умолчанию он работает довольно медленно, так как опрашивает каждый роутер на пути пакета, по очереди и по три раза. Вы видите три времени ответа рядом с каждым хостом или три звездочки, если он не отвечает. Но traceroute можно ускорить. Ключ -N показывает сколько шагов пути пакета, они называются хопами, найти за 1 цикл, а -q количество запросов, которые будут отправлены к хосту. Ключ -A показывает номер автономной системы. Автономная система — блок IP сетей, выделенных одному оператору.

tcpdump

Иногда полезно глубже заглянуть, что же происходит в сети. Какие пакеты приходят и уходят. Например, чтобы удостовериться, что пакеты все таки уходят, а не блокируются фаерволом.

Вот что происходит при команде

ngrep

И несколько простых утилиток, про которые нужно знать, что они существуют.
Как узнать, через какую запись в таблице маршрутизации пойдет трафик на IP адрес.

image

Как посмотреть кто или что забивает канал?
Для этого есть утилита iptraf c интерфейсом основанным на ncurses. При запуске без параметров выводит меню.
Для того, чтобы посмотреть суммарную статистику по интерфейсу
iptraf -d eth0

image

Для статистики по соединениям
iptraf -i eth0

Например у вас есть VPN туннель. Как проверить его ширину? Самый простой способ это утилита iperf. На одном хосте запускаем ее с ключем -s это будет сервер, который повиснет по умолчанию на порт 5001. С другой стороны запускаем с единственным параметром — адресом нашего сервера.

image

mii-tool

За рамками обзора остались nmap и hping. Жду в камментах ссылки на другие полезные программы. Может имеет смысл перенести в какой-нибудь подходящий блог?


Сеть является неотъемлемой частью Linux и предлагает множество инструментов и команд для диагностики любой сетевой проблемы.

Сетевые команды в примерах в Linux

• Найти хост / доменное имя и IP-адрес — hostname
• Сделать тест сетевого соединения — ping-
• Получение конфигурации сети — Ifconfig
• Сетевые соединения, таблицы маршрутизации, статистики интерфейсов — NETSTAT
• Поиск имени DNS запрос — Nslookup
• Подключение к другим хостам — Telnet
• Получить сетевой хост — информация для пользователя трассировку
• Сделать трассировку — traceroute
• Просмотр информации пользователя – finger
• Проверка статуса хоста назначения — Telnet

Примеры использования сетевых команд в Linux

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

hostname — Имя хоста

Имя хоста (hostname) без вариантов отображает хозяина машины. По этому чтобы проверить кто владелец выполните команду:

ping — пинг

Он посылает пакеты информации в определенный пользователем источник. Если будут получены пакеты , устройство назначает и посылает пакеты обратно . Ping можно использовать для двух целей

1 . Чтобы гарантировать, что сетевое соединение может быть установлено.

Можно задать время перед отправкой пакета, например подождать 3 секунды перед отправкой следующего пакета.

Чтобы проверить локальный интерфейс существует несколько способов:

Можно так же посылать N количество пакетов и после чего завершить работу, для этого:

Так же можно узнать версию самого пинга, для этого выполните команду:

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

Можно изменить размер передаваемого пакета (допустим с 56 на 120), а сделать это можно так:

Мы так же можем изменять длительность выполнение команды пинг, например нам нужно пинговать сервис 15 секунд, то для этого выполните:

Не прервав команду пинг, вы сможете увидеть статистику выполнения, нужно нажать CTRL + |

Ifconfig

Посмотреть конфигурацию сети , он отображает текущую конфигурацию сетевого адаптера . Это удобно, чтобы определить, если вы transmit (ТХ ) или receive (RX) ошибки.

ifconfig

traceroute

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

Можно вывести информацию о всех сетевых картах что подключены, для этого выполните:

netstat

Самая полезная и очень универсальная для нахождения подключений к и от хозяина. Вы можете узнать все о многоадресной группы (multicast groups) сети выполнив:

Чтобы увидеть все соединения в том числе TCP и UDP выполните команду:

Параметр что выполнена программа будет отображать только соединение TCP:

Параметр что выполнена программа будет отображать только соединение UDP:

nslookup

Если вы знаете IP-адрес он будет отображать как имя хоста. Чтобы найти все IP-адреса для данного доменного имени, команда Nslookup используется. Вы должны быть подключение к Интернету для этой утилиты. Пример использования:

Вы также можете использовать Nslookup преобразовать имя хоста в IP-адрес и с IP-адреса из имени хоста.

finger

Посмотреть информацию о пользователях, отображает имя пользователя логин, настоящее имя, имя терминала и статус записи. это довольно старая команда для Linux и редко используемые в настоящее время.

telnet

Подключается хозяина назначения по протоколу Telnet, если телнет соединение установить на любом порту означает соединения между двумя хостами работает нормально.

Обычно он используется для того чтобы узнать жив ли хост ​​или сетевое соединение в порядке.

Читайте также: