AWS跨VPC路由故障:访问本地CIDR流量未转发到EC2原因问询
问题根因
这是AWS VPC路由规则的优先级和local路由的特性导致的,核心原因如下:
- AWS VPC路由表中,
local路由是隐式创建、不可删除、优先级最高的路由,优先级远高于手动配置的静态路由、默认路由。路由匹配时遵循最长前缀匹配规则,相同前缀下local路由优先被命中。 - 你配置的VPC-01的CIDR是10.0.1.0/24,因此VPC-01路由表的
10.0.1.0/24 -> local规则天然存在,所有目标地址属于10.0.1.0/24网段的流量进入VPC-01后,都会直接命中这条local路由,VPC会直接在本地网段内通过ARP寻址找目标IP,根本不会匹配你配置的0.0.0.0/0 -> 10.0.1.1默认路由,因此流量不会被转发到EC2-01,EC2-01自然收不到ping请求。
对比实验正常的原因
你测试的192.168.0.0/24网段不属于VPC-01的CIDR范围,流量进入VPC-01后不会命中local路由,会优先匹配你新增的192.168.0.0/24 -> 10.0.1.1规则,就算没有这条规则也会命中默认路由,因此流量会正常转发到EC2-01,所以你能在EC2-01上收到ping请求。
额外说明
如果你确实需要把目标为10.0.1.0/24网段的流量全部转发到指定网关节点,你需要调整VPC网段规划,不要让目标转发网段和VPC本身的CIDR重合,否则local路由的优先级会让你的自定义转发规则永远无法被命中。
内容的提问来源于stack exchange,提问作者Lin Yu Cheng
相关产品推荐
相关产品推荐

