参考腾讯云的解决办法: 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的安全组, 默认入站规则并不是允许全部的