为何私有子网仅配置0.0.0.0路由时才能访问互联网?
问题描述
我的架构如下:
EC2 in private subnet (10.0.0.0/24) --> NAT gateway in public subnet (10.0.0.8/24)
当为私有子网配置以下路由时,EC2无法连接互联网:
10.0.0.0/24 nat-08a0fd199f0599e7c Active No 10.0.0.0/16 local Active No
若将私有子网路由表修改为以下配置,则可以正常访问:
0.0.0.0/0 nat-08a0fd199f0599e7c Active No 10.0.0.0/16 local Active No
我认为这两种配置效果应该一致,私有子网实际为10.0.0.0/24,测试所用EC2的IP为10.0.0.62。另外,可达性分析器显示:
rtb-0470933497a2054a2 (demo-private-routetable) NO_ROUTE_TO_DESTINATION: Route table rtb-0470933497a2054a2 does not have an applicable route to igw-01f02d81bd80fc493. See rtb-0470933497a2054a2.
请问这是为什么?
问题原因分析
- 最长前缀匹配规则是核心:AWS路由表采用最长前缀匹配原则,只有目标IP与路由条目网段完全匹配,且是最具体的条目时,才会被选中。EC2访问互联网时,目标IP是公网地址(比如8.8.8.8),第一个路由表中的
10.0.0.0/24和10.0.0.0/16仅覆盖私有IP段,完全不匹配公网IP,因此没有可用路由转发流量,导致无法联网。而0.0.0.0/0是默认路由,会匹配所有未被更具体路由覆盖的目标IP,自然包含所有公网地址,能将流量导向NAT网关实现互联网访问。 - 路由条目生效范围理解错误:你误以为
10.0.0.0/24的路由能覆盖EC2的互联网流量,这是错误的。这条路由仅对目标IP属于10.0.0.0/24网段的流量生效,而互联网流量的目标地址是公网IP,不在该网段内,所以这条路由根本不会被触发。 - 可达性分析器提示的本质:提示中说路由表没有到IGW的适用路由,核心原因是没有匹配公网目标IP的路由条目,流量找不到出口。虽然你使用的是NAT网关而非IGW,但问题根源是没有能引导公网流量的路由,所以流量无法被转发到NAT网关,最终表现为无路由到目的地。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

