Polecenie ping: opcje ping w Linuksie i sprawdzanie 100% packet loss

Środowisko testoweRodzina RHELAlmaLinux 9.8iputils 20210202konto rootDebian 12 · iputils 20221126 zwykłe konto
Polecenia sieciowepingLokalizacja/usr/bin/pingSprawdzono 2026-11-04

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

  • ↪️ Jak czytać wiersze wyniku

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.com
PING 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 ms

Po 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.

WynikCo 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=1Numer kolejny wysłanego pakietu
ttl=58TTL pozostały w pakiecie odpowiedzi — spada o 1 na każdym mijanym routerze
time=1.46 msCzas w obie strony dla tego pakietu
4 packets transmitted, 4 received, 0% packet lossLiczba wysłanych i odebranych pakietów oraz odsetek bez odpowiedzi
time 3003msCzas od wysłania pierwszego pakietu do końca
rtt min/avg/max/mdevMinimalny, ś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.com
PING 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 ms

Wersję zainstalowanego ping sprawdzisz opcją -V. Serwer Debian 12 miał iputils 20221126, a serwer AlmaLinux 9 iputils 20210202.

ping -V
ping from iputils 20221126
libcap: yes, IDN: yes, NLS: no, error.h: yes, getrandom(): yes, __fpending(): yes
ping -V
ping from iputils 20210202

2️⃣ Opcje liczby i odstępu w ping

  • ↪️ -c, -i, -w, -W, -q

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.com
PING 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 ms

Wedł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.com
PING 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 ms

Wszystkie 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.com
PING 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 ms

3️⃣ Opcje rozmiaru pakietu i IPv6 w ping

  • ↪️ -s, -t, -4, -6

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.com
PING 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 ms

1028 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.com
PING 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 1001ms

Po 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.com
PING  (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 ms

W 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.com
ping: connect: Network is unreachable

🔲 Opcje polecenia ping

📌 Główne opcje: wyniki z tego artykułu

OpcjaZadanieWynik w tym artykule
-c liczbaUstawia 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ępOdstęp między pakietami (sekundy), domyślnie 1 sekundaZ -i 0.5 czas wysłania czterech pakietów spadł z 3003 ms do 1502 ms
-w czasCzas (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 czasCzas (sekundy) oczekiwania na jedną odpowiedź, gdy nie wraca żadnaDwie wysyłki do 192.0.2.1 z -W 1: [100% packet loss], kod wyjścia 1
-qWypisuje tylko pierwszy wiersz i statystyki na końcu, bez wierszy odpowiedziPo czterech wysyłkach zostały tylko pierwszy wiersz i wiersz statystyk
-s rozmiarRozmiar wysyłanych danych (bajty), domyślnie 56Z -s 1000 pierwszy wiersz pokazuje 1000(1028) bytes, a wiersze odpowiedzi 1008 bytes
-t TTLTTL wysyłanych pakietówZ -t 3 trzeci router za każdym razem odesłał [Time to live exceeded]
-4Wysyła tylko na adresy IPv4Na serwerze AlmaLinux 9 wysłano na adres IPv4 zamiast IPv6; pole nazwy jest puste
-6Wysyła tylko na adresy IPv6Na serwerze Debian 12 bez domyślnej trasy IPv6: [connect: Network is unreachable]
-DDodaje czas uniksowy (sekundy.mikrosekundy) przed każdym wierszem odpowiedziPrzed każdym wierszem odpowiedzi pojawia się znacznik czasu, np. [1793227536.574201]
-VWypisuje informacje o wersjiDebian 12 ma iputils 20221126, AlmaLinux 9 ma iputils 20210202

📎 Pozostałe opcje: według oficjalnego podręcznika

OpcjaZadanie
-nWypisuje adresy tylko jako liczby, bez zamiany na nazwy
-I interfejsWskazuje interfejs lub adres źródłowy, z którego wysyłać
-ASam dopasowuje odstęp wysyłania do czasu w obie strony; bez roota minimalny odstęp to 200 ms
-fPing zalewowy (flood), który wysyła szybko bez czekania na odpowiedzi; odstęp 0 tylko dla roota
-l liczbaLiczba pakietów wysyłanych z góry bez czekania na odpowiedź; więcej niż 3 tylko dla roota
-M doUstawia tryb Path MTU Discovery; do blokuje fragmentację (przyjmuje też want i dont)
-p wzorzecWzorzec bajtów, którym wypełniane są wysyłane pakiety, do 16 bajtów
-OZgłasza żądania bez odpowiedzi przed wysłaniem kolejnego pakietu; używane razem z -D przy zapisie
-RZapisuje przebytą trasę (tylko IPv4; wiele hostów ignoruje tę opcję)
-bPozwala wysyłać na adres rozgłoszeniowy (broadcast)
-aWydaje 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.

Symulator polecenia pingiputils 20221126
[root@server work]#
Działa tylko w przeglądarce i nie wysyła prawdziwych pakietów. Strzałkami ↑↓ przywołasz wcześniej wpisane polecenia.

4️⃣ ping bez odpowiedzi

  • ↪️ 100% packet loss i błąd rozwiązywania nazwy

[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.1
PING 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 1024ms

Gdy 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
0

ping 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.com
PING amazon.com (98.82.161.185) 56(84) bytes of data.

--- amazon.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1002ms
curl -sI https://amazon.com/ | head -1
HTTP/1.1 301 Moved Permanently

Serwer 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.invalid
ping: no-such-host.invalid: Name or service not known

Jeś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.

WynikZnaczenieCo sprawdzić dalej
100% packet lossNa 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 knownNie udało się zamienić nazwy na adres IPOdpowiedź DNS przez nslookup
connect: Network is unreachableBrak trasy wyjścia dla tego rodzaju adresuWysłać na adres IPv4 z -4
Time to live exceededTTL spadł do 0 na routerze pośrednimPodnieść wartość -t albo ją usunąć i wysłać ponownie

🔢 FAQ & polecane treści

Na serwerze Debian 12 zwykłe konto dostało odpowiedzi bez sudo. Na tym serwerze /usr/bin/ping ma uprawnienie cap_net_raw (capability), więc mogło wysyłać pakiety ICMP bez roota.

Na dwóch sprawdzonych serwerach ping instalował pakiet iputils w AlmaLinux 9 i pakiet iputils-ping w Debian 12. Dlatego w rodzinie RHEL instaluje się go przez [sudo dnf install iputils], a w rodzinie Debian przez [sudo apt install iputils-ping].

Z -D przed każdym wierszem odpowiedzi pojawia się czas uniksowy (sekundy.mikrosekundy). Dwie wysyłki do example.com z serwera Debian 12 zapisały przed każdym wierszem odpowiedzi znacznik czasu, np. [1793227536.574201].

ℹ️ 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 1   +   7   =