无法ping通ECS实例的原因较多,您可以参考本文进行排查。
问题现象
本地客户端无法ping通目标ECS实例公网IP,例如:
本地客户端为Linux系统,ping目标ECS实例公网IP时无响应,如下所示:
本地客户端为Windows系统,ping目标ECS实例公网IP时提示请求超时错误,如下所示:
使用自助问题排查工具
阿里云的自助问题排查工具可以帮助您快速检测安全组配置、实例内部防火墙以及常见应用端口监听状态,并给出明确的诊断报告。
单击进入自助问题排查页面,并切换至目标地域。
如果自助问题排查工具未能定位您的问题,请继续下面的步骤进行手动排查。
手动排查
在确保本地网络正常的情况下(即您可以正常访问其他网站或可以ping通其他网站),无法ping通目标ECS实例公网IP可能有以下原因,您可以根据实际情况逐项排查、确认:
可能原因 | 排查方案 |
ECS实例未处于运行中状态 | |
ECS实例网卡异常 | |
VPC启用了IPv4网关集中控制模式后路由配置异常 | |
交换机网络ACL未放通ICMP流量 | |
安全组未放通ICMP流量 | |
ECS实例防火墙丢弃入站ICMP请求 | |
ECS实例资源瓶颈导致网络通信异常 | |
运营商跨境网络波动导致公网访问异常 | |
域名未备案或域名解析异常 | |
客户端或者通信链路上某个中间节点异常 | |
ECS实例存在黑洞 | |
ECS实例被恶意入侵 |
检查ECS实例状态
只有当ECS实例状态为运行中时,才能对外提供业务访问。检查步骤如下:
检查ECS实例网卡状态
ECS实例的网卡状态正常是确保实例能够正常通信(包括被ping通、被远程连接)的基础,您可以通过VNC连接实例后参照以下方式检查实例网卡状态。
检查网卡是否启用。
Linux实例:执行
ip a
命令,正常可以看到主网卡eth0的连接信息,且状态为state UP
。如果实例主网卡eth0状态异常,您可以执行
sudo ifup eth0
或sudo ip link set eth0 up
重新启用网卡。如果您为实例配置了辅助网卡,部分操作系统镜像可能不会自动识别,需要在实例内部配置生效后才可以正常通信(如为没有配置生效的辅助网卡绑定EIP后,无法正常公网通信)。详细信息,请参见配置Linux操作系统识别网卡。
Windows实例:如果网卡驱动出现异常,则可能导致网卡异常,进而导致无法正常通信。
确认IP地址、子网掩码、网关配置正确(需与实际分配的一致)。
ECS实例通过公网IP和私网IP映射实现公网通信,如果私网IP配置异常,会导致公网无法正常通信。实例的私网IP地址需要是分配的有效IP。
Linux实例:执行
ip a
命令,正常可以看到网卡对应的主私网IPv4地址。建议您保持实例默认的DHCP自动分配IP地址,当实例发生网络变化(如更换VPC、更换IP地址)时,内部会自动更新。详细信息,请参见如何在Linux镜像中配置网络为DHCP。
如果您是在实例内部手动静态配置的IP地址,请确保信息与实际分配的一致,否则也会导致网络通信异常。详细信息,请参见Linux实例网卡配置文件IP与控制台不一致问题处理。
默认情况下网卡只自动识别主私网IP地址,如果您为实例分配了辅助私网IP地址,需要在实例内部配置,否则无法生效,如您将该辅助私网IP地址绑定了EIP,也会无法正常通信。详细信息,请参见配置操作系统识别辅助私网IP地址。
Windows实例:查看并确认实例内部网络连接信息。
检查实例所在VPC配置的IPv4网关
默认情况下VPC内的资源通过绑定公网IP即可与公网直接通信,如果启用IPv4网关,则所有出入VPC的公网流量都会受IPv4网关统一管控,且网络策略的变更会影响VPC内所有实例。
比如您激活IPv4网关后,删除了默认的路由条目,或者在删除IPv4网关时候选择了私网模式,都可能会导致VPC下所有资源(包括ECS实例)公网访问异常。您可以参考如下步骤进行确认并修复:
确认实例所在VPC是否处于IPv4网关集中控制模式。
如果您的VPC目前并未受IPv4网关集中管控,则无需进行此项检查。
如果您需要保留此IPv4网关统一管控策略,则需要检查网关路由配置是否正确。
如果您配置了其他自定义路由条目,确保路由链路正确。
如果您不再需要IPv4网关统一管控,则建议您以公网模式删除该IPv4网关。
关于IPv4网关的详细介绍,请参见IPv4网关。
检查ECS实例所在交换机的网络ACL
网络ACL是专有网络VPC中的网络访问控制功能。如果您为ECS实例所在交换机绑定了网络ACL规则,则出入该ECS的网络流量会受网络ACL规则限制。您可以参考如下步骤进行确认:
登录专有网络管理控制台。
在左侧导航栏,选择
。在页面左侧顶部,选择ECS实例所在的地域。
在网络ACL列表中,查找ECS实例所在VPC是否存在对应的网络ACL。
不存在或未绑定ECS实例所在交换机:则您无需进行此检查项。
存在且绑定了ECS实例所在交换机:您需要保证ECS实例所在VPC下创建的网络ACL规则中没有添加您测试的客户端IP的拒绝策略,保证对您期望的源地址、协议类型(ping需要开放ICMP网络控制报文协议)、端口范围等添加了允许策略。
默认情况下交换机绑定网络ACL后,会自动添加下图所示允许所有流量出入方向的规则,如果您删除该规则,则访问受限。
入方向规则如图所示:
出方向规则如图所示:
请您根据实际业务需要,按照最小范围开放原则配置源/目的地址及协议类型(ping需要开放ICMP网络控制报文协议),尽量避免全开(慎用::/0 或者 0.0.0.0/0)以免引发安全问题。详细信息,请参见创建和管理网络ACL。
检查ECS实例安全组规则
ECS实例的安全组中需包含开放ICMP协议的规则,即允许ping通ECS实例,若该规则被删除,则无法ping通ECS实例。您可以通过以下步骤进行排查:
访问ECS控制台-安全组。
在页面左侧顶部,选择目标资源所在的资源组和地域。
找到ECS实例关联的目标安全组,在操作列中,单击管理规则。
在安全组访问规则处,查看入方向规则是否存在ICMP协议的安全组规则。
不存在ICMP协议的安全组规则,请添加以下入方向安全组规则。具体操作,请参见添加安全组规则。
授权策略选择允许,优先级保持默认,协议选择所有ICMP-IPv4,端口为
-1/-1
,访问来源:建议仅允许特定的IP访问。根据安全组类型确认出方向规则。
普通安全组:普通安全组出方向默认允许所有访问,即从安全组内 ECS 访问外部都是放行的,您无需配置相关规则。
企业级安全组:出方向默认禁止所有访问,即从安全组内 ECS 访问外部都是禁止的。如果安全组类型为企业级安全组,需要保证出方向同样存在允许ICMP协议流量的规则。详细信息,请参见普通安全组与企业级安全组。
检查ECS实例防火墙配置
如果服务器开启了防火墙,并设置了屏蔽外界访问的规则,那么在远程连接该服务器时,可能会导致访问失败。请根据ECS实例操作系统,选择相应的检查方式。
检查Linux系统内核参数和防火墙配置
Linux系统是否允许ping由内核参数icmp_echo_ignore_all
和防火墙设置共同决定,任何一个禁止,都会无法ping通。
检查Linux系统内核参数
使用VNC远程连接ECS实例。
具体操作,请参见通过VNC连接实例。
执行如下命令,查看内核参数
icmp_echo_ignore_all
值。cat /proc/sys/net/ipv4/icmp_echo_ignore_all
若回结果为0,表示允许所有的ICMP请求,请执行检查Linux防火墙配置。
若返回结果为1,表示禁止所有的ICMP请求,请执行步骤3。
执行如下命令,修改内核参数
icmp_echo_ignore_all
值为0允许所有ICMP请求。临时允许
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
永久允许
echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf sysctl -p
检查Linux防火墙配置
使用VNC远程连接ECS实例。
具体操作,请参见通过VNC连接实例。
执行以下命令,查看防火墙规则。
iptables -L
若返回如下结果,表示ICMP对应规则未被禁止。
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp -- anywhere anywhere icmp echo-request Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp -- anywhere anywhere icmp echo-reque
若返回结果ICMP对应规则被禁止,请执行以下命令,启用对应规则。
#Chain INPUT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #Chain OUTPUT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
检查Windows防火墙配置
本操作以Windows Server 2012为例,其他版本的Windows Server系统操作类似。
使用VNC远程连接ECS实例。
具体操作,请参见通过VNC连接实例。
单击左下角的
图标,打开服务器管理。
选择右上角的工具>高级安全 Windows防火墙。
在高级安全 Windows防火墙页面,分别查看入站规则和出站规则中ICMP相关协议是否被禁止。
如果ICMP相关协议被禁止,如下图所示,请开启该规则。
检查ECS实例CPU使用率或带宽使用率
ECS实例的高CPU使用率、带宽满载、内存耗尽或磁盘I/O过载等资源瓶颈,可能直接或间接引发公网IP通信异常(如无法被ping通)。
当CPU或内存资源枯竭时,系统协议栈进程因调度延迟可能导致ICMP响应超时或被内核丢弃;带宽持续饱和会直接阻塞数据包的收发,使ping请求无法完成传输;而极端磁盘I/O负载可能引发系统级僵死(如进程D状态阻塞),间接拖垮网络服务的响应能力。尤其在混合型高负载场景中(例如突发流量同时触发CPU与带宽过载,或内存不足引发频繁Swap交换并加剧磁盘I/O压力),多资源瓶颈的叠加效应会显著放大网络不可达风险。
您可以通过健康诊断、云监控等查看实例的带宽、内存、CPU等指标,进一步结合不同的工具(如Linux的sar、atop,Windows的资源监视器)定位异常进程,并参考解决方案针对性释放资源或弹性扩容,详细信息,请参见实例负载高问题排查及解决方案。
检查是否存在黑洞
请检查是否收到黑洞通知,黑洞期间无法远程连接、无法ping通ECS实例。
更多信息,请参见阿里云黑洞策略。
检查云安全中心是否存在安全告警
请检查云安全中心是否有异常的安全告警通知,被恶意入侵也会有可能导致ECS实例无法ping通。更多信息,请参见查看ECS实例的安全风险。
检查您的实例是否为中国香港或海外实例
由于不同地区运营商之间的国际出口带宽资源有限,且跨区域流量需经过多级路由中转,容易因线路拥塞、BGP路由绕行或策略性限速导致高延迟、丢包及抖动。如果您是在中国内地ECS实例访问中国香港或海外ECS实例时,链路质量会有可能受到运营商线路影响,建议过一段时间再次尝试。
建议您遵循就近原则,境内客户访问部署在中国内地地域(如华北、华东)的服务器,境外客户就近接入海外节点(如中国香港、新加坡),保障访问稳定性,同时满足多地数据合规要求。
客户端至ECS实例的双向链路诊断
若仅特定客户端环境无法ping通ECS实例(其他客户端正常),建议同时从客户端和ECS实例双向发起链路测试,以定位中间网络节点或本地配置异常。具体操作,请参见使用MTR工具进行网络链路分析。
检查域名是否备案或域名解析配置
如果可以ping通公网IP,但是ping不通域名,可能是域名没有备案或者域名解析异常导致。
根据工信部要求,域名解析至中国内地服务器必须先完成网站备案,才能正常开通网站访问。因此,网站在未取得备案号之前不允许开通访问,即未备案成功的网站均不能对外开通Web服务,否则将被阿里云监测系统识别并阻断网站服务。
如果域名未备案,请先进行备案。更多信息,请参见什么是ICP备案。
如果域名已备案,请检查域名解析是否失效。更多信息,请参见解析生效测试方法和域名解析不生效的排查思路。
更多域名或网站无法访问排查方法,请参见域名或网站无法访问如何排查?。