Команда Linux ping
В Linux команда ping — один из наиболее часто используемых инструментов для устранения неполадок, тестирования и диагностики проблем с сетевым подключением.
Команда ping отправляет один или несколько пакетов эхо-запроса ICMP (Internet Control Message Protocol) на указанный IP-адрес назначения в сети и ожидает ответ. Пункт назначения после получения пакета отвечает эхо-ответом ICMP.
Содержание
Возможности
С помощью этой утилиты можно определить:
- активен или неактивен удаленный IP-адрес;
- время задержки туда-обратно при связи с пунктом назначения;
- есть ли потеря пакетов.
Синтаксис
Опции
Примеры использования команды ping в Linux
Использование без опций
В качестве простейшего примера даём ping для google.com :
Утилита преобразовала доменное имя ( google.com ) в IP-адрес ( 216.58.214.142 ) и начала отправлять пакеты ICMP на целевой IP-адрес. Доступный IP-адрес назначения ответил и утилита напечатала строку, содержащую следующие поля:
Количество байтов данных Значение по умолчанию — 56, что соответствует 64 байтам данных ICMP 64 bytes IP-адрес получателя from fra16s06-in-f142.1e100.net (216.58.214.142) Порядковый номер ICMP для каждого пакета icmp_seq=1 Время жизни ttl=119 Время проверки связи туда-обратно, ms time=15.9 ms
По умолчанию интервал между отправкой нового пакета составляет одну секунду.
Если ответ не возвращается, это означает, что сетевое соединение не установлено. Когда это происходит, это не всегда означает, что IP-адрес назначения не активен. Некоторые хосты могут иметь брандмауэр, который блокирует трафик ICMP или не отвечает на запросы ping .
Как остановить команду ping в Linux
Команда ping будет продолжать отправлять пакеты ICMP на IP-адрес назначения, пока не получит прерывание. Для того чтобы остановить команду, просто нажмите комбинацию клавиш Ctrl+C.
Потери пакетов
После остановки команда ping отображает статистику, включая процент потери пакетов. Потеря пакета означает, что данные были потеряны где-то в сети, что указывает на проблему в сети. В случае потери пакетов, вы можете использовать команду traceroute, чтобы определить, где произошла потеря.
Ограничение количества пакетов
Команда ping по умолчанию отправляет ICMP-пакеты до получения сигнала прерывания. Для ограничения количества пакетов отправляемых эхо-запросов используется опция -c , за которой следует количество пакетов:
Теперь прерывание произошло автоматически.
Указание Интернет-протокола
Например, для принудительного использования протокола IPv4, передайте команде опцию -4 :
Заключение
В Linux сетевая утилита командной строки ping позволяет вам проверить подключение на уровне IP данного хоста в сети. Она проста в использовании и может быть очень полезна многим пользователям.
Как прекратить пинг, не закрывая окно командного терминала?
Когда я использую команду «Ping» в окне терминала, как мне прекратить пинг? Я пропинговал мой маршрутизатор (192.168.1.1), и результаты отобразились в окне терминала, но программа продолжает работать без указания того, как завершить работу.
Я могу завершить команду, закрыв окно командного терминала, но я бы предпочел оставить его открытым, чтобы я мог сравнивать эхо-запросы с разными адресами.
Ubuntu 14.04 LTS
5 ответов
Есть три варианта:
Прервать вручную ping команда с использованием Ctrl + C , как описано в steeldriver@ steeldriver.
использование ping опция «считать» ( -c COUNT ) отправлять в точности COUNT-пинги, а затем автоматически завершать, как описано в Panther@ Panther.
использование ping опция «крайний срок» ( -w DEADLINE ) для запуска точно в течение секунд и затем завершить автоматически.
Конечно, вы можете объединить три варианта. Если вы передадите опцию «count» и «deadline», ping прекратит работу, как только произойдет первое событие. И Ctrl + C работает всегда в любом случае.
Вот пример с «счетом» максимум 10 пингов и «крайним сроком» 5 секунд, но который завершается вручную с помощью Ctrl + C после 3 пингов ( ^C ):
Команда 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 и сделает все нужное:
Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:
- packets transmitted — отправлено пакетов;
- received — получено пакетов;
- packet loss — процент потерянных пакетов;
- time — обще время работы;
rtt min/avg/max/mdev — минимальное время/среднее время/максимальное время/квадратичное отклонение.
Если выполнение команды ping не остановить, то пакеты могут отправляться очень долгое время, это создает дополнительную нагрузку на сервер и поэтому не желательно. Вы можете сразу в вызове команды ограничить количество отправляемых пакетов с помощью опции -c:
Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:
Следующий вид отправки 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, как ее использовать основные параметры и методы применения. Этот очень простой инструмент можно применять для тестирования неполадок сети и их исправления. В этом плане утилита может стать незаменимой.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
7 сетевых Linux-команд, о которых стоит знать системным администраторам
Существуют Linux-команды, которые всегда должны быть под рукой у системного администратора. Эта статья посвящена 7 утилитам, предназначенным для работы с сетью.
Этот материал — первый в серии статей, построенных на рекомендациях, собранных от множества знатоков Linux. А именно, я спросил у наших основных разработчиков об их любимых Linux-командах, после чего меня буквально завалили ценными сведениями. А именно, речь идёт о 46 командах, некоторые из которых отличает тот факт, что о них рассказало несколько человек.
В данной серии статей будут представлены все эти команды, разбитые по категориям. Первые 7 команд, которым и посвящена эта статья, направлены на работу с сетью.
Команда ip
Команда ip — это один из стандартных инструментов, который необходим любому системному администратору для решения его повседневных задач — от настройки новых компьютеров и назначения им IP-адресов, до борьбы с сетевыми проблемами существующих систем. Команда ip может выводить сведения о сетевых адресах, позволяет управлять маршрутизацией трафика и, кроме того, способна давать данные о различных сетевых устройствах, интерфейсах и туннелях.
Синтаксис этой команды выглядит так:
Самое важное тут — это <OBJECT> (подкоманда). Здесь можно использовать, помимо некоторых других, следующие ключевые слова:
- address — адрес протокола (IPv4 или IPv6) на устройстве.
- tunnel — IP-туннель.
- route — запись таблицы маршрутизации.
- rule — правило в базе данных политики маршрутизации.
- vrf — управление виртуальными устройствами маршрутизации и перенаправления трафика.
- xfrm — управление IPSec-политикой.
Вывод IP-адресов, назначенных интерфейсу на сервере:
Назначение IP-адреса интерфейсу, например — enps03 :
Удаление IP-адреса из интерфейса:
Изменение статуса интерфейса, в данном случае — включение eth0 :
Изменение статуса интерфейса, в данном случае — выключение eth0 :
Изменение статуса интерфейса, в данном случае — изменение MTU eth0 :
Изменение статуса интерфейса, в данном случае — перевод eth0 в режим приёма всех сетевых пакетов:
Добавление маршрута, используемого по умолчанию (для всех адресов), через локальный шлюз 192.168.1.254, который доступен на устройстве eth0 :
Добавление маршрута к 192.168.1.0/24 через шлюз на 192.168.1.254:
Добавление маршрута к 192.168.1.0/24, который доступен на устройстве eth0 :
Удаление маршрута для 192.168.1.0/24, для доступа к которому используется шлюз 192.168.1.254:
Вывод маршрута к IP 10.10.1.4:
Команда ifconfig
Команда ifconfig до определённого времени представляла собой один из основных инструментов, используемых многими системными администраторами для настройки сетей и решения сетевых проблем. Теперь ей на замену пришла команда ip , о которой мы только что говорили. Но если вас, всё же, интересует эта команда, можете взглянуть на данный материал.
Команда mtr
MTR (Matt’s traceroute) — это программа, работающая в режиме командной строки, представляющая собой инструмент для диагностики сетей и устранения сетевых неполадок. Эта команда совмещает в себе возможности ping и traceroute . Она, как traceroute , может выводить сведения о маршруте, по которому сетевые данные идут от одного компьютера к другому. Она выводит массу полезных сведений о каждом шаге маршрутизации, например — время ответа системы. Благодаря использованию команды mtr можно получить довольно подробные сведения о маршруте, можно обнаружить устройства, которые вызывают проблемы при прохождении данных по сети. Если, например, наблюдается рост времени ответа системы, или рост числа потерянных пакетов, это позволяет с уверенностью говорить о том, что где-то между исследуемыми системами возникла проблема с сетевым соединением.
Синтаксис команды выглядит так:
Рассмотрим несколько распространённых способов применения mtr .
Если вызвать эту команду, указав лишь имя или адрес хоста — она выведет сведения о каждом шаге маршрутизации. В частности — имена хостов, сведения о времени их ответа и о потерянных пакетах:
Вот — вариант использования mtr , когда вместо имён хостов выводятся их IP-адреса (речь идёт о ключе -g , благодаря которому вместо имён выводятся числовые IP-адреса):
А следующий вариант команды позволяет выводить и имена, и IP-адреса хостов:
Так можно задать количество ping-пакетов, которые нужно отправить системе, маршрут к которой подвергается анализу:
А так можно получить отчёт, содержащий результаты работы mtr :
Вот — ещё один вариант получения такого отчёта:
Для того чтобы принудительно использовать TCP вместо ICMP — надо поступить так:
А вот так можно использовать UDP вместо ICMP:
Вот — вариант команды, где задаётся максимальное количество шагов маршрутизации:
Так можно настроить размер пакета:
Для вывода результатов работы mtr в формате CSV используется такая команда:
Вот — команда для вывода результатов работы mtr в формате XML:
Команда tcpdump
Утилита tcpdump предназначена для захвата и анализа пакетов.
Установить её можно так:
Прежде чем приступить к захвату пакетов, нужно узнать о том, какой интерфейс может использовать эта команда. В данном случае нужно будет применить команду sudo или иметь root-доступ к системе.
Если нужно захватить трафик с интерфейса eth0 — этот процесс можно запустить такой командой:
Или — такой, с указанием (через ключ -c ) количества пакетов, которые нужно захватить:
▍ Захват трафика, идущего к некоему хосту и от него
Можно отфильтровать трафик и захватить лишь тот, который приходит от определённого хоста. Например, чтобы захватить пакеты, идущие от системы с адресом 8.8.8.8 и уходящие к этой же системе, можно воспользоваться такой командой:
Для захвата трафика, идущего с хоста 8.8.8.8, используется такая команда:
Для захвата трафика, уходящего на хост 8.8.8.8, применяется такая команда:
▍ Захват трафика, идущего в некую сеть и из неё
Трафик можно захватывать и ориентируясь на конкретную сеть. Делается это так:
Ещё можно поступить так:
Можно, кроме того, фильтровать трафик на основе его источника или места, в которое он идёт.
Вот — пример захвата трафика, отфильтрованного по его источнику (то есть — по той сети, откуда он приходит):
Вот — захват трафика с фильтрацией по сети, в которую он направляется:
▍ Захват трафика, поступающего на некий порт и выходящего из некоего порта
Вот пример захвата трафика только для DNS-порта по умолчанию (53):
Захват трафика для заданного порта:
Захват только HTTPS-трафика:
Захват трафика для всех портов кроме 80 и 25:
Команда netstat
Инструмент netstat используется для вывода сведений о сетевых соединениях и таблицах маршрутизации, данных о работе сетевых интерфейсов, о masquerade-соединениях, об элементах групп многоадресной рассылки. Эта утилита является, как и ifconfig , частью пакета net-tools . В новом пакете iproute2 для достижения тех же целей используется утилита ss .
Если в вашей системе netstat отсутствует, установить эту программу можно так:
Ей, в основном, пользуются, вызывая без параметров:
В более сложных случаях её вызывают с параметрами, что может выглядеть так:
Можно вызывать netstat и с несколькими параметрами, перечислив их друг за другом:
Для вывода сведений обо всех портах и соединениях, вне зависимости от их состояния и от используемого протокола, применяется такая конструкция:
Для вывода сведений обо всех TCP-портах применяется такой вариант команды:
Если нужны данные по UDP-портам — утилиту вызывают так:
Список портов любых протоколов, ожидающих соединений, можно вывести так:
Список TCP-портов, ожидающих соединений, выводится так:
Так выводят список UDP-портов, ожидающих соединений:
А так — список UNIX-портов, ожидающих соединений:
Вот — команда для вывода статистических сведений по всем портам вне зависимости от протокола:
Так выводятся статистические сведения по TCP-портам:
Для просмотра списка TCP-соединений с указанием PID/имён программ используется такая команда:
Для того чтобы найти процесс, который использует порт с заданным номером, можно поступить так:
Команда nslookup
Команда nslookup используется для интерактивного «общения» с серверами доменных имён, находящимися в интернете. Она применяется для выполнения DNS-запросов и получения сведений о доменных именах или IP-адресах, а так же — для получения любых других специальных DNS-записей.
Рассмотрим распространённые примеры использования этой команды.
Получение A-записи домена:
Просмотр NS-записей домена:
Выяснение сведений о MX-записях, в которых указаны имена серверов, ответственных за работу с электронной почтой:
Обнаружение всех доступных DNS-записей домена:
Проверка использования конкретного DNS-сервера (в данном случае запрос производится к серверу имён ns1.nsexample.com ):
Проверка A-записи для выяснения IP-адресов домена — это распространённая практика, но иногда нужно проверить то, имеет ли IP-адрес отношение к некоему домену. Для этого нужно выполнить обратный просмотр DNS:
Команда ping
Команда ping — это инструмент, с помощью которого проверяют, на уровне IP, возможность связи одной TCP/IP-системы с другой. Делается это с использованием эхо-запросов протокола ICMP (Internet Control Message Protocol Echo Request). Программа фиксирует получение ответов на такие запросы и выводит сведения о них вместе с данными о времени их приёма-передачи. Ping — это основная команда, используемая в TCP/IP-сетях и применяемая для решения сетевых проблем, связанных с целостностью сети, с возможностью установления связи, с разрешением имён.
Эта команда, при простом способе её использования, принимает лишь один параметр: имя хоста, подключение к которому надо проверить, или его IP-адрес. Вот как это может выглядеть:
В данном случае работу команды ping можно остановить, воспользовавшись сочетанием клавиш CTRL+C . В противном случае она будет выполнять запросы до тех пор, пока её не остановят. После каждой ping-сессии выводятся сводные данные, содержащие следующие сведения:
- Min — минимальное время, которое требуется на получение ответа от пингуемого хоста.
- Avg — среднее время, которое требуется на получение ответа.
- Max — максимальное время, которое требуется на получение ответа.
Обычно, если запустить команду ping в её простом виде, не передавая ей дополнительные параметры, Linux будет пинговать интересующий пользователя хост без ограничений по времени. Если нужно изначально ограничить количество ICMP-запросов, например — до 10, команду ping надо запустить так:
А для того чтобы увидеть лишь итоговый отчёт работы ping — можно воспользоваться ключом -q :
В системах с несколькими сетевыми интерфейсами можно задавать конкретный интерфейс, которым должна пользоваться команда ping . Например, есть компьютер, имеющий интерфейсы eth0 и eth1 . Если нужно, чтобы команда ping использовала бы интерфейс eth0 — надо запустить её так:
Или можно указать адрес интерфейса. В данном случае речь идёт об IP-адресе 10.233.201.45:
Применяя эту команду, можно указать и то, какую версию протокола IP использовать — v4 или v6:
В процессе работы с утилитой ping вы столкнётесь с различными результатами. В частности, это могут быть сообщения о нештатных ситуациях. Рассмотрим три таких ситуации.
▍ Destination Host Unreachable
Вероятной причиной получения такого ответа является отсутствие маршрута от локальной хост-системы к целевому хосту. Или, возможно, это удалённый маршрутизатор сообщает о том, что у него нет маршрута к целевому хосту.
▍ Request timed out
Если результат работы ping выглядит именно так — это значит, что локальная система не получила, в заданное время, эхо-ответов от целевой системы. По умолчанию используется время ожидания ответа в 1 секунду, но этот параметр можно настроить. Подобное может произойти по разным причинам. Чаще всего это — перегруженность сети, сбой ARP-запроса, отбрасывание пакетов фильтром или файрволом и прочее подобное.
▍ Unknown host/Ping Request Could Not Find Host
Такой результат может указывать на то, что неправильно введено имя хоста, или хоста с таким именем в сети просто не существует.
О хорошем качестве связи между исследуемыми системами говорит уровень потери пакетов в 0%, а так же — низкое значение времени получения ответа. При этом в каждом конкретном случае время получения ответа варьируется, так как оно зависит от разных параметров сети. В частности — от того, какая среда передачи данных используется в конкретной сети (витая пара, оптоволокно, радиоволны).
Итоги
Надеемся, вам пригодятся команды и примеры их использования, о которых мы сегодня рассказали. А если они вам и правда пригодились — возможно, вам будет интересно почитать продолжение этого материала.