有部分小伙伴,在用云服務(wù)器做練習的時候發(fā)現(xiàn),使用 ping 命令出現(xiàn)了無法 ping 通的情況。所以,針對這個問題,本篇文章整理了一下出現(xiàn) ping 命令不通的情況判斷,總結(jié)如下:
一般來說,Linux 系統(tǒng)是否允許 ping 由防火墻設(shè)置和內(nèi)核兩個共同決定,任何一個禁止,都會造成 ping 包 “Request timeout”。
因此,首先,我們可以先檢查防火墻設(shè)置,主要看防火墻對 Ping 規(guī)則是否有做限制。
這里可以執(zhí)行命令 iptables -L ,查看當前服務(wù)器的防火墻規(guī)則以及 ICMP 對應(yīng)規(guī)則是否被禁止:
回顯信息如下圖所示,說明 ICMP 規(guī)則沒有被限制。
如果發(fā)現(xiàn) ICMP 規(guī)則被阻止了,可以使用命令:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
來打開防火墻的 ICMP 規(guī)則。
其次,檢查云服務(wù)器是否設(shè)置禁 Ping
登錄云服務(wù)器,執(zhí)行以下命令,查看系統(tǒng) icmp_echo_ignore_all 設(shè)置。
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
若返回結(jié)果為 0,表示系統(tǒng)允許所有的 ICMP Echo 請求,允許 ping。
若返回結(jié)果為 1,表示系統(tǒng)禁止所有的 ICMP Echo 請求,請執(zhí)行以下命令,修改內(nèi)核參數(shù) icmp_echo_ignore_all 的設(shè)置:
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all
接下來,檢查網(wǎng)絡(luò)是否正常
檢查本地網(wǎng)絡(luò),使用相同區(qū)域主機進行 Ping 測試。使用在相同區(qū)域的云服務(wù)器去 Ping 沒有 Ping 通的公網(wǎng) IP,如果可以正常 Ping 通說明虛擬網(wǎng)絡(luò)正常,排除本地網(wǎng)絡(luò)故障后重新 Ping 測試。
檢查是否鏈路故障。鏈路擁塞、鏈路節(jié)點故障、服務(wù)器負載高等問題均可能引起執(zhí)行 Ping 命令時出現(xiàn)丟包或時延過高的問題。
最后,檢查域名解析(域名 Ping 不通)
如果服務(wù)器 IP 可以 Ping 通,但域名無法 Ping 通,可能是域名解析的問題導致。
1.檢查域名解析。您可以前往 DNS 服務(wù)控制臺查看域名解析詳情。
2.檢查 DNS 服務(wù)器配置。如果 ping 域名顯示找不到主機可能是 DNS 服務(wù)器速度慢,導致的訪問卡頓。
總之,在日常中,如遇到 Ping 不通的問題,可以逐步檢查和排除以上可能的原因,找到合適的解決方案。