Сьогодні мережі настільки поширені, що більшість з нас вважають, що комп’ютер на одній стороні кімнати може зв’язуватися з комп’ютером на іншій стороні кімнати, а тим більше з іншою стороною світу. Коли все працює так, як задумано, мережа – це те, що робить можливими Інтернет, хмара, спільне використання файлів, потокову передачу мультимедіа, віддалене адміністрування, друк та багато іншого. Коли щось йде не так, іноді важко діагностувати. Одним із найбільш фундаментальних інструментів діагностики мережевого підключення є команда ping.
Якщо ви не можете підключитися до комп’ютера в локальній мережі або сервера в Інтернеті, ви можете пропінгувати його. Ping надсилає пакет протоколу керуючих повідомлень Інтернету (ICMP) на IP-адресу призначення. ICMP цє рудиментарний формат, що використовується в основному для діагностики: це, по суті, сигнал запиту та відповіді.
Процес усунення неполадок починається з дому. Спочатку перевірте зв’язок зі своїм комп’ютером, щоб переконатися, що у вас працює мережевий стек. Комп’ютер, на якому ви працюєте, також називається локальним хостом (localhost), і йому призначено спеціальну IP-адресу для розмови із самим собою: 127.0.0.1.
Команда ping розуміє ім’я хоста localhost, його коротка IP-адреса просто 0.
Ви можете контролювати кількість сигналів, що відправляються, за допомогою опції -c (as in count).
$ ping 0 -c1 PING 0 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms --- 0 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms
Після того, як ви встановили, що ваш локальний стек запущений і працює, ви можете пропінгувати свій маршрутизатор. Адреса маршрутизатора зазвичай починається з 192.168 або 10. Точна IP-адреса залежить від конфігурації вашого маршрутизатора.
Зупинити виконання пінгу можна за допомогою Ctrl+C.
$ ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1) From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1) From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1) From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1) ^C
Якщо ви можете підключитися до маршрутизатора, це означає, що ваше дротове або бездротове з’єднання працює.
А як щодо інших хостів у моїй мережі? Ви можете пінгувати усі види пристроїв. Не всі гарантовано дадуть відповідь (деякі пристрої відкидають пакети ICMP), але багато хто це робить. Наприклад, я можу пропінгувати свій принтер:
<span class="co4">$ </span><span class="kw2">ping</span> 192.168.0.104
Перевірка зв’язку за межами вашої мережі
Окрім перевірки роботи домашньої мережі, ви також можете вийти у “великий світ” за межами вашого маршрутизатора. Не всім серверам можна отримувати ICMP, а тим більше відповідати на нього. Тим не менш, деякі з них працюють, і життєво важливий сервер для роботи в Інтернеті – це DNS-сервер.
Адреса DNS-сервера Google відносно легко запам’ятати, і він відповідає на ехо-запити:
$ ping -c 2 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms --- 8.8.8.8 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms
Коли сайт явно зник, ви можете перевірити мережу DNS, щоб дізнатися, яка адреса її хост-сервера, а потім перевірити зв’язок із цим сервером. Принаймні так ви дізнаєтеся не працює хост або просто проблема з веб-сервером.
Наприклад, ви безуспішно намагаєтеся перейти на example.com. Спочатку знайдіть IP-адресу за допомогою команди host:
$ host example.com example.com has address 93.184.216.34 example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946 example.com mail is handled by 0
А потім пінгуйте хост сайту по IP:
<span class="co4">$</span> <span class="kw2">ping</span> 93.184.216.34 <span class="re5">-c</span> <span class="nu0">1</span>
Ping та IPv6
Ping працює як з IPv4, так і з IPv6. Явне використання лише однієї з них можна примусово застосувати, вказавши -4 чи -6.
Розмір пакета
Ви можете змінити розмір ICMP-пакетів за допомогою параметра -s. Розмір пакета за замовчуванням становить 56, що у поєднанні з 8-байтовим заголовком перетворюється на 64 байти даних ICMP. Ця команда відправляє 43 байти:
<span class="co4">$ </span><span class="kw2">ping</span> <span class="re5">-s</span> <span class="nu0">35</span> <span class="re5">-c</span> <span class="nu0">5</span> 8.8.8.8
Ви можете вивести тимчасову мітку перед кожним звітом ping у терміналі з опцією -D:
$ ping -D 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. [1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms [1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms
Час пінгу
Ви можете змінити часовий інтервал між ехо-запитами, використовуючи параметр -i. Команда змінює інтервал ping на дві секунди:
<span class="co4">$ </span><span class="kw2">ping</span> <span class="re5">-i</span> <span class="nu0">2</span>
Ви можете зупинити пінг через певний час (в секундах) за допомогою опції -w:
<span class="co4">$ </span><span class="kw2">ping</span> <span class="re5">-w</span> <span class="nu0">6</span>
Варіанти
Є багато реалізацій ping. У пакеті iputils є команда ping, Busybox є команда ping, ще одна – від BSD та інших. Є навіть графічний інтерфейс для ping: Gping доступний для Linux, MacOS і Windows. Детальнішу інформацію про gping можна знайти на Github.
Навчіться пінгувати
Команда ping проста, але вона може бути очима та вухами на просторому просторі вашої мережі. Наступного разу, коли у вас виникнуть проблеми із підключенням, дозвольте ping бути вашим першим інструментом.