无法使AWS NAT网关适用于具有IP白名单的API

时间:2018-04-13 14:50:28

标签: amazon-web-services elastic-beanstalk amazon-vpc

我们的目标是让我们的Elastic Beanstalk设置通过NAT网关路由流量,因为我们需要连接到需要IP白名单的API的某些流量。我没有修改当前的设置,而是创建了一个单独/隔离的VPC& EC2实例熟悉并测试设置。但是我还没有让设置按预期工作。

以下是设置

  • VPC(vpc-77049811),CIDR为10.0.0.0/16
  • 分配给上述VPC的Internet网关(igw-4d4b212a)
  • 子网(子网-096d8a53),CIDR为10.0.1.0/24
  • NAT网关(nat-00bb49204627de7e6)附加到提到的子网并分配了弹性IP
  • 附加到提到的VPC的路由表并与提到的子网相关联
  • 分配给VPC的1x EC2实例及其自身的弹性IP和禁用的源/目的地检查

路线表设置

10.0.0.0/16     local
0.0.0.0/0       igw-4d4b212a

通过上述设置,我可以登录服务器并发出curl请求以获取服务器的公共IP地址(curl icanhazip.com)。一旦我将路由表中的规则添加到网址已解析的IP以通过NAT网关路由,我就无法ping或请求curl请求,因为它会超时。

添加到路由表中的规则不起作用

45.63.64.111/32     nat-00bb49204627de7e6
144.202.71.30/32    nat-00bb49204627de7e6

不确定我是否忽略了某些内容,或者我误解了NAT网关的概念和用例?

2 个答案:

答案 0 :(得分:1)

这是公共IP 45.63.64.111。您需要IGW才能达到此流量。

  1. 您可以直接将流量重定向到IGW OR
  2. 您可以通过指向NAT然后进一步将流量指向IGW
  3. 来实现

    缺少指导IGW部分。

    Nat网关用于私有子网中的EC2(没有连接IGW)。在上面的场景中,EC2在公共子网中,因此理想情况下它不需要NAT。

    以下是我要做的使用NAT-  1.将EC2置于私人区域。并有一个路由表,其中所有传出流量到nat-gateway。  2.公共子网中的Nat-gateway会将您的流量转发给IGW。

答案 1 :(得分:1)

好像你误解了NAT的目的。

其目的是为私有子网中的实例提供出站Internet访问,而不允许任何入站连接 - 即路由表没有条目的子网:

0.0.0.0/0       igw-4d4b212a

如果要限制从EC2实例到特定IP地址的访问,请将NAT放在公有子网中,创建私有子网,并将实例放在私有子网中。然后将两条路由添加到与私有子网关联的路由表中:

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访问您的实例。