AWS CloudFormation路由配置报错求助:CIDR与VPC CIDR冲突
报错核心原因
报错信息:目标CIDR块192.168.9.0/27等于或比该VPC的某一CIDR块更具体,此路由只能指向接口
AWS的规则是:当你在VPC路由表中配置的目标CIDR是**当前VPC自身CIDR的子集(更具体的网段)**时,这条路由的目标不能指向Transit Gateway或其他网关类资源,只能指向接口类资源(比如弹性网卡、NAT网关、VPC端点等)。
本质是:192.168.9.0/27属于当前VPC的内部网段范围,这类流量应该在VPC内部处理,AWS不允许将其转发到Transit Gateway。
排查与解决步骤
核实VPC的CIDR范围
检查RoutingDomain栈中VPC的CIDR配置,确认是否包含192.168.9.0/27(比如VPC CIDR是192.168.9.0/24,那么/27就是它的子集)。如果确实是VPC内部网段,说明这条路由的配置逻辑错误——同VPC内的子网通信无需手动配置路由,AWS会自动处理。检查路由参数的正确性
模板中RoutingDomainPrivateRoute的默认值是192.168.9.0/24,但报错的是/27,说明实际部署时可能传入了192.168.9.0/27作为参数值。确认这条路由的用途:如果是跨VPC通信,目标CIDR应该是其他VPC的网段,而非当前VPC的子集。修正路由配置
- 若参数传错:将
RoutingDomainPrivateRoute的参数值改为正确的远程VPC CIDR(确保不是当前VPC的子集)。 - 若逻辑错误:删除这条指向Transit Gateway的内部CIDR路由,无需手动配置同VPC内的子网通信路由。
- 若参数传错:将
校验Transit Gateway反向路由
同步检查Transit Gateway路由表中的TransitGatewayRouteCIDR3(默认192.168.9.0/24)配置,确保它指向正确的VPC附件,避免出现路由环路。
代码重点检查点
你的模板中RDPrivateRoute1是VPC路由表的路由资源,目标CIDR来自RoutingDomainPrivateRoute参数:
"RDPrivateRoute1": { "Type": "AWS::EC2::Route", "Properties": { "RouteTableId": { "Fn::ImportValue": { "Fn::Sub": "${RoutingDomainStackName}-RouteTableIDC" } }, "DestinationCidrBlock": { "Ref": "RoutingDomainPrivateRoute" }, "GatewayId": { "Fn::ImportValue": { "Fn::Sub": "${TransitGatewayStackName}-TransitGatewayID" } } } }
重点确认DestinationCidrBlock对应的参数值是否为当前VPC的子集,若是则修改参数或删除该路由资源。
内容的提问来源于stack exchange,提问作者DrewCargle

