按固定顺序逐层排除
NAT 出网不通的原因集中在几处,按顺序排查比乱试快得多:实例是否自带公网地址、子网路由表的默认路由是否指向 NAT 网关、SNAT 规则是否覆盖该网段、出方向安全组与主机防火墙是否放通、NAT 网关状态与绑定的 EIP 是否正常。每层都要有明确结论再往下走。
基本信息
| 第一层 | 确认实例未绑定 EIP 或其他公网地址 |
|---|---|
| 第二层 | 核对子网路由表默认路由是否指向 NAT 网关 |
| 第三层 | 核对 SNAT 规则覆盖实例所在网段且状态正常 |
| 第四层 | 检查出方向安全组与主机防火墙是否放行 |
| 第五层 | 查看 NAT 网关状态、绑定 EIP 与监控指标 |
排查步骤
- 确认实例未绑定 EIP,避免与 NAT 路径混淆
- 核对子网路由表默认路由指向 NAT 网关
- 核对 SNAT 规则覆盖实例网段且已启用
- 检查安全组出方向与主机防火墙
- 查看 NAT 网关与绑定 EIP 的状态和监控曲线
- 对比不通实例与正常实例的路由与规则差异
在实例内逐层验证
在实例内逐层验证
ip route get 1.1.1.1 # 默认路由是否指向 NAT 网关
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' http://example.com/ # 出网连通性
curl -s -m 5 https://ifconfig.me; echo # 实际出口地址是否符合预期
# 出口地址异常时回到 SNAT 规则与绑定关系上核对现象与定位层
| 现象 | 更可能的层级 | 验证方式 |
|---|---|---|
| 全部实例不通 | NAT 网关或路由表 | 查网关状态与默认路由 |
| 部分实例不通 | SNAT 覆盖或子网路由 | 对比实例所在子网 |
| 出口地址不符预期 | 实例自带 EIP | 实例内查出口地址 |
| 偶发不通 | 规格触顶或连接数满 | 看网关监控与并发连接 |
遇到「部分实例不通」,优先对比不通实例与正常实例的路由表与 SNAT 覆盖范围差异,而不是逐个实例翻配置。
实例已绑定 EIP 时仍按 NAT 思路排查,方向从第一步就错了;先用一条命令确认实际出口路径。