一、问题场景:深夜告警!你的EC2失联了
“凌晨2点,监控系统突然告警:核心业务服务器Ping检测失败!SSH连接中断,控制台显示实例状态
Running
,但业务已瘫痪…”
这是许多运维工程师的噩梦。AWS EC2实例状态正常却无法访问,往往是网络配置的“隐形杀手”在作祟。下面分享一套系统化的排查方案:
二、核心排查流程图
三、5大关键原因与解决方案
1. 安全组(Security Group)配置错误(高频问题!)
-
原因:未放行ICMP协议
-
解决方案:
-
进入EC2控制台 > 安全组 > 选择目标实例关联的安全组
-
在入站规则中添加:
-
类型:
All ICMP - IPv4
-
源:
0.0.0.0/0
(测试用)或指定IP
-
-
保存后等待10秒生效
-
📌 避坑提示:临时开放
0.0.0.0/0
后需及时收紧范围!
2. 操作系统防火墙拦截
-
Linux(Ubuntu/CentOS)
# 检查状态
sudo ufw status
# 临时允许ICMP(重启失效)
sudo ufw allow proto icmp
# 永久方案:修改/etc/ufw/before.rules
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
-
Windows:
-
控制面板 > Windows Defender防火墙 > 高级设置
-
入站规则 > 启用
文件和打印机共享(回显请求 - ICMPv4-In)
-
3. 子网网络ACL(Network ACL)拦截
-
排查步骤:
-
进入VPC控制台 > 网络ACL
-
找到实例所属子网的ACL策略
-
检查入站规则:
-
类型100:允许
IPv4 ICMP
-
源
0.0.0.0/0
-
-
出站规则需同时放行(类型100)
-
4. 路由表(Route Table)配置异常
-
关键检查点:
-
子网关联的路由表是否指向Internet Gateway(IGW)
-
目标地址
0.0.0.0/0
的下一跳是否为igw-xxxxxx
-
-
修复方案:
-
VPC控制台 > 路由表
-
编辑关联子网的路由表
-
添加路由:
0.0.0.0/0 -> igw-xxxxxx
-
5. 弹性IP未关联(经典陷阱!)
-
现象:重启实例后公网IP变化导致Ping不通
-
解决方案:
-
EC2控制台 > 弹性IP
-
分配新地址 > 关联目标实例
-
在安全组中同步更新IP白名单
-
四、高阶排查技巧
-
VPC流日志(Flow Logs):捕获网络接口流量
# 查看拒绝的ICMP包
fields @timestamp, srcAddr, dstAddr, action
| filter action='REJECT' and protocol=1
-
实例连接诊断工具:EC2控制台 > 选择实例 > 操作 > 监控和故障排除 > 实例连接诊断
五、防患于未然:最佳实践
-
安全组最小化原则:生产环境禁止
0.0.0.0/0
开放ICMP -
基础设施即代码(IaC):用CloudFormation/Terraform固化网络配置
# Terraform安全组示例
resource "aws_security_group" "allow_ping" {
ingress {
from_port = -1 # ICMP类型
to_port = -1 # ICMP代码
protocol = "icmp"
cidr_blocks = ["192.168.1.0/24"]
}
}
-
定期网络审计:使用AWS Config检查安全组合规性
六、总结
“Ping不通的背后,是AWS网络体系的深度协同。掌握VPC→子网→安全组→ACL的联动逻辑,才能成为真正的云网络侦探。
通过本文的5层排查法,95%的EC2网络连通问题可快速定位。记住黄金口诀:状态检查→安全组→ACL→路由→OS防火墙,轻松化解运维危机!
提示:如果以上都无法解决,请重启两遍实例,有可能是您的程序崩了。
降本增效利器:AWS最值得投入的三大核心服务指南70%的出海项目都选择了亚马逊云?https://mp.weixin.qq.com/s/u34eNKDEvsfsiXmpYvxAyg