Polecenie ping: opcje ping w Linuksie i sprawdzanie 100% packet loss
Na serwerze z Linuksem polecenie ping sprawdza, czy pakiety docierają do innego serwera i ile trwa podróż w obie strony. Przy wysyłaniu do example.com z serwerów AlmaLinux 9 i Debian 12 z liczbą ustawioną przez -c czas w obie strony wyniósł 1–3 ms, a serwer blokujący ICMP pokazał w ping 100% packet loss, choć odpowiadał na żądania WWW.
Poniższe wyniki pochodzą z serwera AlmaLinux 9.8 (konto root) i serwera Debian 12 (zwykłe konto). Każde ping uruchomiono z liczbą wysyłek ustawioną przez -c. Prywatne adresy IP routerów pośrednich zamieniono na przykładowe wartości, a adresy uzyskane z publicznych domen, takich jak example.com, pozostawiono bez zmian.
1️⃣ Jak używać polecenia ping
ping wysyła do drugiego serwera żądanie echa ICMP i wypisuje wiersz po wierszu, ile czasu zajął powrót odpowiedzi echa. W Linuksie ping bez liczby ustawionej przez -c wysyła dalej, dopóki nie zatrzymasz go klawiszami Ctrl+C (według oficjalnej dokumentacji), więc od razu uruchamiaj go z liczbą, np. -c 4.
ping -c 4 example.comPING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.46 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.30 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.28 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=58 time=1.30 ms
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.279/1.336/1.464/0.074 msPo czterech wysyłkach do example.com z serwera Debian 12 wróciły wszystkie cztery odpowiedzi, a czas w obie strony wyniósł 1,28–1,46 ms. Co pokazuje każdy wiersz, opisano poniżej.
| Wynik | Co pokazuje |
|---|---|
| PING example.com (172.66.147.243) 56(84) bytes of data. | Adres uzyskany z nazwy i wysyłany rozmiar — 56 bajtów danych plus 20 bajtów nagłówka IP i 8 bajtów nagłówka ICMP daje 84 bajty |
| 64 bytes from … | Rozmiar odpowiedzi, która wróciła (56 bajtów danych + 8 bajtów nagłówka ICMP) |
| icmp_seq=1 | Numer kolejny wysłanego pakietu |
| ttl=58 | TTL pozostały w pakiecie odpowiedzi — spada o 1 na każdym mijanym routerze |
| time=1.46 ms | Czas w obie strony dla tego pakietu |
| 4 packets transmitted, 4 received, 0% packet loss | Liczba wysłanych i odebranych pakietów oraz odsetek bez odpowiedzi |
| time 3003ms | Czas od wysłania pierwszego pakietu do końca |
| rtt min/avg/max/mdev | Minimalny, średni i maksymalny czas w obie strony oraz jego rozrzut (mdev) |
mdev pokazuje, jak bardzo czasy w obie strony odbiegają od średniej, a oficjalna dokumentacja wyjaśnia, że im większa wartość, tym mniej równe są te czasy. W tym wyniku, gdzie wszystkie cztery odpowiedzi zmieściły się w 1,5 ms, mdev wyniósł 0,074 ms.
To samo polecenie na serwerze AlmaLinux 9 wysłało pakiety na adres IPv6 domeny example.com, a w pierwszym wierszu pojawiło się tylko 56 data bytes, bez 84.
ping -c 4 example.comPING example.com(2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3)) 56 data bytes
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=1 ttl=51 time=2.20 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=2 ttl=54 time=2.30 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=3 ttl=51 time=2.55 ms
64 bytes from 2606:4700:10::ac42:93f3 (2606:4700:10::ac42:93f3): icmp_seq=4 ttl=54 time=2.26 ms
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.203/2.326/2.547/0.131 msWersję zainstalowanego ping sprawdzisz opcją -V. Serwer Debian 12 miał iputils 20221126, a serwer AlmaLinux 9 iputils 20210202.
ping -Vping from iputils 20221126
libcap: yes, IDN: yes, NLS: no, error.h: yes, getrandom(): yes, __fpending(): yesping -Vping from iputils 202102022️⃣ Opcje liczby i odstępu w ping
Wśród opcji ping -c to liczba wysyłek, a -i odstęp między nimi (sekundy). Domyślny odstęp to 1 sekunda, a z -i 0.5 czas wysłania czterech pakietów spadł z 3003 ms do 1502 ms.
ping -c 4 -i 0.5 example.comPING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.26 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.31 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.37 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=58 time=1.44 ms
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 1502ms
rtt min/avg/max/mdev = 1.264/1.343/1.436/0.065 msWedług dokumentacji iputils 20210202 na serwerze AlmaLinux 9 odstęp krótszy niż 0,2 sekundy może ustawić tylko root, a dokumentacja iputils 20221126 na serwerze Debian 12 podaje tę granicę jako 2 ms. Krótkie odstępy mogą obciążać drugi serwer i sieć.
-w to czas (sekundy), po którym ping kończy całą pracę bez względu na liczbę wysyłek. Razem z -c kończy, gdy dostanie ustawioną liczbę odpowiedzi albo gdy minie czas z -w. Przy -c 10 -w 3 wysłano tylko trzy pakiety i po 3 sekundach ping się zakończył.
ping -c 10 -w 3 example.comPING example.com (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.34 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.27 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=58 time=1.34 ms
--- example.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.272/1.318/1.342/0.032 msWszystkie trzy odpowiedzi wróciły, ale ustawionej liczby 10 nie osiągnięto, więc kod wyjścia ping wyniósł 1. Oficjalna dokumentacja też wyjaśnia, że przy -c i -w razem ping kończy się kodem 1, jeśli nie dostanie ustawionej liczby odpowiedzi.
-W to czas (sekundy) oczekiwania na jedną odpowiedź. Według oficjalnej dokumentacji ta wartość działa tylko wtedy, gdy nie wraca żadna odpowiedź; przy celu, który odpowiada, ping czeka dwa razy dłużej niż czas w obie strony.
Aby zobaczyć samo podsumowanie bez wierszy wyników, dodaj -q. Po czterech wysyłkach zostały tylko pierwszy wiersz i statystyki na końcu.
ping -c 4 -q example.comPING example.com (104.20.23.154) 56(84) bytes of data.
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.551/1.649/1.715/0.060 ms3️⃣ Opcje rozmiaru pakietu i IPv6 w ping
Rozmiar wysyłanych danych zmienisz opcją -s. Z -s 1000 pierwszy wiersz zmienił się na 1000(1028) bytes, a wiersze odpowiedzi na 1008 bytes.
ping -c 2 -s 1000 example.comPING example.com (172.66.147.243) 1000(1028) bytes of data.
1008 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=58 time=1.21 ms
1008 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=58 time=1.31 ms
--- example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.214/1.262/1.311/0.048 ms1028 to 1000 bajtów danych plus 20 bajtów nagłówka IP i 8 bajtów nagłówka ICMP, a 1008 to dane plus sam nagłówek ICMP. Czas w obie strony wyniósł 1,21–1,31 ms, niewiele inaczej niż przy domyślnym rozmiarze (56 bajtów).
-t ustawia TTL wysyłanych pakietów. TTL spada o 1 na każdym routerze, a gdy dojdzie do 0, ten router odrzuca pakiet i odsyła [Time to live exceeded].
ping -c 2 -t 3 example.comPING example.com (172.66.147.243) 56(84) bytes of data.
From 192.0.2.103 (192.0.2.103) icmp_seq=1 Time to live exceeded
From 192.0.2.103 (192.0.2.103) icmp_seq=2 Time to live exceeded
--- example.com ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1001msPo obniżeniu TTL do 3 trzeci router za każdym razem odesłał [Time to live exceeded]. Przy podnoszeniu TTL po jednym od 1 pierwsza odpowiedź z example.com przyszła przy 8.
-4 i -6 ograniczają rodzaj adresu docelowego do IPv4 albo IPv6. Serwer AlmaLinux 9 wysyłał na adres IPv6 domeny example.com nawet bez opcji, więc do wysyłki na adres IPv4 dodano -4.
ping -4 -c 4 example.comPING (172.66.147.243) 56(84) bytes of data.
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=1 ttl=54 time=2.64 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=2 ttl=54 time=2.55 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=3 ttl=54 time=2.57 ms
64 bytes from 172.66.147.243 (172.66.147.243): icmp_seq=4 ttl=54 time=2.58 ms
--- ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 2.553/2.585/2.642/0.033 msW iputils 20210202 na serwerze AlmaLinux 9 po dodaniu -4 pole nazwy w pierwszym wierszu i w wierszu statystyk było puste. To samo polecenie w iputils 20221126 na serwerze Debian 12 pokazało example.com normalnie.
Na serwerze Debian 12 bez domyślnej trasy IPv6 dodanie -6 od razu zakończyło się komunikatem [connect: Network is unreachable], bez wierszy odpowiedzi.
ping -6 -c 2 example.comping: connect: Network is unreachable🔲 Opcje polecenia ping
📌 Główne opcje: wyniki z tego artykułu
| Opcja | Zadanie | Wynik w tym artykule | |
|---|---|---|---|
| -c liczba | Ustawia liczbę pakietów do wysłania i kończy po ich wysłaniu | -c 4 na serwerze Debian 12: cztery wysyłki, cztery odpowiedzi, czas w obie strony 1,28–1,46 ms | |
| -i odstęp | Odstęp między pakietami (sekundy), domyślnie 1 sekunda | Z -i 0.5 czas wysłania czterech pakietów spadł z 3003 ms do 1502 ms | |
| -w czas | Czas (sekundy), po którym ping kończy całą pracę bez względu na liczbę wysyłek | -c 10 -w 3 wysłało po 3 sekundach tylko trzy pakiety i zakończyło się kodem wyjścia 1 | |
| -W czas | Czas (sekundy) oczekiwania na jedną odpowiedź, gdy nie wraca żadna | Dwie wysyłki do 192.0.2.1 z -W 1: [100% packet loss], kod wyjścia 1 | |
| -q | Wypisuje tylko pierwszy wiersz i statystyki na końcu, bez wierszy odpowiedzi | Po czterech wysyłkach zostały tylko pierwszy wiersz i wiersz statystyk | |
| -s rozmiar | Rozmiar wysyłanych danych (bajty), domyślnie 56 | Z -s 1000 pierwszy wiersz pokazuje 1000(1028) bytes, a wiersze odpowiedzi 1008 bytes | |
| -t TTL | TTL wysyłanych pakietów | Z -t 3 trzeci router za każdym razem odesłał [Time to live exceeded] | |
| -4 | Wysyła tylko na adresy IPv4 | Na serwerze AlmaLinux 9 wysłano na adres IPv4 zamiast IPv6; pole nazwy jest puste | |
| -6 | Wysyła tylko na adresy IPv6 | Na serwerze Debian 12 bez domyślnej trasy IPv6: [connect: Network is unreachable] | |
| -D | Dodaje czas uniksowy (sekundy.mikrosekundy) przed każdym wierszem odpowiedzi | Przed każdym wierszem odpowiedzi pojawia się znacznik czasu, np. [1793227536.574201] | |
| -V | Wypisuje informacje o wersji | Debian 12 ma iputils 20221126, AlmaLinux 9 ma iputils 20210202 |
📎 Pozostałe opcje: według oficjalnego podręcznika
| Opcja | Zadanie | |
|---|---|---|
| -n | Wypisuje adresy tylko jako liczby, bez zamiany na nazwy | |
| -I interfejs | Wskazuje interfejs lub adres źródłowy, z którego wysyłać | |
| -A | Sam dopasowuje odstęp wysyłania do czasu w obie strony; bez roota minimalny odstęp to 200 ms | |
| -f | Ping zalewowy (flood), który wysyła szybko bez czekania na odpowiedzi; odstęp 0 tylko dla roota | |
| -l liczba | Liczba pakietów wysyłanych z góry bez czekania na odpowiedź; więcej niż 3 tylko dla roota | |
| -M do | Ustawia tryb Path MTU Discovery; do blokuje fragmentację (przyjmuje też want i dont) | |
| -p wzorzec | Wzorzec bajtów, którym wypełniane są wysyłane pakiety, do 16 bajtów | |
| -O | Zgłasza żądania bez odpowiedzi przed wysłaniem kolejnego pakietu; używane razem z -D przy zapisie | |
| -R | Zapisuje przebytą trasę (tylko IPv4; wiele hostów ignoruje tę opcję) | |
| -b | Pozwala wysyłać na adres rozgłoszeniowy (broadcast) | |
| -a | Wydaje dźwięk przy każdej odpowiedzi |
🔲 Symulator polecenia ping
W symulatorze poniżej możesz sam wpisać polecenia i zobaczyć wyniki dla liczby i odstępu, rozmiaru pakietu oraz wysyłki na adres, który nie odpowiada.
4️⃣ ping bez odpowiedzi
[100% packet loss] oznacza, że na wysłane pakiety nie wróciła żadna odpowiedź. Dwie wysyłki z -W 1 do 192.0.2.1, adresu zarezerwowanego do dokumentacji, pokazały tylko statystyki, bez wierszy odpowiedzi.
ping -c 2 -W 1 192.0.2.1PING 192.0.2.1 (192.0.2.1) 56(84) bytes of data.
--- 192.0.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1024msGdy nie wróciła żadna odpowiedź, kod wyjścia ping wynosił 1, a gdy odpowiedzi wróciły — 0. Skrypty używają tej wartości, by sprawdzić, czy inny serwer odpowiada.
ping -c 2 -W 1 192.0.2.1 > /dev/null; echo $?; ping -c 1 example.com > /dev/null; echo $?1
0ping sprawdza tylko ICMP, więc serwer blokujący ICMP może odpowiadać na żądania WWW i ignorować ping. Dwie wysyłki do amazon.com z serwera Debian 12 dały [100% packet loss], a żądanie WWW wysłane curl na ten sam adres dostało odpowiedź 301.
ping -c 2 -W 1 amazon.comPING amazon.com (98.82.161.185) 56(84) bytes of data.
--- amazon.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1002mscurl -sI https://amazon.com/ | head -1HTTP/1.1 301 Moved PermanentlySerwer blokujący ICMP jest jak sklep, który zdjął dzwonek z drzwi.
Niektóre serwery w chmurze odpowiadają na ping dopiero po zezwoleniu na ICMP w regułach zapory. Instancja maszyny wirtualnej w Oracle Cloud zaczęła odpowiadać na ping po zmianie typu ICMP na 8 na liście zabezpieczeń publicznej podsieci.
Jeśli ping nie zamieni nazwy na adres IP, od razu kończy się komunikatem [Name or service not known], bez pierwszego wiersza, a kod wyjścia wyniósł 2. .invalid to nazwa zarezerwowana tak, by nigdzie się nie rozwiązywała, dlatego posłużyła do sprawdzenia tego błędu.
ping -c 1 no-such-host.invalidping: no-such-host.invalid: Name or service not knownJeśli ten błąd pojawi się dla prawdziwej domeny, użyj polecenie nslookup, aby sprawdzić, czy serwer DNS zwraca adres dla tej nazwy. Cztery wyniki bez odpowiedzi i to, co sprawdzić dalej, są poniżej.
| Wynik | Znaczenie | Co sprawdzić dalej |
|---|---|---|
| 100% packet loss | Na wysłane pakiety nie wróciła żadna odpowiedź | Usługę WWW przez curl, zaporę przez regułę zezwalającą na ICMP |
| Name or service not known | Nie udało się zamienić nazwy na adres IP | Odpowiedź DNS przez nslookup |
| connect: Network is unreachable | Brak trasy wyjścia dla tego rodzaju adresu | Wysłać na adres IPv4 z -4 |
| Time to live exceeded | TTL spadł do 0 na routerze pośrednim | Podnieść wartość -t albo ją usunąć i wysłać ponownie |
🔢 FAQ & polecane treści
Sieć · Konfiguracja
[Linux] Polecenie ip: zarządzanie interfejsami sieciowymi i ustawieniami
Polecenie ip do sprawdzania i zarządzania interfejsami sieciowymi, adresami IP i trasowaniem serwera.
Sieć · DNS
Polecenie host w Linuksie | polecenie do zapytań DNS
Polecenie host do znajdowania adresu IP dla nazwy hosta lub zamiany adresu IP na nazwę hosta.
Połączenie · transfer
Polecenie SSH: opcje i sposób użycia
Opcje i użycie polecenia SSH, które łączy się ze zdalnym serwerem szyfrowanym połączeniem, by wykonywać polecenia.
ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.