同一VPC下的两台阿里云ECS,内网为什么ping不通?内网互通到底卡在哪?
直接给结论:同账号、同VPC下的两台ECS,网络层默认就是互通的,ping不通九成是安全组没放行对方内网IP或ICMP协议,剩下的要查系统防火墙和IP网段。逐层排查,两分钟就能定位。
- 先确认两台机器真在同一VPC、同一网段。在ECS控制台实例详情里看「专有网络ID」和私有IP,比如两台分别是172.16.0.x和172.16.1.x,同属172.16.0.0/16就没问题;如果一个在经典网络或另一个VPC,那本来就不通,需要通过云企业网或对等连接打通。腾讯云CVM对应的是私有网络VPC,跨VPC同样要用对等连接或云联网,思路一样。
- 检查安全组——最常见的原因。安全组默认只放行22、3389等少量端口,ICMP和业务端口都是不放行的。到被ping那台机器的安全组里,添加入方向规则:协议类型选「全部ICMP」或自定义ICMP,授权对象填发起ping那台机器的内网IP(或对方安全组ID,实现组内互通)。阿里云支持直接授权另一个安全组,比填IP更优雅,机器换IP也不怕。
- 排查系统内部防火墙。有些镜像默认启用firewalld或ufw,会拦截ICMP。用systemctl status firewalld确认状态,测试阶段可以先放行ICMP或临时停用验证;Ubuntu镜像的ufw status也要看一眼。别只查云上的安全组,机器自己这一层同样会挡。
- 确认用对了地址。一定要ping内网IP(如172.16.0.x),别ping公网IP——两台都在同一地域时,公网IP之间的访问默认走公网,会被公网侧安全组规则拦住,还浪费带宽费。内网互通的另一大好处是免流量费、延迟低到毫秒级以内。
- 跨可用区不影响,跨地域才影响。同VPC内不同可用区的ECS内网是互通的,很多人以为是可用区隔断了连接,其实不是;只有跨地域才需要专门的互联方案。所以不必为了内网互通刻意把机器放同一个可用区,反而应该分散到不同可用区提高容灾能力。
- ping通了不代表业务端口也通。ICMP放行了,Web的80/443、MySQL的3306还得单独放行。建议在安全组里把「授权对象=对方安全组」的规则加上常用业务端口,这样两台机器之间才真正能协作,比如应用服务器连内网数据库。
注意:
- 给安全组加规则时,授权对象尽量精确到对方内网IP或安全组ID,不要写成0.0.0.0/0,否则等于对全网开放。
- 同VPC但不同交换机(vSwitch)网段的情况,只要在同一个VPC的网段规划内就是通的,不用额外配置。
- 数据库这类敏感服务务必只对内网放行,不要为了图省事同时开公网访问。
总结:同VPC内网互通本身是默认能力,卡点几乎都在「安全组没放行」和「系统防火墙」这两层。按「网段→安全组→系统防火墙→ping对地址」的顺序排查,配合安全组互相授权的写法,多台ECS之间的内网协作就稳定了。
