【发布时间】:2020-09-25 06:17:09
【问题描述】:
我有一个预先存在的 VPC,其子网 CIDR 为 172.31.80.0/20。
有一个 Internet 网关连接了此 VPC。
我创建了以下
-
NAT 网关,它有一个公共 IP 和一个私有 IP (172.31.90.191) 连接到同一个 VPC
-
具有相同 VPC 和三个路由的路由表:
1) 172.31.0.0/16 target local 2) 0.0.0.0/0 target the NAT Gateway 3) 172.32.0.0/16 target of PCX for my other VPC were my EC2 VPN is
NAT 关联到子网,子网关联到路由表。
VPC 上的 ACL、路由表和子网都允许所有流量所有协议所有端口 0.0.0.0/0 进出。
Amazon Linux 2 EC2 具有安全组以允许所有流量所有协议所有端口 0.0.0.0/0 进出。
当它启动时,cloud-init 会为其分配一个默认路由 172.31.80.1。 它无法 ping 8.8.8.8 并且无法 curl google.com
我调整了 FlowLogs 以捕获所有日志,对于 EC2 的 ENI,日志仅显示在 VPN 和 EC2 之间来回传输的数据包的 ACCEPT OK。
我什至看到 'dig google.com @8.8.8.8' 接受 OK
埃尼-???? 172.31.90.208 8.8.8.8 50974 53 17 6 402 1600966519 1600966524 接受确定
但我没有看到回复。
查看所有内容的详细信息会显示“可用”和“活动”状态,全为绿色。
我的网关出了什么问题?
cloud-init 是否给了我错误的网关 IP?
我了解 VPC 必须位于公共子网上的 NAT 之后。
据我了解,公共子网和私有子网之间的唯一区别是公共子网与路由表相关联,该路由表将 0.0.0.0/0 路由到 Internet 公开的目标。
我的路由表有 0.0.0.0/0 与 NAT 的目的地,它有一个公共 IP。还需要什么吗?
【问题讨论】:
-
您能否确认 NAT 网关位于可访问公共 Internet 的子网中?
-
我认为这是我正在寻找的澄清。 NAT 确实有一个公共 IP 地址,并且它与 EC2 位于同一子网中。除此之外还应该寻找什么?
-
它不仅仅是一个公共 IP,NAT 需要存在于一个公共子网(一个带有使用互联网网关的路由表的子网)中。如果你有这个,NAT 网关可以与互联网通信
-
您是在告诉我,要使 NAT 网关工作,它需要 Internet 网关吗?我将 RTB 更改为将 0.0.0.0/0 路由到 IGW,现在系统可以 curl google.com。我确实想要网络服务器的 IGW,但现在我认为 NAT 网关只会被后端系统使用,因为它们不需要公共 Internet 连接。
-
是的,它需要 IGW 将流量路由到互联网,否则它只是您网络中无法访问互联网的另一台设备。
标签: amazon-web-services amazon-ec2 amazon-vpc amazon-gateway