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。

延伸閱讀