无法让 AWS NAT 网关为 API 使用 IP 白名单
Unable to get AWS NAT gateway working for API with IP whitelist
我们的目标是让我们的 Elastic Beanstalk 设置通过 NAT 网关路由流量,因为我们需要连接到需要 IP 白名单的 API 的某些流量。我没有修改当前设置,而是创建了一个 separate/isolated VPC & EC2 实例来熟悉和测试设置。但是我还没有按照预期进行设置。
设置如下
- VPC (vpc-77049811),CIDR 为 10.0.0.0/16
- 分配给提到的 VPC 的互联网网关 (igw-4d4b212a)
- CIDR 为 10.0.1.0/24 的子网 (subnet-096d8a53)
- 附加到提到的子网并分配弹性 IP 的 NAT 网关 (nat-00bb49204627de7e6)
- 路由 table 附加到提到的 VPC 并关联到提到的子网
- 1x EC2 实例分配给 VPC 及其自己的弹性 IP 并已禁用Source/Destination检查
路由Table设置
10.0.0.0/16 local
0.0.0.0/0 igw-4d4b212a
通过上述设置,我可以登录服务器并发出 curl 请求以获取服务器 public IP 地址(curl icanhazip.com ).一旦我向 url 的路由 table 添加规则以通过 NAT 网关路由 url,我就无法 ping 或请求 curl 请求,因为它会超时。
添加到路由 table 的规则不起作用
45.63.64.111/32 nat-00bb49204627de7e6
144.202.71.30/32 nat-00bb49204627de7e6
不确定我是否忽略了这里的某些内容,或者我是否误解了 NAT 网关的概念和用例?
这是 public IP 45.63.64.111。您需要 IGW 才能到达此流量。
- 您可以通过直接将流量重定向到 IGW 来实现
或者
- 您可以通过定向到 NAT 然后进一步将该流量定向到 IGW 来做到这一点
缺少指向 IGW 的部分。
Nat 网关用于私有子网中的 EC2(没有附加 IGW)。在上面的场景中,EC2 在 public 子网中,因此理想情况下它不需要 NAT。
这是我要使用 NAT 的方法-
1. 将 EC2 置于私有子实体中。并有一个路由 table,所有传出流量都到 nat-gateway。
2. public 子网中的 Nat-gateway 会将您的流量转发到 IGW。
看来您误解了 NAT 的用途。
其目的是为私有子网中的实例提供出站 Internet 访问,而不允许任何入站连接 - 即路由 table 没有条目的子网:
0.0.0.0/0 igw-4d4b212a
如果您想限制从您的 EC2 实例访问特定 IP 地址,请将您的 NAT 放在 public 子网中,创建一个私有子网,然后将您的实例放在私有子网中。然后将两条路由添加到与私有子网关联的路由table:
45.63.64.111/32 nat-00bb49204627de7e6
144.202.71.30/32 nat-00bb49204627de7e6
如果您只想将对 EC2 实例的访问限制为几个 IP 地址,则只能为这些地址创建路由:
45.63.64.111/32 igw-4d4b212a
144.202.71.30/32 igw-4d4b212a
请注意,使用最后一个选项,如果您在安全组中打开了规则,则可以从 Internet 访问您的实例。
我们的目标是让我们的 Elastic Beanstalk 设置通过 NAT 网关路由流量,因为我们需要连接到需要 IP 白名单的 API 的某些流量。我没有修改当前设置,而是创建了一个 separate/isolated VPC & EC2 实例来熟悉和测试设置。但是我还没有按照预期进行设置。
设置如下
- VPC (vpc-77049811),CIDR 为 10.0.0.0/16
- 分配给提到的 VPC 的互联网网关 (igw-4d4b212a)
- CIDR 为 10.0.1.0/24 的子网 (subnet-096d8a53)
- 附加到提到的子网并分配弹性 IP 的 NAT 网关 (nat-00bb49204627de7e6)
- 路由 table 附加到提到的 VPC 并关联到提到的子网
- 1x EC2 实例分配给 VPC 及其自己的弹性 IP 并已禁用Source/Destination检查
路由Table设置
10.0.0.0/16 local
0.0.0.0/0 igw-4d4b212a
通过上述设置,我可以登录服务器并发出 curl 请求以获取服务器 public IP 地址(curl icanhazip.com ).一旦我向 url 的路由 table 添加规则以通过 NAT 网关路由 url,我就无法 ping 或请求 curl 请求,因为它会超时。
添加到路由 table 的规则不起作用
45.63.64.111/32 nat-00bb49204627de7e6
144.202.71.30/32 nat-00bb49204627de7e6
不确定我是否忽略了这里的某些内容,或者我是否误解了 NAT 网关的概念和用例?
这是 public IP 45.63.64.111。您需要 IGW 才能到达此流量。
- 您可以通过直接将流量重定向到 IGW 来实现 或者
- 您可以通过定向到 NAT 然后进一步将该流量定向到 IGW 来做到这一点
缺少指向 IGW 的部分。
Nat 网关用于私有子网中的 EC2(没有附加 IGW)。在上面的场景中,EC2 在 public 子网中,因此理想情况下它不需要 NAT。
这是我要使用 NAT 的方法- 1. 将 EC2 置于私有子实体中。并有一个路由 table,所有传出流量都到 nat-gateway。 2. public 子网中的 Nat-gateway 会将您的流量转发到 IGW。
看来您误解了 NAT 的用途。
其目的是为私有子网中的实例提供出站 Internet 访问,而不允许任何入站连接 - 即路由 table 没有条目的子网:
0.0.0.0/0 igw-4d4b212a
如果您想限制从您的 EC2 实例访问特定 IP 地址,请将您的 NAT 放在 public 子网中,创建一个私有子网,然后将您的实例放在私有子网中。然后将两条路由添加到与私有子网关联的路由table:
45.63.64.111/32 nat-00bb49204627de7e6
144.202.71.30/32 nat-00bb49204627de7e6
如果您只想将对 EC2 实例的访问限制为几个 IP 地址,则只能为这些地址创建路由:
45.63.64.111/32 igw-4d4b212a
144.202.71.30/32 igw-4d4b212a
请注意,使用最后一个选项,如果您在安全组中打开了规则,则可以从 Internet 访问您的实例。