Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS NLB在公共子网中,EC2在私有子网中_Amazon Web Services_Amazon Ec2_Amazon Vpc_Vpc - Fatal编程技术网

Amazon web services AWS NLB在公共子网中,EC2在私有子网中

Amazon web services AWS NLB在公共子网中,EC2在私有子网中,amazon-web-services,amazon-ec2,amazon-vpc,vpc,Amazon Web Services,Amazon Ec2,Amazon Vpc,Vpc,是否有人在VPC的公共子网中配置了NLB,以将流量路由到私有子网中的EC2实例 使用ELB时,一个好的解决方案是为ELB创建一个安全组,然后为专用EC2实例创建另一个SecurityGroup,允许来自该ELB安全组的传入流量,如下所述: 您还可以在实例的安全组上添加规则,以允许来自分配给负载平衡器的安全组的通信。例如,如果负载平衡器上的安全组是sg-1234567a,请对与专用实例关联的安全组进行以下更改 既然无法将安全组与NLB关联,那么如何使用相同类型的安全性来实现这一点 谢谢 根据AW

是否有人在VPC的公共子网中配置了NLB,以将流量路由到私有子网中的EC2实例

使用ELB时,一个好的解决方案是为ELB创建一个安全组,然后为专用EC2实例创建另一个SecurityGroup,允许来自该ELB安全组的传入流量,如下所述:

您还可以在实例的安全组上添加规则,以允许来自分配给负载平衡器的安全组的通信。例如,如果负载平衡器上的安全组是sg-1234567a,请对与专用实例关联的安全组进行以下更改

既然无法将安全组与NLB关联,那么如何使用相同类型的安全性来实现这一点


谢谢

根据AWS文件,这确实是正确的:

网络负载平衡器没有关联的安全组。 因此,目标的安全组必须使用IP地址 允许来自负载平衡器的通信

因此,如果您不想授予对整个VPC CIDR的访问权,可以授予对负载平衡器节点使用的专用IP地址的访问权。每个负载平衡器子网有一个IP地址

在的NLB选项卡上,每个负载平衡器有一个网络接口:

在每个网络接口的“详细信息”选项卡上,从复制地址 主专用IPv4 IP

您可以在EC2实例的addit SG中使用这个私有IP地址

请参阅

既然您无法将安全组与NLB关联,那么您如何能够 使用相同类型的安全性来实现这一点

安全方面没有改变

NLB是一个不同的野兽,它不同于经典的负载平衡器。对于经典的负载平衡器,从实例的角度来看,流量似乎确实来自专有网络内部。从外部,流量进入(随机和变异)IP地址列表,由AWS提供给您的DNS记录解析

网络负载平衡器是完全不同的。从实例的角度来看,它们是完全不可见的。如果它是一个外部网络负载均衡器,则流量似乎直接来自internet上的实例(尽管这是一种错觉)。因此,如果您想在internet上与所有人交谈,0.0.0.0/0就是您打开它的对象

事实上,这就是文件所说的:

客户机IP地址就是您的客户机IP地址。如果他们在开放的internet上,则为0.0.0.0/0。正如我在其他响应中看到的那样,添加NLB私有IP地址不会带来任何效果。就实例而言,交通不是从那里来的

从安全角度看,没有任何变化。由于您的实例是在私有子网中,所以流量不能直接流向它们,因为中间存在NAT网关。它只能从它们流到internet(通过NAT网关,然后是internet网关)。即使您指定允许来自任何地方的所有流量,流量仍然不会出现。它将不得不通过另一种方式。在您的情况下,NLB就是这种方式,它有固定数量的侦听端口,并且只向您指定的实例上的目标端口发送流量


如果要从传统负载平衡器移动到NLB,请将安全组规则从负载平衡器移动到实例。或者更好,因为您可以有多个安全组,只需将您当前用于classic LB的SG添加到实例中(并根据需要更新任何ASG)。你的安全姿态将完全相同。另外一个好处是,现在您的应用程序不再需要代理协议之类的东西来确定流量来自何处,负载平衡器也不再对其进行混淆。

谢谢Kush。我试过了,它对NLB健康检查有效。对于来自客户端的HTTP流量,它不起作用。您仍然必须从私有EC2实例的安全组中的任何地方打开HTTP流量。这是否违背了让那些私有EC2实例只接受来自ELB/NLB/ALB的流量的想法?是的,这就是为什么要将NLB的私有IP添加到EC2的sg中,但即使添加NLB的私有IP(用于健康检查),也必须从源0.0.0.0/0(无处不在)打开HTTP流量我认为这里的诀窍是,那些EC2实例应该只有一个私有IP,因此如果NLB不发送流量(从其私有IP),添加源0.0.0/0就没有多大意义,但是源IP显示为公共IP。
Recommended Rules

Inbound Source      Port Range        Comment
Client IP addresses instance listener Allow traffic from clients on the instance listener port

VPC CIDR            health check      Allow traffic from the load balancer on the health check port