首页/云/云网络与负载均衡速查/NAT 依赖的路由与子网配置

NAT 依赖的路由与子网配置

NAT 网关只对其所在 VPC 生效:子网出公网流量需要路由表的默认路由指向 NAT 网关,SNAT 规则再按网段授权。新建子网后如果忘记更新路由或 SNAT 覆盖范围,该子网实例就无法出网。

NAT 生效依赖两个前提

NAT 网关只对它所在的 VPC 生效,而且不会自动接管子网的出网流量。要让某个子网通过 NAT 出网,必须满足两个前提:该子网路由表的默认路由指向 NAT 网关,SNAT 规则覆盖该子网的网段。新建子网时很容易只做了一半,结果新子网里的实例全部无法出网。

基本信息

前提一NAT 网关与目标子网位于同一 VPC
前提二目标子网路由表的默认路由指向 NAT 网关
SNAT 规则指定允许借用的网段以及使用的 EIP 地址
常见遗漏新建子网后未同步更新路由与 SNAT 规则
排查顺序先查路由表指向,再查 SNAT 规则覆盖范围

典型使用场景

  • 新建子网后实例无法出网,核对路由与 SNAT 覆盖
  • 迁移子网到新网段,需要同步调整 SNAT 规则
  • 多子网环境下按业务划分不同的出口地址
  • 排查「部分实例不能出网」:对比所在子网的配置差异
  • 扩容新增可用区子网时,把网络配置纳入扩容清单

在实例内验证路由与出口

在实例内验证路由与出口
ip route get 1.1.1.1               # 默认路由是否指向 NAT 网关
curl -s -m 5 https://ifconfig.me; echo   # 实际出口地址是否符合预期
# 出口不符合预期或超时时,回到子网路由表与 SNAT 规则上核对

排查对照

现象检查点处理方式
整个子网不能出网子网路由表默认路由添加指向 NAT 网关的路由
部分实例不能出网SNAT 规则网段覆盖补充或修正 SNAT 规则
出口地址不符预期SNAT 规则指定的 EIP核对绑定关系与规则
新子网立即不通是否漏了上两步配置纳入新建子网检查清单
新增子网是常见遗漏点:路由表与 SNAT 规则要同步更新,否则新子网内的实例会全部无法出网。
SNAT 规则的网段要与实际子网一致;网段写错时现象是「部分地址能通、部分不通」,比全不通更难排查。

新建子网检查清单

创建子网后固定做三件事:确认路由表默认路由指向 NAT 网关、确认 SNAT 规则覆盖新网段、在实例内查一次实际出口地址,三步都通过再交付使用。

易错点

  • 新子网未加入 NAT 路由,实例无法出网且误判为网关故障
  • SNAT 规则网段与实际子网不一致,部分地址不通
  • 只改了路由没改 SNAT,或只改 SNAT 没改路由,配置看似完成实际不生效
  • 新建子网时没有把网络配置写进扩容清单,问题周期性重复出现

数据来源与参考

  • 阿里云 NAT 网关文档
  • 阿里云 路由表文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌