dzięki Linuksowi mamy dostęp do wielu narzędzi ułatwiających administrowanie siecią& diagnostyka. W tym sensie polecenie ping Linuksa jest jednym z najbardziej przydatnych narzędzi dla sysadminów i administratorów sieci.

jego podstawową funkcją jest określenie, czy jeden host sieci jest osiągalny, czy nie. Jednak w tym poście zajmiemy się innymi bardziej zaawansowanymi możliwościami Linux ping command.

spis treści

jak używać polecenia ping?,

polecenie ping jest jednym z najbardziej podstawowych narzędzi do pracy z sieciami. Jego celem jest diagnozowanie błędów połączenia sieciowego.

w ten sposób można dowiedzieć się, czy węzeł sieci utracił łączność. Z drugiej strony, przydatne jest również wykonywanie innych zadań diagnostycznych, takich jak:

  • Zmierz czas potrzebny dwóm węzłom sieci na komunikację.
  • będziemy również w stanie zidentyfikować adres IP konkretnego hosta. Możemy korzystać z tej funkcji zarówno w Internecie, jak i w sieci prywatnej.,
  • polecenie ping może być używane w skrypcie bash do automatycznego sprawdzania węzłów sieci.
  • pozwala wiedzieć, czy istnieje połączenie z konkretnym sprzętem.

jak widać jest to komenda niezbędna do administrowania sieciami i serwerami.

jak działa polecenie ping?

w Linuksie działanie polecenia ping jest dość proste do wyjaśnienia. Polecenie wysyła serię małych pakietów do określonego węzła.

możesz przetestować ten węzeł używając adresu IP lub nazwy hosta., Następnie, po wysłaniu pakietu, polecenie weryfikuje i mierzy czas potrzebny na otrzymanie odpowiedzi z węzła docelowego.

jak można się spodziewać, czas reakcji może ulec zmianie ze względu na warunki, takie jak położenie geograficzne między punktami połączenia lub dowolny element sprzętu używanego między dwoma węzłami.

na przykład w przewodowych sieciach prywatnych polecenie będzie miało lepszy czas niż w przypadku sieci z wieloma routerami lub mostkami.

jednak informacje, które wygeneruje polecenie, osądzą, czy sieć jest w dobrym czy złym stanie.,

składnia polecenia jest następująca:

ping 

niektóre z najbardziej użytecznych i używanych opcji polecenia ping są następujące:

  • -C: za pomocą tej opcji można określić liczbę pakietów do wysłania.
  • – s: Ta opcja pozwala na zmianę domyślnego rozmiaru pakietów.
  • – v: tryb verbose.
  • – w: określa czas w sekundach zakończenia wykonywania polecenia. Bez względu na to, ile pakietów polecenie wysłało lub otrzymało.
  • – i: za pomocą tej opcji można określić używany interfejs sieciowy.,

węzeł docelowy może być określony przez adres IP lub nazwę hosta.

Czy Mogę ping z proxy?

proxy to serwer lub aplikacja, która działa jako pośrednik dla połączenia między dwoma punktami w sieci. To człowiek w środku wysyła żądanie bezpośrednio do innego węzła.

problem polega na tym, że polecenie Ping wymaga bezpośredniego połączenia sieciowego między węzłami.

dlatego polecenie Ping zazwyczaj nie może działać poprawnie, Jeśli za nim znajduje się proxy.

możliwym rozwiązaniem jest to, że wiele stron internetowych oferuje usługę polecenia Ping., Z drugiej strony, w przypadku niektórych zadań polecenia ping możliwe jest użycie polecenia curl. Możesz również użyć VPN, aby ukryć Twój adres IP.

jednak w niektórych dystrybucjach Linuksa polecenie to nie jest instalowane domyślnie. Najpierw sprawdź go, a następnie zainstaluj, jeśli nie jest zainstalowany.

ping IPv6 protocol

zwykle przy użyciu polecenia Ping używamy adresów IP z protokołem IPv4. Jednak wraz z pojawieniem się protokołu IPv6 coraz powszechniejsze jest zauważanie adresów w tym formacie.

jądro Linuksa obsługuje protokół IPv6 od wersji 2.,2, więc wszystkie dystrybucje Linuksa obecnie go obsługują.

podstawowa składnia jest następująca:

$ ping -6 2001:4860:4860::8888

w starych wersjach istniała Komenda ping6. W ostatnich wersjach Linuksa ping6 już nie istnieje, a jego funkcjonalność została połączona z pingiem i działa tak samo, jak widziałeś.

podstawowa składnia jest następująca:

ping6 

za pomocą opcji-C możemy określić liczbę pakietów do wysłania oraz za pomocą opcji-i dla interfejsu sieciowego, którego będziemy używać., Na przykład:

ping6 2001:4860:4860::8888

Ping określonego portu

czasami chcemy wiedzieć, czy określony port na węźle jest aktywny. Jednak polecenie ping nie zapewnia tej funkcjonalności, ale można to zrobić za pomocą polecenia telnet, które jest domyślnie zainstalowane w Linuksie.

aby to zrobić, wystarczy użyć następującej składni:

telnet 
telnet google.com 80

w ten sposób można pingować określony port węzła sieciowego w prymitywny sposób.,

Ping z czasem

chociaż polecenie ping wyświetla przydatne informacje, może to być trochę proste. Można jednak nieco zmodyfikować działanie polecenia, aby pokazywało datę wysłania pakietu.

może to sprawić, że informacje będą przyjemne dla oka i mogą być przydatne dla skryptów i dzienników.

ta składnia jest do tego wystarczająca. Musisz jednak zainstalować pakiet ccze.

ping | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze

jak widzisz, pokazuje czas dla każdego wysłanego pakietu.,

Ping wszystkich hostów w danej podsieci

możesz wysłać sygnał ping do wszystkich hostów w sieci lub podsieci. W tym celu wystarczy dodać opcję-b i ping broadcast IP address dowolnej sieci, która kończy się na 255.

na przykład:

ping -b -c 4 192.168.1.255

więc jeśli miejsce docelowe jest nieosiągalne, może blokują pakiety ICMP wysyłane przez polecenie ping, a może jest problem z siecią lub problem z tabelą routingu.

jak zakończyć ping?,

domyślnie polecenie ping w Linuksie stale wysyła pakiety testowe do hostów. Jednak gdy informacje są dostępne, konieczne staje się zakończenie wykonywania polecenia ping.

aby to zrobić, wystarczy nacisnąć następujące klawisze:

CTRL + C

w ten sposób Komenda natychmiast przestanie działać.

koniec po określonej liczbie

możesz ograniczyć liczbę pakietów do 10 lub cokolwiek innego. Kiedy skończy wysyłać dziesięć pakietów, przestanie.,

ping -c 10 

gdzie znajduje się komenda ping na Linuksie?

w systemie wywodzącym się z Uniksa, takim jak Linux, pliki binarne są powszechnie dostępne w ścieżce:

/usr/bin/

w tym katalogu znajdziesz wiele plików binarnych, których używamy jako poleceń na terminalu. W innych systemach operacyjnych z rodziny Linux jest również możliwe umieszczenie go w katalogu

/usr/sbin/

.,

możemy to sprawdzić za pomocą polecenia ls:

$ ls /usr/bin | grep ping

na tym obrazku widać, że polecenia ping znajdują się w

/usr/bin/

w inny sposób można użyj polecenia which, aby zlokalizować dowolne polecenie w Linuksie:

$ which ping

wyświetli się następujące polecenie:

/usr/bin/ping

Sprawdź opóźnienie za pomocą polecenia ping

jedną z możliwości oferowanych przez polecenie Ping jest możliwość pomiaru czasu reakcji połączenia. To jest opóźnienie.,

aby zmierzyć opóźnienie za pomocą polecenia ping, po prostu użyj go i zwróć uwagę na wyjście ekranu:

ping -c 4 ping -c 4 192.168.1.1

jak widzisz, cztery pakiety zostały wysłane do miejsca docelowego z określonym czasem odpowiedzi.

na dole znajduje się wiersz zaczynający się w następujący sposób:

rtt min/avg/max/mdev

druga wartość po znaku równości to wartość opóźnienia. W tym przypadku wartość wynosi 6.798.,

z opóźnieniem można określić hosty, które mają łączność gorszą od reszty. W ten sposób będziemy mogli podjąć odpowiednie środki.

Znajdź idealny MTU

MTU (Maksymalna jednostka Transmisji) jest wartością, która statycznie wyraża rozmiar w bajtach największej jednostki danych, która może być wysłana przez sieć.

obecnie, ze względu na środki bezpieczeństwa, coraz więcej sieci uniemożliwia pracę MTU. Jednak większość sieci lokalnych Ethernet używa 1500 bajtów MTU.,

Jeśli chcesz znaleźć idealną wartość MTU za pomocą polecenia ping, Ustaw początkowe wartości i zmniejsz, aż nie będzie żadnego błędu. Jeśli wartość jest zbyt wysoka, otrzymamy następny błąd:

ping: local error: Message too long

aby to zrobić, użyj następującej składni:

ping -M do -s 

na przykład:

ping -M do -s 1473 192.168.1.1

w tym przypadku wartość wielkości pakietu jest bardzo duża. Więc zmniejszę to. W tym przypadku wartość optymalna wynosi 1472.,

Jeśli otrzymasz kolejną wiadomość, wartość początkowa musi być zmniejszona jeden po drugim, aż otrzymasz pożądany wynik.

Jeśli wartość MTU jest znana, może być używana do poprawy zachowania sieci, zwłaszcza jeśli jest to duża lub nawet Metropolitalna sieć.

Ping na warstwie 2 (za pomocą arping)

za pomocą polecenia ping będziemy mogli przeprowadzić testy znając adres IP konkretnego węzła w sieci. Dzieje się tak dlatego, że polecenie ping działa na warstwie 3 Modelu OSI (sieci).,

z drugiej strony, możliwe jest użycie innego polecenia, które jest wbudowane w Linuksa jako arping. Polecenie to działa bardzo podobnie do ping, ale działa na warstwie 2 Modelu OSI.

składnia polecenia jest następująca:

$ sudo arping 
$ sudo arping 192.168.1.1

otrzymasz wynik w następujący sposób:

Ekran wyjściowy polecenia pokazuje najpierw rozmiar wysłanego pakietu, a następnie adres MAC węzła i czas reakcji.

zauważ, że to polecenie nie jest instalowane domyślnie na Linuksie Debiana i pochodnych., Więc musisz go zainstalować, a następnie możesz uruchomić go jako root.

Ping Nazwa hosta

domyślnie polecenie ping wysyła pakiety testowe do miejsca docelowego, używając adresu IP lub nazwy hosta miejsca docelowego. Należy również zauważyć, że większość implementacji ping w Linuksie nie rozwiązuje DNS odwrotnie.

na przykład, jeśli użyjesz polecenia Ping, dodając adres IP, zwróci on tylko adres IP hosta na wyjściu. I odwrotnie, jeśli podaliśmy nazwę hosta, rozwiąże ją i wyświetli adres IP na wyjściu.,

Sprawdź wynik następującego polecenia:

$ ping google.com

ping route (using traceroute)

polecenie ping nie pokazuje trasy ze źródła, aby dotrzeć do miejsca docelowego.

i może to być bardzo przydatne w przypadku utraty połączenia z hostem, ponieważ możemy zrozumieć, w którym momencie połączenie zostało utracone.

polecenie tracert lub traceroute działa w bardzo podobny sposób do polecenia ping. Zaletą tego jest to, że pokazuje ścieżkę, którą pokonuje pakiet, a tym samym jego trasę.,

podobnie jak polecenie ping jest instalowane w większości dystrybucji Linuksa. Podstawowa składnia jest następująca:

traceroute 

w ten sposób możemy zobaczyć trasę, którą zajmują Pakiety.

Uruchom polecenie, jeśli ping się nie powiedzie

Załóżmy, że chcesz zostać powiadomiony, gdy polecenie ping się nie powiedzie. Aby to zrobić, musisz włączyć polecenie ping w skrypcie bash, aby ustawić żądany warunek.,

na przykład ten skrypt powłoki pozwala sprawdzić, czy polecenie ping nie powiedzie się:

#! /bin/bashping -c 1 If ; then #Your_command_hereFi

Ustaw Rozmiar pakietu ping

domyślny rozmiar pakietów wysyłanych przez polecenie ping do hostów wynosi 56 bajtów. Jest to na tyle niska wartość, że nie wpływa na działanie sieci.

można jednak zmienić ją na inną wartość. Aby to zrobić, po prostu dodaj opcję-s z żądanym rozmiarem pakietu.,

na przykład:

ping -s hostname/IP

Jeśli chcesz, aby Rozmiar pakietu wynosił 100 bajtów, po prostu użyj następującego polecenia:

ping -s 100 192.168.1.1

pamiętaj, że może się on nieznacznie różnić o MTU.

Wyłącz polecenie ping

Jeśli jesteśmy odpowiedzialni za utrzymanie sieci, możemy w każdej chwili wyłączyć odpowiedzi ping. Możemy to zrobić tymczasowo lub na stałe, zgodnie z naszymi potrzebami.,

jeśli chcemy ją tymczasowo wyłączyć, wystarczy użyć tego polecenia jako użytkownika root:

$ su$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

spowoduje to wyłączenie odpowiedzi polecenia ping, ale tylko do czasu ponownego uruchomienia systemu.

Jeśli chcesz to zrobić na stałe, musisz edytować następujący plik

/etc/sysctl.conf

i dodać następną linię:

$ nano /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1

następnie zapisz plik i zakończ., Aby zastosować zmiany, użyj polecenia:

$ sysctl -p

spowoduje to wyłączenie polecenia ping lub odpowiedzi pakietów ICMP.

podsumowanie

w tym poście wyjaśniliśmy szczegółowo, jak działa Komenda ping na Linuksie. Od jego użyteczności do wyłączenia go. Ping jest jednym z najprostszych poleceń w użyciu.

To sprawia, że osoba odpowiedzialna za działanie sieci wie, gdzie jest problem, dzięki czemu może podjąć działania.

Mam nadzieję, że ten post okaże się przydatny. Wracaj.

Dziękuję.,

założyciel LikeGeeks. Pracuję jako administrator systemu Linux od 2010 roku. Jestem odpowiedzialny za utrzymywanie, zabezpieczanie i rozwiązywanie problemów z serwerami Linux dla wielu klientów na całym świecie. Uwielbiam pisać skrypty powłoki i Pythona, aby zautomatyzować moją pracę.