Lệnh ping: tùy chọn ping trên Linux và cách kiểm tra 100% packet loss

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8iputils 20210202Tài khoản rootDebian 12 · iputils 20221126 tài khoản thường
Lệnh mạngpingVị trí/usr/bin/pingKiểm tra ngày 2026-11-04

Trên máy chủ Linux, lệnh ping kiểm tra gói tin có đến được máy chủ khác hay không và thời gian khứ hồi là bao lâu. Khi gửi tới example.com từ máy chủ AlmaLinux 9 và Debian 12 với số lần đặt bằng -c, thời gian khứ hồi là 1–3 ms, còn máy chủ chặn ICMP cho kết quả ping 100% packet loss dù vẫn trả lời yêu cầu web.

Kết quả bên dưới được chạy trên máy chủ AlmaLinux 9.8 (tài khoản root) và máy chủ Debian 12 (tài khoản thường). Mọi lệnh ping đều được chạy với số lần gửi đặt bằng -c. Địa chỉ IP riêng của các router trung gian đã được thay bằng giá trị ví dụ, còn địa chỉ phân giải từ tên miền công khai như example.com được giữ nguyên.

1️⃣ Cách dùng lệnh ping

  • ↪️ Cách đọc các dòng kết quả

ping gửi yêu cầu echo ICMP tới máy chủ bên kia và in ra từng dòng thời gian cần để phản hồi echo quay về. Trên Linux, nếu không đặt số lần bằng -c thì ping sẽ gửi liên tục cho đến khi bạn dừng bằng Ctrl+C (theo tài liệu chính thức), vì vậy hãy chạy kèm số lần ngay từ đầu, ví dụ -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

Gửi bốn lần tới example.com từ máy chủ Debian 12 nhận được đủ bốn phản hồi, thời gian khứ hồi 1,28–1,46 ms. Nội dung của từng dòng như sau.

Đầu raNội dung kiểm tra
PING example.com (172.66.147.243) 56(84) bytes of data.Địa chỉ có được khi phân giải tên và kích thước gửi đi — 56 byte dữ liệu cộng header IP 20 byte và header ICMP 8 byte thành 84 byte
64 bytes from …Kích thước phản hồi nhận về (56 byte dữ liệu + header ICMP 8 byte)
icmp_seq=1Số thứ tự của lần gửi
ttl=58TTL còn lại trong gói phản hồi — giảm 1 mỗi khi đi qua một router
time=1.46 msThời gian khứ hồi của gói tin đó
4 packets transmitted, 4 received, 0% packet lossSố gói đã gửi, số gói đã nhận và tỷ lệ không có phản hồi
time 3003msThời gian từ khi gửi gói đầu tiên đến khi kết thúc
rtt min/avg/max/mdevGiá trị nhỏ nhất, trung bình, lớn nhất của thời gian khứ hồi và độ phân tán (mdev)

mdev cho biết thời gian khứ hồi lệch khỏi giá trị trung bình bao nhiêu, và tài liệu chính thức giải thích rằng giá trị này càng lớn thì thời gian khứ hồi càng không đều. Trong kết quả này, cả bốn lần đều dưới 1,5 ms và mdev là 0,074 ms.

Chạy cùng lệnh trên máy chủ AlmaLinux 9 thì ping gửi tới địa chỉ IPv6 của example.com, và dòng đầu tiên chỉ hiện 56 data bytes, không có 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

Kiểm tra phiên bản ping đã cài bằng -V. Máy chủ Debian 12 dùng iputils 20221126, máy chủ AlmaLinux 9 dùng 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️⃣ Tùy chọn số lần và khoảng cách gửi của ping

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

Trong các tùy chọn của ping, -c là số lần gửi, -i là khoảng cách giữa các lần gửi (giây). Khoảng cách mặc định là 1 giây, và khi thêm -i 0.5, thời gian gửi bốn lần giảm từ 3003 ms xuống 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

Theo tài liệu của iputils 20210202 trên máy chủ AlmaLinux 9, chỉ root mới đặt được khoảng cách ngắn hơn 0,2 giây, còn tài liệu của iputils 20221126 trên máy chủ Debian 12 ghi mức này là 2 ms. Khoảng cách ngắn có thể gây tải cho máy chủ bên kia và mạng.

-w là thời gian (giây) để ping kết thúc hoàn toàn, bất kể đã gửi bao nhiêu lần. Khi dùng cùng -c, ping kết thúc khi nhận đủ số phản hồi đã đặt hoặc khi hết thời gian -w. Chạy -c 10 -w 3 thì sau 3 giây chỉ gửi được ba lần rồi kết thúc.

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

Cả ba lần đều nhận được phản hồi, nhưng vì không đủ 10 lần đã đặt nên mã thoát của ping lúc này là 1. Tài liệu chính thức cũng giải thích rằng khi dùng -c và -w cùng nhau, nếu không nhận đủ số phản hồi đã đặt thì ping kết thúc với mã 1.

-W là thời gian (giây) chờ một phản hồi. Theo tài liệu chính thức, giá trị này chỉ áp dụng khi không có phản hồi nào; với đích có phản hồi, ping chờ gấp đôi thời gian khứ hồi.

Khi chỉ muốn xem phần tóm tắt mà không có các dòng kết quả, hãy thêm -q. Gửi bốn lần thì chỉ còn dòng đầu tiên và các dòng thống kê ở cuối.

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️⃣ Tùy chọn kích thước gói tin và IPv6 của ping

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

Kích thước dữ liệu gửi đi được thay đổi bằng -s. Khi thêm -s 1000, dòng đầu tiên đổi thành 1000(1028) bytes, còn các dòng phản hồi thành 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 là 1000 byte dữ liệu cộng header IP 20 byte và header ICMP 8 byte, còn 1008 là dữ liệu cộng riêng header ICMP. Thời gian khứ hồi là 1,21–1,31 ms, không khác nhiều so với khi gửi kích thước mặc định (56 byte).

-t đặt TTL của gói tin gửi đi. TTL giảm 1 mỗi khi đi qua một router, và khi về 0 thì router đó bỏ gói tin và gửi lại [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

Khi giảm TTL xuống 3, router thứ ba gửi lại [Time to live exceeded] cả hai lần. Khi tăng TTL lần lượt từ 1, example.com phản hồi lần đầu ở giá trị 8.

-4 và -6 giới hạn loại địa chỉ đích là IPv4 hoặc IPv6. Máy chủ AlmaLinux 9 gửi tới địa chỉ IPv6 của example.com ngay cả khi không có tùy chọn, nên đã thêm -4 khi cần gửi tới địa chỉ IPv4.

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

Với iputils 20210202 trên máy chủ AlmaLinux 9, khi thêm -4 thì ô tên ở dòng đầu tiên và dòng thống kê bị trống. Chạy cùng lệnh với iputils 20221126 trên máy chủ Debian 12 thì example.com vẫn hiện bình thường.

Trên máy chủ Debian 12 không có tuyến IPv6 mặc định, khi thêm -6 thì lệnh kết thúc ngay với [connect: Network is unreachable] mà không có dòng phản hồi.

ping -6 -c 2 example.com
ping: connect: Network is unreachable

🔲 Tùy chọn của lệnh ping

📌 Tùy chọn chính: kết quả chạy trong bài này

Tùy chọnChức năngKết quả trong bài này
-c số lầnĐặt số lần gửi và kết thúc khi đã gửi đủ-c 4 trên máy chủ Debian 12: gửi bốn lần, nhận bốn phản hồi, khứ hồi 1,28–1,46 ms
-i khoảng cáchKhoảng cách giữa các lần gửi gói tin (giây), mặc định 1 giâyVới -i 0.5, thời gian gửi bốn lần giảm từ 3003 ms xuống 1502 ms
-w thời gianThời gian (giây) để ping kết thúc hoàn toàn, bất kể đã gửi bao nhiêu lần-c 10 -w 3 chỉ gửi ba lần sau 3 giây và kết thúc với mã thoát 1
-W thời gianThời gian (giây) chờ một phản hồi khi không có phản hồi nàoGửi hai lần tới 192.0.2.1 với -W 1: [100% packet loss], mã thoát 1
-qChỉ in dòng đầu tiên và thống kê ở cuối, không có dòng phản hồiSau bốn lần gửi chỉ còn dòng đầu tiên và dòng thống kê
-s kích thướcKích thước dữ liệu gửi đi (byte), mặc định 56Với -s 1000, dòng đầu hiện 1000(1028) bytes và dòng phản hồi hiện 1008 bytes
-t TTLTTL của gói tin gửi điVới -t 3, router thứ ba gửi lại [Time to live exceeded] cả hai lần
-4Chỉ gửi tới địa chỉ IPv4Trên máy chủ AlmaLinux 9, gửi tới địa chỉ IPv4 thay vì IPv6; ô tên bị trống
-6Chỉ gửi tới địa chỉ IPv6Trên máy chủ Debian 12 không có tuyến IPv6 mặc định: [connect: Network is unreachable]
-DThêm thời gian Unix (giây.micro giây) vào đầu mỗi dòng phản hồiĐầu mỗi dòng phản hồi có dấu thời gian như [1793227536.574201]
-VIn thông tin phiên bảnDebian 12 dùng iputils 20221126, AlmaLinux 9 dùng iputils 20210202

📎 Tùy chọn khác: theo tài liệu hướng dẫn chính thức

Tùy chọnChức năng
-nChỉ in địa chỉ dạng số, không phân giải thành tên
-I giao diệnChỉ định giao diện mạng hoặc địa chỉ nguồn để gửi
-ATự điều chỉnh khoảng cách gửi theo thời gian khứ hồi; không phải root thì khoảng cách tối thiểu là 200 ms
-fFlood ping gửi nhanh mà không chờ phản hồi; khoảng cách 0 chỉ dành cho root
-l số lượngSố gói gửi trước mà không chờ phản hồi; trên 3 chỉ dành cho root
-M doĐặt chế độ Path MTU Discovery; do chặn phân mảnh (cũng nhận want và dont)
-p mẫuMẫu byte dùng để điền vào gói tin gửi đi, tối đa 16 byte
-OBáo các yêu cầu chưa có phản hồi trước khi gửi gói tiếp theo; dùng cùng -D khi ghi lại
-RGhi lại đường đi (chỉ IPv4; nhiều máy bỏ qua tùy chọn này)
-bCho phép gửi tới địa chỉ broadcast
-aPhát âm thanh mỗi khi có phản hồi

🔲 Trình mô phỏng lệnh ping

Trong trình mô phỏng bên dưới, bạn có thể tự gõ lệnh để xem kết quả về số lần và khoảng cách gửi, kích thước gói tin và việc gửi tới một địa chỉ không phản hồi.

Trình mô phỏng lệnh pingiputils 20221126
[root@server work]#
Chỉ chạy trong trình duyệt và không gửi gói tin thật. Dùng ↑↓ để gọi lại các lệnh đã gõ trước đó.

4️⃣ ping không có phản hồi

  • ↪️ 100% packet loss và lỗi phân giải tên

[100% packet loss] nghĩa là không có phản hồi nào cho các gói tin đã gửi. Gửi hai lần với -W 1 tới 192.0.2.1, địa chỉ dành riêng cho tài liệu, chỉ hiện phần thống kê mà không có dòng phản hồi.

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

Khi không có phản hồi nào, mã thoát của ping là 1, còn khi nhận được phản hồi là 0. Script dùng giá trị này để kiểm tra máy chủ bên kia có phản hồi hay không.

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

ping chỉ kiểm tra ICMP, nên máy chủ chặn ICMP vẫn có thể trả lời yêu cầu web nhưng không trả lời ping. Gửi hai lần tới amazon.com từ máy chủ Debian 12 cho ra [100% packet loss], trong khi yêu cầu web bằng curl tới cùng địa chỉ nhận về phản hồi 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

Máy chủ chặn ICMP giống như cửa hàng đã tháo chuông cửa.

Một số máy chủ đám mây chỉ phản hồi ping sau khi ICMP được cho phép trong quy tắc tường lửa. Một phiên bản VM trên Oracle Cloud đã phản hồi ping sau khi đổi loại ICMP trong danh sách bảo mật của subnet công khai thành 8.

Nếu không phân giải được tên thành địa chỉ IP, ping kết thúc ngay với [Name or service not known] mà không có dòng đầu tiên, và mã thoát là 2. .invalid là tên được dành riêng để không phân giải được ở bất cứ đâu, nên được dùng để kiểm tra lỗi này.

ping -c 1 no-such-host.invalid
ping: no-such-host.invalid: Name or service not known

Nếu lỗi này xuất hiện với tên miền thật, hãy xem: Lệnh nslookup — kiểm tra xem máy chủ DNS có trả về địa chỉ cho tên đó không. Bốn kết quả xuất hiện khi không có phản hồi và những việc cần kiểm tra tiếp theo như bên dưới.

Đầu raÝ nghĩaViệc cần kiểm tra tiếp
100% packet lossKhông có phản hồi nào cho các gói tin đã gửiDịch vụ web kiểm tra bằng curl, tường lửa kiểm tra quy tắc cho phép ICMP
Name or service not knownKhông phân giải được tên thành địa chỉ IPPhản hồi DNS bằng nslookup
connect: Network is unreachableKhông có tuyến đi ra cho loại địa chỉ đóGửi tới địa chỉ IPv4 bằng -4
Time to live exceededTTL về 0 tại một router trung gianTăng giá trị -t hoặc bỏ đi rồi gửi lại

🔢 FAQ & nội dung đề xuất

Trên máy chủ Debian 12, chạy bằng tài khoản thường vẫn nhận được phản hồi mà không cần sudo. /usr/bin/ping trên máy chủ này có quyền cap_net_raw (capability), nên gửi được gói ICMP dù không phải root.

Trên hai máy chủ đã kiểm tra, ping là lệnh do gói iputils của AlmaLinux 9 và gói iputils-ping của Debian 12 cài đặt. Vì vậy, họ RHEL cài bằng [sudo dnf install iputils], còn họ Debian cài bằng [sudo apt install iputils-ping].

Thêm -D thì đầu mỗi dòng phản hồi có thời gian Unix (giây.micro giây). Gửi hai lần tới example.com từ máy chủ Debian 12 đã ghi dấu thời gian như [1793227536.574201] ở đầu mỗi dòng phản hồi.

ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 5   +   1   =