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

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8iputils 20210202root 계정Debian 12 · iputils 20221126 일반 계정
네트워크 명령어ping위치/usr/bin/ping2026-11-04 확인

리눅스 서버에서 상대 서버까지 패킷이 닿는지와 왕복 시간은 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.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

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

설치된 ping의 버전은 -V로 확인합니다. Debian 12 서버는 iputils 20221126, 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️⃣ ping 횟수와 간격 옵션

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

ping 옵션 가운데 -c는 보낼 횟수, -i는 보내는 간격(초)입니다. 기본 간격은 1초이고, -i 0.5를 붙이자 네 번을 보내는 데 걸린 시간이 3003ms에서 1502ms로 줄었습니다.

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

간격을 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.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

응답은 세 번 모두 받았지만 정한 10번을 채우지 못해, 이때 ping의 종료 코드는 1이었습니다. 공식 매뉴얼도 -c와 -w를 함께 쓴 경우 정한 횟수만큼 응답을 받지 못하면 1로 끝난다고 설명합니다.

-W는 응답 하나를 기다리는 시간(초)입니다. 공식 매뉴얼 기준으로 이 값은 응답이 하나도 오지 않을 때만 적용되고, 응답이 오는 상대에게는 왕복 시간의 두 배만큼 기다립니다.

결과 줄 없이 요약만 볼 때는 -q를 붙입니다. 네 번을 보내자 첫 줄과 끝의 통계 줄만 남았습니다.

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️⃣ ping 패킷 크기와 IPv6 옵션

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

보내는 데이터 크기는 -s로 바꿉니다. -s 1000을 붙이자 첫 줄은 1000(1028) bytes, 응답 줄은 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은 데이터 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.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

TTL을 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.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

AlmaLinux 9 서버의 iputils 20210202에서는 -4를 붙이자 첫 줄과 통계 줄의 이름 칸이 비어 나왔습니다. 같은 명령을 Debian 12 서버의 iputils 20221126에서 실행했을 때는 example.com이 그대로 나왔습니다.

IPv6 기본 경로가 없는 Debian 12 서버에서는 -6을 붙이자 응답 줄 없이 바로 [connect: Network is unreachable]로 끝났습니다.

ping -6 -c 2 example.com
ping: 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]를 돌려보냄
-4IPv4 주소로만 보냄AlmaLinux 9 서버에서 IPv6 대신 IPv4 주소로 보냄, 이름 칸은 비어 나옴
-6IPv6 주소로만 보냄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 doPath MTU Discovery 방식을 정함, do는 조각내기를 막음(want, dont도 받음)
-p 패턴보내는 패킷을 채울 바이트 패턴, 16바이트까지
-O다음 패킷을 보내기 전에 응답이 오지 않은 요청을 알림, -D와 함께 기록할 때 사용
-R지나간 경로를 기록(IPv4 전용, 이 옵션을 무시하는 호스트가 많음)
-b브로드캐스트 주소로 보내는 것을 허용
-a응답이 올 때마다 소리를 냄

🔲 ping 명령어 시뮬레이터

아래 시뮬레이터에서 횟수와 간격, 패킷 크기, 응답이 없는 주소로 보낸 결과를 직접 입력해 볼 수 있습니다.

ping 명령어 시뮬레이터iputils 20221126
[root@server work]#
브라우저 안에서만 동작하며 실제 패킷은 보내지 않습니다. ↑↓ 로 앞에서 쓴 명령을 다시 불러옵니다.

4️⃣ ping 응답 없음

  • ↪️ 100% packet loss와 이름 풀이 실패

[100% packet loss]는 보낸 패킷에 응답이 하나도 오지 않았다는 뜻입니다. 문서용으로 예약된 주소 192.0.2.1에 -W 1을 붙여 두 번 보내자, 응답 줄 없이 통계만 나왔습니다.

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

응답이 하나도 없을 때 ping의 종료 코드는 1이었고, 응답을 받았을 때는 0이었습니다. 스크립트에서 상대 서버가 응답하는지 확인할 때 이 값을 사용합니다.

ping -c 2 -W 1 192.0.2.1 > /dev/null; echo $?; ping -c 1 example.com > /dev/null; echo $?
1
0

ping은 ICMP만 확인하므로, ICMP를 막아 둔 서버는 웹 요청에 응답하면서도 ping에는 응답하지 않습니다. Debian 12 서버에서 amazon.com에 두 번 보내자 [100% packet loss]가 나왔고, 같은 주소로 curl 웹 요청을 보내자 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

ICMP를 막아 둔 서버는 초인종을 떼어 둔 가게와 같습니다.

클라우드 서버는 방화벽 규칙에서 ICMP를 허용해야 ping에 응답하는 경우가 있습니다. 오라클 클라우드 VM 인스턴스는 공용 서브넷 보안 목록의 ICMP 유형을 8로 바꾼 뒤 ping에 응답했습니다.

이름을 IP 주소로 풀지 못하면 첫 줄 없이 바로 [Name or service not known]으로 끝나고, 종료 코드는 2였습니다. .invalid는 어디서도 풀리지 않도록 예약된 이름이라 이 오류를 확인하는 데 사용했습니다.

ping -c 1 no-such-host.invalid
ping: 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 exceededTTL이 중간 라우터에서 0이 됨-t 값을 올리거나 빼고 다시 보내기

🔢 FAQ & 추천 콘텐츠

Debian 12 서버에서는 일반 계정으로 실행해도 sudo 없이 응답을 받았습니다. 이 서버의 /usr/bin/ping에는 cap_net_raw 권한(capability)이 붙어 있어, root가 아니어도 ICMP 패킷을 보낼 수 있었습니다.

확인한 두 서버에서 ping은 AlmaLinux 9의 iputils 패키지와 Debian 12의 iputils-ping 패키지가 설치한 명령이었습니다. 그래서 RHEL 계열은 [sudo dnf install iputils], Debian 계열은 [sudo apt install iputils-ping]으로 설치합니다.

-D를 붙이면 응답 줄마다 앞에 유닉스 시간(초.마이크로초)이 붙습니다. Debian 12 서버에서 example.com에 두 번 보내자 [1793227536.574201]처럼 응답 줄 앞에 시각이 기록되었습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 8   +   7   =