Z pewnością spotkałeś się z sytuacją, gdy Internet na twoim komputerze nagle się zerwał, takie zachowanie można zaobserwować podczas korzystania z modemów ADSL, Wifi na duże odległości, GSM i innych podobnych zawodnych technologii. Możesz szybko sprawdzić, czy twój komputer ma internet, używając narzędzia ping.
Jednak zakres jego zastosowania jest znacznie szerszy, jest używany przez administratorów sieci do sprawdzania dostępności zdalnego węzła w sieci, jest używany w różnych skryptach i wielu innych miejscach. W tym artykule przyjrzymy się poleceniu ping w systemie Linux, porozmawiamy o tym, jak korzystać z tego narzędzia, jak ono działa, przyjrzymy się jego opcjom i funkcjom.
Narzędzie ping jest prostym narzędziem do rozwiązywania problemów z siecią. Pozwala sprawdzić, czy zdalny host jest dostępny, czy nie i to wszystko. Aby to zrobić, narzędzie sprawdza, czy host może odpowiadać na żądania sieciowe za pomocą protokołu ICMP. Mam nadzieję, że nie muszę mówić, że wszystkie dane w sieci są przesyłane jako małe pakiety. Program przesyła mały pakiet danych ICMP i oczekuje otrzymania pakietu odpowiedzi z powrotem, jeśli tak się stanie, zdalny host zostanie uznany za osiągalny. ICMP lub Internet Control Message Protocol to dodatek do protokołu IP, który służy do przesyłania komunikatów o usługach i błędach.
Protokół ICMP może przesyłać tylko dwa rodzaje pakietów - komunikaty o błędach i komunikaty żądań. Z kolei komunikaty zapytań dzielą się na:
Komunikat żądania echa;
Komunikat odpowiedzi echa.
Następnie zrozumiemy, co robi polecenie ping
. Po wysłaniu żądania ping
do zdalnego hosta, narzędzie ustawia unikalny identyfikator dla każdego pakietu, a także TTL i czas wysłania pakietu. Jeśli host jest osiągalny, wysyła odpowiedź; na podstawie czasu wysyłania narzędzie może obliczyć czas podróży pakietu w obie strony. Następnie wysyłany jest kolejny pakiet. Na koniec obliczana jest całkowita liczba wysłanych i odebranych pakietów, procent strat i inne dane.
Teraz pozostało nam trochę praktyki. Zanim jednak przejdziemy do praktyki, przyjrzyjmy się składni polecenia i jego opcjom. Składnia jest dość prosta:
$ ping [options] host_address
Format polecenia ping
jest bardzo prosty. Jako adres hosta można podać adres IP lub nazwę domeny. Opcje konfigurują zachowanie narzędzia. Rozważmy główne z nich:
-4
- używaj tylko ipv4 (domyślnie);
-6
- używaj tylko ipv6;
-A
- tryb adaptacyjny, czas między wysłaniem pakietu jest dostosowany do czasu transmisji i odbioru pakietu, ale nie mniej niż 200 milisekund;
-b
- zezwolenie na ping
adresu rozgłoszeniowego;
-c
- liczba pakietów do wysłania;
-D
- czas wyjściowy jako znacznik czasu UNIX
;
-f
- tryb flood, w tym trybie pakiety są przesyłane bez opóźnień, może być używany do ataków DoS na poszczególne węzły. Liczba kropek na wyjściu narzędzia wskazuje liczbę utraconych pakietów;
-i
- interwał w sekundach między wysyłaniem pakietów;
-I
- używaj tego interfejsu sieciowego do wysyłania pakietów;
-l
- tryb przeciążenia, wysyłanych jest bardzo wiele pakietów, a system nie monitoruje pakietów odpowiedzi;
-n
- nie pobieraj domen dla adresów ip;
-r
- ignoruje tablice routingu i wysyła pakiet do określonego interfejsu;
-s
- rozmiar jednego pakietu;
-t
- ręczne ustawienie TTL;
-v
- bardziej szczegółowe dane wyjściowe.
Teraz, gdy omówiliśmy podstawowe parametry polecenia ping
i jego składnię, nadszedł czas na praktykę, w następnej kolejności porozmawiamy o tym, jak pingować określony host w systemie Linux.
Aby sprawdzić wydajność sieci, często używa się pingowania
dowolnej witryny, która jest zawsze dostępna, takiej jak google.com
lub nawet prostszej i krótszej ya.ru.
Wystarczy przekazać ten adres do narzędzia w parametrach, a ono samo znajdzie adres IP i wykona wszystkie niezbędne czynności:
$ ping ya.ru
Każdy pakiet otrzymał unikalny identyfikator icmp_seq
, liczbę węzłów do węzła docelowego ttl oraz czas spędzony na dostarczeniu pakietu time
. Aby zatrzymać ping
, należy nacisnąć skrót klawiaturowy Ctrl+C. Na koniec narzędzie wyświetla ogólne statystyki:
packets
transmitted - pakiety wysłane;
received
- pakiety odebrane;
packet loss
- procent utraconych pakietów;
czas
- całkowity czas pracy;
rtt min/avg/max/mdev
- minimalny czas/średniczas/maksymalny
czas/odchylenie kwadratowe.
Jeśli polecenie ping
nie zostanie zatrzymane, pakiety mogą być wysyłane przez bardzo długi czas, co powoduje dodatkowe obciążenie serwera i dlatego nie jest pożądane. Można ograniczyć liczbę pakietów wysyłanych natychmiast w wywołaniu polecenia za pomocą opcji -c
:
$ ping -c 3 ya.ru
Podobnie jak w przypadku ping
dla domeny, można bezpośrednio określić adres IP. Pozwala to sprawdzić, czy istnieje sieć, w której serwery DNS są źle skonfigurowane. Na przykład:
$ ping -c 3 8.8.8.8
Kolejnym typem wysyłania wiadomości ping
, jest ping
flood. Za pomocą takich pakietów można przeprowadzić test obciążenia kanału, a nawet wyłączyć połączenie internetowe na jednej z maszyn. Ale te funkcje mogą być używane tylko z prawami superużytkownika. Aby zorganizować ping flood, należy podać opcję -f
:
$ ping -f losst.ru
Domyślnie, w trybie normalnym, każdy następny pakiet jest wysyłany po otrzymaniu odpowiedzi na poprzedni. Można jednak ustawić interwał między wysyłaniem pakietów -i
:
$ ping -i 0.2 losst.ru
Tutaj program ping
wykonuje tak zwany, konfigurowalny flood, określasz z jaką intensywnością chcesz wysyłać pakiety. Za pomocą opcji -D
można zobaczyć uniksowy znacznik czasu dla każdej wiadomości:
$ ping -D losst.ru
Przyjrzeliśmy się czym jest polecenie ping
w Linuksie, jak z niego korzystać podstawowe parametry i metody zastosowania. To bardzo proste narzędzie może być używane do testowania problemów sieciowych i ich rozwiązywania. Pod tym względem narzędzie to może stać się niezbędne.