我尝试在亚马逊AWS中实现这个网络:
因此,我在 amazon VPC 中拥有以下子网:
子网subnet-0ac620105fc198e33
使用具有弹性 IP 的 NAT 网关,其路由表如下:
这nat-0de30b43c561c4161
是我的 nat 网关。
所有子网均具有以下 ACL
上面显示的相同规则适用于入站和出站流量。
我还有 2 个 EC-2 实例:
- 它位于使用 NAT 网关的子网中,用于 ssh 访问的公共子网中
- 一个位于使用 nat 网关的子网中
访问第二个 EC-2 实例后,我运行以下命令:
ping 8.8.8.8
curl http://google.com
但无法连接到谷歌。为什么我无法连接?
答案1
摘要:NAT 网关必须位于公共子网中,并且必须具有通向 Internet 网关的路由。AWS 文档涵盖了这一点这里和这里。
查看 nat 网关是否位于通过普通互联网网关访问的子网中,在您的情况下,Host1 和 Nat Gateway 都可以位于同一个子网中,也可以位于通过普通互联网网关转发流量的子网中。
在一个简单的图像中,您必须实现以下内容:
因此,请将 Nat Gateway 视为将流量转发到具有 Internet 网关的子网的另一台主机。上图显示了每台机器应如何连接到 Internet。在您的案例中,通过 Nat Gateway 和子网 1 通过普通 Internet 网关Host 2
访问Subnet 2
Internet。
就您而言,子网subnet-0c8192051e2a46965
或subnet-065ae3de09e9f8355
适合托管 Nat Gateway。但 Nat Gateway 不得位于子网中subnet-0ac620105fc198e33
为了更改 Nat 网关的子网,您必须创建一个新的 Nat 网关,然后更新路由表以利用 Nat 网关。如果您想保留弹性 IP,请等待旧的 Nat 网关被删除。之后,使用新的。
请记住,在此字段中创建新的 Nat 网关,如下所示:
选择子网subnet-0c8192051e2a46965
或subnet-065ae3de09e9f8355
。