ping — 測試網路連線與延遲
傳送 ICMP 封包測試與目標主機的網路連線狀態與延遲。
語法
ping [選項] 目標
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-c 次數 |
指定傳送封包次數後自動停止(不加則持續) | ping -c 4 google.com |
-i 秒數 |
每次封包的傳送間隔(預設 1 秒) | ping -i 0.5 host |
-W 秒數 |
等待每個回應的逾時時間 | ping -W 2 host |
-t TTL值 |
設定 IP 封包的 TTL 值 | ping -t 64 host |
-s 大小 |
指定封包大小(位元組,預設 56) | ping -s 1024 host |
-q |
靜默模式,只顯示最終統計 | ping -q -c 10 host |
-4 |
強制使用 IPv4 | ping -4 google.com |
-6 |
強制使用 IPv6 | ping -6 google.com |
-f |
洪水 ping(需 root,測試網路效能) | sudo ping -f host |
使用範例
範例 1:基本連線測試
ping 目標主機,Linux 預設會持續傳送,需按 Ctrl+C 停止並顯示統計。
$ ping google.com
PING google.com (142.250.185.46) 56(84) bytes of data.
64 bytes from tsa03s07-in-f14.1e100.net: icmp_seq=1 ttl=118 time=8.23 ms
64 bytes from tsa03s07-in-f14.1e100.net: icmp_seq=2 ttl=118 time=7.98 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 7.980/8.105/8.230/0.125 ms
範例 2:指定次數後停止
使用 -c 指定傳送 4 個封包後自動停止,適合在腳本中使用。
$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=5.12 ms
...
4 packets transmitted, 4 received, 0% packet loss
範例 3:測試本地端通訊(localhost)
ping 127.0.0.1 測試本機 TCP/IP 網路堆疊是否正常。
$ ping -c 3 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
範例 4:在腳本中判斷主機是否存活
利用 ping 的回傳碼(0=成功,1=失敗)在腳本中判斷連線狀態。
$ if ping -c 1 -W 2 192.168.1.1 > /dev/null 2>&1; then\n echo "主機可達"\nelse\n echo "主機無回應"\nfi
主機可達
常見錯誤與排錯
ping: google.com: Temporary failure in name resolution
- 原因
- DNS 解析失敗,可能是 DNS 設定錯誤或網路無法連線。
- 解法
- 改用 IP 測試(ping 8.8.8.8),若 IP 可通但 DNS 不行, 檢查 /etc/resolv.conf 的 nameserver 設定。
ping: connect: Network is unreachable
- 原因
- 本機沒有配置預設路由(default route),無法到達目標網路。
- 解法
- 用 ip route 或 route -n 確認路由設定,或重新設定網路。
Request timeout for icmp_seq X(無回應但有時顯示此)
- 原因
- 目標主機無回應:可能關機、防火牆封鎖 ICMP,或網路問題。
- 解法
- 嘗試改用 curl 或 telnet 測試特定 port,確認是主機問題還是僅封鎖 ICMP。