Amazon web services 动态端口和AWS Applocation负载平衡器和ECS
ELB后面的Docker容器获得动态端口,这些端口自动注册到ELB,以便将流量重定向到它们 为了使ELB能够访问您的web服务器,您必须打开来自安全组的所有端口1024-65535Amazon web services 动态端口和AWS Applocation负载平衡器和ECS,amazon-web-services,amazon-elb,amazon-ecs,aws-security-group,Amazon Web Services,Amazon Elb,Amazon Ecs,Aws Security Group,ELB后面的Docker容器获得动态端口,这些端口自动注册到ELB,以便将流量重定向到它们 为了使ELB能够访问您的web服务器,您必须打开来自安全组的所有端口1024-65535 是否有一种方法不必向一系列端口开放安全组,而只向ELB正在使用的POT开放安全组?AWS从不修改安全组,因为这可能会导致冲突和安全问题。唯一的例外是弹性Beanstalk等服务。你很可能必须按照论坛上说的去做,并允许端口范围 默认临时端口范围为49153到65535,此范围用于1.6.0之前的Docker版本。对
是否有一种方法不必向一系列端口开放安全组,而只向ELB正在使用的POT开放安全组?AWS从不修改安全组,因为这可能会导致冲突和安全问题。唯一的例外是弹性Beanstalk等服务。你很可能必须按照论坛上说的去做,并允许端口范围
默认临时端口范围为49153到65535,此范围用于1.6.0之前的Docker版本。对于Docker版本1.6.0及更高版本,Docker守护进程尝试从/proc/sys/net/ipv4/ip_local_port_range读取临时端口范围;如果此内核参数不可用,则使用默认的临时端口范围。您不应尝试在临时端口范围内指定主机端口,因为这些端口是为自动分配而保留的。通常,32768以下的端口不在临时端口范围内。
如果您真的关心哪些端口,就我所知,您有几个选项:
sg foo
使用内部安全组规则,如TCP 0-65535
,其中sg foo
是ALB和应用程序都所在的安全组sg foo
,并在sg app
(其中sg app
是您的应用程序所在的安全组)上设置一条规则,并允许sg foo
中的TCP 0-65535
流量进入sg app
在容器实例安全组中,将传入流量限制为32768-65535的端口范围以及VPC和负载平衡器的相关子网CIDR(例如10.0.0.0/16)。可以分配为docker发布端口的EC2主机端口(动态端口)是临时港口范围:根据文件,49153–65535和32768–61000 在我看来,他们是包装过度(49153-61000?),但这是文件所说的。应该是32768-65535?请有人解释一下原因
- 如果动态端口映射设置正确,那么您将看到目标组中已注册的目标以及为任务分配的端口。您还将在以下临时端口范围的注册目标中看到该任务:49153–65535和32768–61000
$ sudo status ecs
ecs start/running, process 3176
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b95c013c6ba *****.dkr.ecr.us-east-2.amazonaws.com/\ecs_monolith_myecs/xyz "node server.js" 3 minutes ago Up 3 minutes 0.0.0.0:32776->3000/tcp ecs_monolith_ABC-1-XYZ-feb4d68dd3d2bfad7500
dbe356e8de8c amazon/amazon-ecs-agent:latest "/agent" 45 minutes ago Up 45 minutes (healthy) ecs-agent
因此,我们可以开放49153–65535和32768–61000(或32768-65535),用于ECS服务正在为动态端口映射更新的ELB targat组的传入流量
使用ALB的安全组(SG)
对于ALB,我们可以限制连接到ALB的SG的流量。但是NLB没有SG,原因似乎是NLB没有在EC2上运行,因此没有SG,而ALB在EC2上运行,因此使用SG
NLB在您的VPC中显示为ENI,但实际上不是。这是一个我们称之为超平面的组件的扩展。而ALB和CLB是在AWS管理的EC2实例上运行的,因此它们有“真正的”ENIs连接到它们,因此能够使用安全组
使用ELB IP CIDR块
NLB有一个静态IP。但是,如果ELB的目标组的目标类型为实例,则源IP将保留为中所示
如果使用实例ID指定目标,则客户端的源IP地址将保留并提供给应用程序。如果按IP地址指定目标,则源IP地址是负载平衡器节点的专用IP地址。如果需要客户端的IP地址,请启用代理协议并从代理协议头获取客户端IP地址 如果ECS的网络模式是awsvpc,那么我们可以使用IP来确保流量仅来自NLB,否则,除了使用外部客户端IP范围之外,似乎无法限制来源