參考騰訊雲的解決辦法: https://cloud.tencent.com/document/product/213/14639#CheckOSSetting
我的服務器是aws的, 解決方法大同小異
linux系統是否允許 ping是由兩個因素決定的, 內核參數和防火牆, 兩個因素同時允許時才能ping通
內核參數: cat /proc/sys/net/ipv4/icmp_echo_ignore_all
防火牆:iptables
1. 檢查 是否配置 公網ip
打開實例的詳情頁
2. 檢查安全組設置
點擊 launch-wizard-1, 進到安全組的詳情頁
查看入站和出站的規則
如果有這個所有流量, 全部協議, 全部端口, 那么可以排除 安全組的問題, 如果沒有開放全部, 可以先全部開放試一下
3. 檢查系統設置
在實例中, 執行命令:
sudo cat /proc/sys/net/ipv4/icmp_echo_ignore_all
如果返回的是1, 表示系統禁止所有的icmp echo 請求, 執行下面的命令修改
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all
如果返回的是0, 看第4步
有的情況是根本沒有這個配置, 那么可以手動在這個文件中,加上這個配置
4. 檢查防火牆設置
sudo iptables -L
如果返回結果如下圖, 則也沒有問題
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp -- anywhere anywhere icmp echo-request Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp -- anywhere anywhere icmp echo-request
如果結果不是這樣, 則需要啟用 icmp相應規則
方法:
vim /etc/sysconfig/iptables COMMIT之前加入 iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT 保存退出后, 重新加載 iptable配置 service iptables save service iptables restart
5. 域名檢查
如果你ping的不是ip, 是域名, 要檢查你的域名是否備案成功
我遇到這個問題時, 是通過打開安全組來解決的, aws的安全組, 默認入站規則並不是允許全部的