所有的网络问题都可归结于,我是谁,从哪儿来,到哪儿去的终极哲学问题
最近有朋友来自灵魂深处的拷问,为什么同一个VPC
内的公有子网
下的主机不能走NAT
网关。为什么,这到底是为什么啊……
公有子网和私有子网
公有子网:公有子网就是默认网关是 Internet 网关
的子网,可以与互联网直接相连。私有子网:私有子网只能通过 NAT实例
或者NAT 网关
与互联网相连。
其实吧,有个简单的理解方式,即:公有子网类似机房的dmz区域
,而私有子网类似机房的内网
。
问题解答
AWS
官网提供了一张非常简明清晰的图片,有了这张图片,就不难理解,朋友的问题了。

如图所示,如果想要让公有子网的机器走NAT网关
,那么公有子网的机器网络流向是:
ec2 -> natgw
这个时候,我们需要修改子网配置,让子网的默认流量走NAT网关
,路由表如下:
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-gateway-id |
经过此项操作后,看起来合情合理,但是不要忘了,我们的NAT网关
获取到的其实是子网内部的IP
那么,我们此时的NAT网关
的网络流量走向其实是:
nat-gateway -> nat-getway
这样就出现了路由回环了,自然是无法畅通了
如何解决?
想要解决这个问题,在不重建主机的情况下,只能将NAT网关
放到另外的VPC中了。
文章转载自云原生外卖小哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





