AWS公网Web服务器部署路由表配置与资源关联咨询
AWS VPC 路由配置实操与关联逻辑说明
核心资源关联逻辑先理清楚
先把几个资源的绑定关系掰明白,别乱绑:
- 路由表是VPC的子资源,创建时必须指定所属VPC,不能跨VPC使用
- 每个子网有且仅能关联一张路由表,创建子网时如果没手动指定,会自动绑定VPC默认的主路由表
- 互联网网关(IGW)是VPC的公网出入口,创建后必须先附加(attach)到对应VPC,才能被路由表引用,它不需要直接绑定子网、EC2或者RDS
- VPC内部同网段/跨子网的流量,默认通过路由表自动生成的本地路由转发,不需要额外配置公网相关规则
需求1:公网访问EC2 80端口Web服务的路由配置
前置检查(少一步都不通)
- 放EC2的公网子网,已经关联了你配置的自定义路由表(没关联的话就用默认主路由表,也能用但不建议生产这么搞)
- 互联网网关已经成功附加到当前VPC,状态显示为
attached - 这台EC2已经绑定了弹性公网IP(EIP)或者启动时自动分配了公网IP,没有公网IP的话公网流量找不到实例
- 域名
myapp.example.com直接做A记录解析到EC2的公网IP/EIP就行,这步和路由表无关
具体路由条目配置
在公网子网关联的路由表中,只需要保留/添加2条路由:
- 目标网段:
你的VPC整体CIDR段(比如10.0.0.0/16),下一跳:local这条是VPC创建路由表时默认生成的本地路由,绝对不能删,负责VPC内部所有资源之间的通信
- 目标网段:
0.0.0.0/0,下一跳:你附加到VPC的互联网网关这条规则的作用是:所有目标地址不在VPC内部的流量(也就是所有公网流量),全部转发给互联网网关,双向打通公网出入的路由通道。公网用户访问域名的流量路径就是:用户终端 -> 公网 -> IGW -> 路由表转发 -> 公网子网 -> EC2 80端口。
配套安全配置提醒
你之前规划的NACL、安全组规则有个小坑:NACL是无状态的,除了入方向放行80端口,还要记得放开出方向1024-65535临时端口段的流量,不然EC2的回包会被NACL拦截;EC2的安全组是有状态的,只需要入方向放行80端口即可,出方向默认全通不需要额外调整。
需求2:EC2访问RDS 3306端口的路由配置
90%的人这里会瞎改路由表,实际上分两种场景:
场景1:RDS部署在同VPC内(推荐的常规部署方式)
完全不需要修改任何路由表规则。前面说的默认local路由已经覆盖了整个VPC的CIDR范围,EC2到RDS的流量属于VPC内部流量,直接通过local路由转发,不会走公网,延迟低也安全。
你只需要调整安全组/NACL规则即可:
- RDS绑定的安全组,入方向添加规则:源地址填EC2绑定的安全组ID(不要写死IP,用安全组ID做源更灵活),协议TCP,端口
3306 - 如果RDS部署在独立子网,该子网关联的NACL要放行:入方向来自EC2所在公网子网网段的3306端口,出方向放行
1024-65535临时端口段的回包流量;EC2所在公网子网的NACL要放开出方向到RDS子网网段的3306端口。
场景2:RDS开启了公网访问地址(非常不推荐)
现有公网子网的0.0.0.0/0指向IGW的路由已经能满足通信需求,不需要加新路由。只要在RDS的公网访问安全组里,放通EC2的公网IP/EIP的3306入站即可,这种方式流量会绕公网,延迟高且暴露攻击面,非特殊情况不要用。
常见踩坑点避坑
- 路由表不需要直接关联EC2、RDS这类计算资源,它只和子网绑定,资源在哪个子网,就遵循哪个子网关联的路由表规则
- 你当前的单公网子网架构,只需要1张关联公网子网的路由表就能满足所有需求,不需要重复建多张路由表
- 不要删除路由表里的local路由,删了之后整个VPC内部通信直接中断,EC2连不上RDS
- 生产环境建议给RDS单独划分没有公网路由的私网子网,私网子网关联的路由表不要加
0.0.0.0/0指向IGW的规则,彻底避免RDS暴露到公网。
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

