Як запустити нескінченний пінг
15 прикладів команди PING для діагностики мережі
Завдяки Linux, у нас є дуже багато інструментів, що полегшують адміністрування та діагностику мережі. У цьому плані команда PING є одним з найкорисніших інструментів для системних та мережевих адміністраторів.
Сама базова можливість цієї утиліти - визначити чи доступний той чи інший хост. Тим не менш, у цьому матеріалі ми наведемо приклади розширених можливостей цієї команди в системі Linux.
Про Linux за 5 хвилин Що це чи як фінський студент перевернув світ?
Навіщо використовується команда 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.
Щоб перевірити доступність порту, просто введіть наступну команду:
Ping із виведенням часу
Хоча команда ping дає багато корисної інформації, але може бути недостатньо. Тим не менш, є можливість настроїти команду так, щоб вона показала дату та час відправлення пакета. Це може зробити висновок приємнішим і кориснішим для скриптів та логування.
Для цього достатньо прописати вказану нижче команду. Але вам доведеться встановити пакет ccze.
ping [host] | xargs -n1 -i bash -c 'echo `date +%F %T`"<>"' | ccze
Як видно зі скріншота, команда показує дату та час надсилання кожного пакета.
Ping всіх пристроїв у вказаній підмережі
Командою Ping можна надсилати сигнал всім хостам у мережі чи підмережі. Для цього потрібно запустити ping з ключем –b на широкомовну адресу, яка закінчується на 255. Наприклад:
ping-b-c 4 192.168.1.255
Отже, якщо хост призначення недоступний, значить або там блокуються пакети ICMP, або є проблеми з мережею або таблицею маршрутизації.
Як завершити команду PING?
За умовчанням, у системі Linux команда Ping безперервно посилає пакети на хост. Але якщо потрібна інформація отримана, необхідно якось перервати виконання команди. Для цього потрібно просто натиснути комбінацію клавіш CTRL+C .
Після цього команда негайно зупиняється.
Завершення роботи команди по лічильнику
Ви можете обмежити кількість пакетів, що посилаються. Наприклад, якщо поставити число пакетів рівним 10, то після надсилання вказаної кількості пакетів виконання команди припиниться.
Де розташована утиліта PING?
У Unix-подібних системах таких, як Linux бінарні файли зазвичай розташовуються по дорозі
У цій папці можна знайти безліч бінарних файлів, які ми використовуємо як команди в терміналі. В інших ОС сімейства Linux, вони можуть бути розташовані в:
Перевірити це можемо командою ls:
$ls /usr/bin | grep ping
На скріншоті видно, що команда ping знаходиться у папці
Інший метод, яким можна знайти місце розташування команд це which :
На висновку вона дасть таку інформацію:
Перевірка затримки командою PING
Однією з можливостей, які надає команда PING, є можливість вимірювання часу відгуку мережі. Інакше це називається затримка чи час очікування.
Щоб виміряти затримку, введи вказану команду і зверніть увагу на ввод:
ping-c 4 [host] ping-c 4 192.168.1.1
Як ви могли помітити, кожен пакет було надіслано з конкретним часом відповіді. Наприкінці ж є рядок, який починається на:
Друге значення після знаку рівності – час затримки. У нашому випадку він дорівнює 6798.
За допомогою цього показника ми можемо визначити хости, зв'язок з якими гірший і вжити відповідних заходів.
Пошук ідеального значення MTU
MTU (Maximum Transmission Unit) це максимальний розмір пакета, який може бути переданий через мережу.
Сьогодні з метою безпеки в мережах створюються перешкоди для роботи MTU. Але більшість локальних мереж на основі Ethernet використовує MTU розміром 1500 байт.
Якщо потрібно знайти найбільш відповідний розмір MTU за допомогою команди Ping, слід визначити початкове значення та зменшувати його доти, доки припиняться помилки. Якщо значення велике, ми отримаємо таку помилку:
ping: локальна помилка: Message too long
Щоб зробити це, запустіть наступну команду:
ping -M do -s [initial_value] [host]
У нашому випадку значення розміру пакета занадто велике. Тому зменшуємо його до 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
В результаті отримаєте щось подібне:
Виведення команди показує розмір відправленого пакета, потім MAC адреса вузла призначення та час відповіді.
Зазначимо, що ця команда не встановлена на системі Debian та похідних.
Ping на ім'я вузла
За замовчуванням команда ping посилає пакети на вузол призначення, використовуючи IP адресу або ім'я вузла призначення. Також слід зазначити, що більшість реалізацій утиліти ping на Linux не дозволяють DNS у зворотному напрямку.
Наприклад, якщо ми запустимо команду ping, вказавши IP-адресу, він поверне лише IP вузла. І навпаки, якщо параметр передамо ім'я вузла, то команда поверне його IP адресу. Подивіться висновок, ввівши команду нижче:
Ping маршруту (traceroute)
Сама собою команда ping не показує шляху від джерела до вузла призначення.Але це було б дуже доречним у тому випадку, коли вузол призначення не відповідає, щоб визначити, де саме губиться зв'язок.
Команда tracert (Windows) або traceroute працюють подібно до ping. Перевагою цієї команди є те, що він показує весь шлях проходження пакета від джерела до вузла призначення.
У принципі traceroute посилає той же пакет ICMP, що і Ping. Але у випадку traceroute, на відміну від ping початково значення TTL пакета виставляється рівним одиниці. Пакет доходить до першого вузла на шляху до вузла призначення. Пристрій зменшує TTL на одну одиницю і якщо виходить нуль, повертає повідомлення про помилку закінчення часу пакета. У повідомлення також міститься IP адреса та ім'я хоста. Відправник отримує це повідомлення. Якщо воно не від вузла призначення, то посилає другий пакет з TTL на один більший за попередній. І так доти, доки не отримає відповідь від вузла призначення. Для отримання шляху потрібно запровадити команду:
traceroute [hostname/IPaddres]
Запустити команду якщо 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
Якщо ви обслуговуєте мережу, то вам може бути необхідно відключити відповідь на запити ping в будь-який час. Це можна зробити як тимчасово, так і постійно, залежно від ваших потреб. Для тимчасового відключення команди ping потрібно ввести команду нижче від імені root-а:
$ su $ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
Вона вимкнути можливо відповіді на ICMP запити до перезавантаження системи. Але якщо потрібно назавжди відключити цю можливість, доведеться відредагувати файл
і додати наступний рядок:
net.ipv4.icmp_echo_ignore_all=1
Збережіть файл і для внесення змін введіть команду:
Висновок
У цьому матеріалі ми розглянули, як ping працює в системі Linux. Ping одна з найлегших команд. Вона дозволяє особам, відповідальним у забезпеченні нормально роботи мережі, виявляти проблеми та усувати їх.