ping 명령어: 리눅스 ping 옵션과 100% packet loss 확인

리눅스 서버에서 상대 서버까지 패킷이 닿는지와 왕복 시간은 ping 명령어로 확인합니다. AlmaLinux 9와 Debian 12 서버에서 -c로 횟수를 정해 example.com에 보낸 결과 왕복 시간은 1~3ms였고, ICMP를 막아 둔 서버에서는 웹 요청에 응답이 오는데도 ping 결과가 100% packet loss였습니다.
아래 출력은 AlmaLinux 9.8 서버(root 계정)와 Debian 12 서버(일반 계정)에서 실행한 결과입니다. 모든 ping은 -c로 보낼 횟수를 정해 실행했습니다. 중간 라우터의 사설 IP 주소는 예시 값으로 바꿨고, example.com 같은 공개 도메인이 풀린 주소는 그대로 두었습니다.
1️⃣ ping 명령어 사용법
ping은 상대 서버에 ICMP 에코 요청을 보내고, 돌아온 에코 응답까지 걸린 시간을 한 줄씩 출력합니다. 리눅스 ping은 -c로 횟수를 정하지 않으면 Ctrl+C로 멈출 때까지 계속 보내므로(공식 매뉴얼 기준), 처음부터 -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 msDebian 12 서버에서 example.com에 네 번 보내 네 번 모두 응답을 받았고, 왕복 시간은 1.28~1.46ms였습니다. 줄마다 확인하는 내용은 아래와 같습니다.
| 출력 | 확인하는 것 |
|---|---|
| PING example.com (172.66.147.243) 56(84) bytes of data. | 이름을 풀어 얻은 주소와 보내는 크기 — 데이터 56바이트에 IP 헤더 20바이트와 ICMP 헤더 8바이트를 더하면 84바이트 |
| 64 bytes from … | 돌아온 응답의 크기(데이터 56바이트 + ICMP 헤더 8바이트) |
| icmp_seq=1 | 보낸 순서 번호 |
| ttl=58 | 돌아온 응답 패킷에 남은 TTL — 라우터를 하나 지날 때마다 1씩 줄어듦 |
| time=1.46 ms | 그 패킷의 왕복 시간 |
| 4 packets transmitted, 4 received, 0% packet loss | 보낸 수, 받은 수, 응답을 받지 못한 비율 |
| time 3003ms | 첫 패킷을 보낸 뒤 끝날 때까지 걸린 시간 |
| rtt min/avg/max/mdev | 왕복 시간의 최솟값·평균·최댓값과 흩어진 정도(mdev) |
mdev는 왕복 시간이 평균에서 얼마나 벗어났는지를 나타내는 값으로, 공식 매뉴얼은 이 값이 클수록 왕복 시간이 고르지 않다고 설명합니다. 네 번 모두 1.5ms 안쪽이었던 이 결과의 mdev는 0.074ms였습니다.
같은 명령을 AlmaLinux 9 서버에서 실행하자 ping은 example.com의 IPv6 주소로 보냈고, 첫 줄에는 84 없이 56 data bytes만 나왔습니다.
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 ms설치된 ping의 버전은 -V로 확인합니다. Debian 12 서버는 iputils 20221126, 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️⃣ ping 횟수와 간격 옵션
ping 옵션 가운데 -c는 보낼 횟수, -i는 보내는 간격(초)입니다. 기본 간격은 1초이고, -i 0.5를 붙이자 네 번을 보내는 데 걸린 시간이 3003ms에서 1502ms로 줄었습니다.
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 ms간격을 0.2초보다 짧게 줄이는 것은 AlmaLinux 9 서버의 iputils 20210202 매뉴얼 기준으로 root만 할 수 있고, Debian 12 서버의 iputils 20221126 매뉴얼은 그 기준을 2ms로 적고 있습니다. 짧은 간격은 상대 서버와 네트워크에 부담을 줄 수 있습니다.
-w는 보낸 횟수와 상관없이 ping 전체를 끝낼 시간(초)입니다. -c와 함께 쓰면 정한 횟수만큼 응답을 받거나 -w 시간이 지날 때 끝납니다. -c 10 -w 3으로 실행하자 3초가 지나 세 번만 보내고 끝났습니다.
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 ms응답은 세 번 모두 받았지만 정한 10번을 채우지 못해, 이때 ping의 종료 코드는 1이었습니다. 공식 매뉴얼도 -c와 -w를 함께 쓴 경우 정한 횟수만큼 응답을 받지 못하면 1로 끝난다고 설명합니다.
-W는 응답 하나를 기다리는 시간(초)입니다. 공식 매뉴얼 기준으로 이 값은 응답이 하나도 오지 않을 때만 적용되고, 응답이 오는 상대에게는 왕복 시간의 두 배만큼 기다립니다.
결과 줄 없이 요약만 볼 때는 -q를 붙입니다. 네 번을 보내자 첫 줄과 끝의 통계 줄만 남았습니다.
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️⃣ ping 패킷 크기와 IPv6 옵션
보내는 데이터 크기는 -s로 바꿉니다. -s 1000을 붙이자 첫 줄은 1000(1028) bytes, 응답 줄은 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은 데이터 1000바이트에 IP 헤더 20바이트와 ICMP 헤더 8바이트를 더한 크기이고, 1008은 데이터에 ICMP 헤더만 더한 크기입니다. 왕복 시간은 1.21~1.31ms로, 기본 크기(56바이트)로 보냈을 때와 큰 차이가 없었습니다.
-t는 보내는 패킷의 TTL을 정합니다. TTL은 라우터를 하나 지날 때마다 1씩 줄고, 0이 되면 그 라우터가 패킷을 버리고 [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 1001msTTL을 3으로 줄이자 세 번째 라우터가 두 번 모두 [Time to live exceeded]를 돌려보냈습니다. TTL을 1부터 하나씩 올려 본 결과, example.com에는 8에서 처음 응답이 왔습니다.
-4와 -6은 보낼 주소 종류를 IPv4나 IPv6 하나로 정합니다. AlmaLinux 9 서버는 옵션 없이도 example.com의 IPv6 주소로 보냈기 때문에, IPv4 주소로 보낼 때는 -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 msAlmaLinux 9 서버의 iputils 20210202에서는 -4를 붙이자 첫 줄과 통계 줄의 이름 칸이 비어 나왔습니다. 같은 명령을 Debian 12 서버의 iputils 20221126에서 실행했을 때는 example.com이 그대로 나왔습니다.
IPv6 기본 경로가 없는 Debian 12 서버에서는 -6을 붙이자 응답 줄 없이 바로 [connect: Network is unreachable]로 끝났습니다.
ping -6 -c 2 example.comping: connect: Network is unreachable🔲 ping 명령어 옵션
📌 주요 옵션: 이 글에서 실행한 결과
| 옵션 | 하는 일 | 이 글에서 본 결과 | |
|---|---|---|---|
| -c 횟수 | 보낼 횟수를 정하고, 그만큼 보낸 뒤 끝냄 | Debian 12 서버에서 -c 4로 네 번 보내 네 번 모두 응답, 왕복 1.28~1.46ms | |
| -i 간격 | 패킷을 보내는 간격(초), 기본 1초 | -i 0.5로 네 번 보내는 데 걸린 시간이 3003ms에서 1502ms로 줄어듦 | |
| -w 시간 | 보낸 횟수와 상관없이 ping 전체를 끝낼 시간(초) | -c 10 -w 3이 3초 뒤 세 번만 보내고 종료 코드 1로 끝남 | |
| -W 시간 | 응답이 하나도 없을 때 응답 하나를 기다리는 시간(초) | 192.0.2.1에 -W 1로 두 번 보내 [100% packet loss], 종료 코드 1 | |
| -q | 응답 줄 없이 첫 줄과 끝의 통계만 출력 | 네 번 보낸 뒤 첫 줄과 통계 줄만 남음 | |
| -s 크기 | 보내는 데이터 크기(바이트), 기본 56 | -s 1000에 첫 줄은 1000(1028) bytes, 응답 줄은 1008 bytes | |
| -t TTL | 보내는 패킷의 TTL | -t 3에 세 번째 라우터가 두 번 모두 [Time to live exceeded]를 돌려보냄 | |
| -4 | IPv4 주소로만 보냄 | AlmaLinux 9 서버에서 IPv6 대신 IPv4 주소로 보냄, 이름 칸은 비어 나옴 | |
| -6 | IPv6 주소로만 보냄 | IPv6 기본 경로가 없는 Debian 12 서버에서 [connect: Network is unreachable] | |
| -D | 응답 줄마다 앞에 유닉스 시간(초.마이크로초)을 붙임 | 응답 줄 앞에 [1793227536.574201]처럼 시각이 붙음 | |
| -V | 버전 정보를 출력 | Debian 12는 iputils 20221126, AlmaLinux 9는 iputils 20210202 |
📎 그 밖의 옵션: 공식 매뉴얼 기준
| 옵션 | 하는 일 | |
|---|---|---|
| -n | 주소를 이름으로 풀지 않고 숫자로만 출력 | |
| -I 인터페이스 | 보낼 인터페이스나 출발 주소를 지정 | |
| -A | 왕복 시간에 맞춰 보내는 간격을 스스로 조절, root가 아니면 최소 간격 200ms | |
| -f | 응답을 기다리지 않고 빠르게 보내는 플러드 ping, 간격 0은 root만 | |
| -l 개수 | 응답을 기다리지 않고 먼저 보낼 패킷 수, 3개 넘게는 root만 | |
| -M do | Path MTU Discovery 방식을 정함, do는 조각내기를 막음(want, dont도 받음) | |
| -p 패턴 | 보내는 패킷을 채울 바이트 패턴, 16바이트까지 | |
| -O | 다음 패킷을 보내기 전에 응답이 오지 않은 요청을 알림, -D와 함께 기록할 때 사용 | |
| -R | 지나간 경로를 기록(IPv4 전용, 이 옵션을 무시하는 호스트가 많음) | |
| -b | 브로드캐스트 주소로 보내는 것을 허용 | |
| -a | 응답이 올 때마다 소리를 냄 |
🔲 ping 명령어 시뮬레이터
아래 시뮬레이터에서 횟수와 간격, 패킷 크기, 응답이 없는 주소로 보낸 결과를 직접 입력해 볼 수 있습니다.
4️⃣ ping 응답 없음
[100% packet loss]는 보낸 패킷에 응답이 하나도 오지 않았다는 뜻입니다. 문서용으로 예약된 주소 192.0.2.1에 -W 1을 붙여 두 번 보내자, 응답 줄 없이 통계만 나왔습니다.
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 1024ms응답이 하나도 없을 때 ping의 종료 코드는 1이었고, 응답을 받았을 때는 0이었습니다. 스크립트에서 상대 서버가 응답하는지 확인할 때 이 값을 사용합니다.
ping -c 2 -W 1 192.0.2.1 > /dev/null; echo $?; ping -c 1 example.com > /dev/null; echo $?1
0ping은 ICMP만 확인하므로, ICMP를 막아 둔 서버는 웹 요청에 응답하면서도 ping에는 응답하지 않습니다. Debian 12 서버에서 amazon.com에 두 번 보내자 [100% packet loss]가 나왔고, 같은 주소로 curl 웹 요청을 보내자 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 PermanentlyICMP를 막아 둔 서버는 초인종을 떼어 둔 가게와 같습니다.
클라우드 서버는 방화벽 규칙에서 ICMP를 허용해야 ping에 응답하는 경우가 있습니다. 오라클 클라우드 VM 인스턴스는 공용 서브넷 보안 목록의 ICMP 유형을 8로 바꾼 뒤 ping에 응답했습니다.
이름을 IP 주소로 풀지 못하면 첫 줄 없이 바로 [Name or service not known]으로 끝나고, 종료 코드는 2였습니다. .invalid는 어디서도 풀리지 않도록 예약된 이름이라 이 오류를 확인하는 데 사용했습니다.
ping -c 1 no-such-host.invalidping: no-such-host.invalid: Name or service not known실제 도메인에서 이 오류가 나오면 nslookup 명령어로 DNS 서버가 그 이름에 주소를 돌려주는지 확인합니다. 응답이 없을 때 나온 출력 네 가지와 다음에 확인할 것은 아래와 같습니다.
| 출력 | 뜻 | 다음에 확인할 것 |
|---|---|---|
| 100% packet loss | 보낸 패킷에 응답이 하나도 오지 않음 | 웹 서비스는 curl로, 방화벽은 ICMP 허용 규칙 |
| Name or service not known | 이름을 IP 주소로 풀지 못함 | nslookup으로 DNS 응답 |
| connect: Network is unreachable | 그 주소 종류로 나갈 경로가 없음 | -4로 IPv4 주소에 보내기 |
| Time to live exceeded | TTL이 중간 라우터에서 0이 됨 | -t 값을 올리거나 빼고 다시 보내기 |
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.