Lệnh ping: tùy chọn ping trên Linux và cách kiểm tra 100% packet loss
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
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.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 msGử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 ra | Nộ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=1 | Số thứ tự của lần gửi |
| ttl=58 | TTL 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 ms | Thời gian khứ hồi của gói tin đó |
| 4 packets transmitted, 4 received, 0% packet loss | Số gói đã gửi, số gói đã nhận và tỷ lệ không có phản hồi |
| time 3003ms | Thời gian từ khi gửi gói đầu tiên đến khi kết thúc |
| rtt min/avg/max/mdev | Giá 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.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 msKiể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 -Vping from iputils 20221126
libcap: yes, IDN: yes, NLS: no, error.h: yes, getrandom(): yes, __fpending(): yesping -Vping from iputils 202102022️⃣ Tùy chọn số lần và khoảng cách gửi của ping
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.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 msTheo 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.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 msCả 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.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️⃣ Tùy chọn kích thước gói tin và IPv6 của ping
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.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 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.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 1001msKhi 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.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 msVớ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.comping: 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ọn | Chức năng | Kế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ách | Khoảng cách giữa các lần gửi gói tin (giây), mặc định 1 giây | Vớ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 gian | Thờ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 gian | Thời gian (giây) chờ một phản hồi khi không có phản hồi nào | Gửi hai lần tới 192.0.2.1 với -W 1: [100% packet loss], mã thoát 1 | |
| -q | Chỉ in dòng đầu tiên và thống kê ở cuối, không có dòng phản hồi | Sau bốn lần gửi chỉ còn dòng đầu tiên và dòng thống kê | |
| -s kích thước | Kích thước dữ liệu gửi đi (byte), mặc định 56 | Với -s 1000, dòng đầu hiện 1000(1028) bytes và dòng phản hồi hiện 1008 bytes | |
| -t TTL | TTL của gói tin gửi đi | Với -t 3, router thứ ba gửi lại [Time to live exceeded] cả hai lần | |
| -4 | Chỉ gửi tới địa chỉ IPv4 | Trên máy chủ AlmaLinux 9, gửi tới địa chỉ IPv4 thay vì IPv6; ô tên bị trống | |
| -6 | Chỉ gửi tới địa chỉ IPv6 | Trên máy chủ Debian 12 không có tuyến IPv6 mặc định: [connect: Network is unreachable] | |
| -D | Thê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] | |
| -V | In thông tin phiên bản | Debian 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ọn | Chức năng | |
|---|---|---|
| -n | Chỉ in địa chỉ dạng số, không phân giải thành tên | |
| -I giao diện | Chỉ định giao diện mạng hoặc địa chỉ nguồn để gửi | |
| -A | Tự đ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 | |
| -f | Flood 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ượng | Số 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ẫu | Mẫu byte dùng để điền vào gói tin gửi đi, tối đa 16 byte | |
| -O | Bá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 | |
| -R | Ghi lại đường đi (chỉ IPv4; nhiều máy bỏ qua tùy chọn này) | |
| -b | Cho phép gửi tới địa chỉ broadcast | |
| -a | Phá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.
4️⃣ ping không có phản hồi
[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.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 1024msKhi 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
0ping 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.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 PermanentlyMá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.invalidping: no-such-host.invalid: Name or service not knownNế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ĩa | Việc cần kiểm tra tiếp |
|---|---|---|
| 100% packet loss | Không có phản hồi nào cho các gói tin đã gửi | Dị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 known | Không phân giải được tên thành địa chỉ IP | Phản hồi DNS bằng nslookup |
| connect: Network is unreachable | Không có tuyến đi ra cho loại địa chỉ đó | Gửi tới địa chỉ IPv4 bằng -4 |
| Time to live exceeded | TTL về 0 tại một router trung gian | Tăng giá trị -t hoặc bỏ đi rồi gửi lại |
🔢 FAQ & nội dung đề xuất
Mạng · Thiết lập
[Linux] Lệnh ip: quản lý giao diện mạng và cài đặt
Lệnh ip để kiểm tra và quản lý giao diện mạng, địa chỉ IP và cấu hình định tuyến của máy chủ.
Mạng · DNS
Lệnh host trên Linux | lệnh tra cứu DNS
Lệnh host để tìm địa chỉ IP của một tên máy hoặc đổi địa chỉ IP thành tên máy.
Truy cập từ xa · truyền tệp
Lệnh SSH: tùy chọn và cách dùng
Tùy chọn và cách dùng lệnh SSH, lệnh kết nối tới máy chủ từ xa qua kết nối được mã hóa để chạy lệnh.
ℹ️ 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á.