Amazon web services 动态端口和AWS Applocation负载平衡器和ECS

Amazon 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后面的Docker容器获得动态端口,这些端口自动注册到ELB,以便将流量重定向到它们

为了使ELB能够访问您的web服务器,您必须打开来自安全组的所有端口1024-65535


是否有一种方法不必向一系列端口开放安全组,而只向ELB正在使用的POT开放安全组?

AWS从不修改安全组,因为这可能会导致冲突和安全问题。唯一的例外是弹性Beanstalk等服务。你很可能必须按照论坛上说的去做,并允许端口范围


默认临时端口范围为49153到65535,此范围用于1.6.0之前的Docker版本。对于Docker版本1.6.0及更高版本,Docker守护进程尝试从/proc/sys/net/ipv4/ip_local_port_range读取临时端口范围;如果此内核参数不可用,则使用默认的临时端口范围。您不应尝试在临时端口范围内指定主机端口,因为这些端口是为自动分配而保留的。通常,32768以下的端口不在临时端口范围内。

如果您真的关心哪些端口,就我所知,您有几个选项:

  • 不要专门使用ALB和转发端口,以便您可以在ELB安全组中指定它们
  • 将ALB与应用程序放在同一个安全组中,并对
    sg foo
    使用内部安全组规则,如
    TCP 0-65535
    ,其中
    sg foo
    是ALB和应用程序都所在的安全组
  • 将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

    例如,您可以看到端口32776是为ECS任务容器动态分配的

    $ 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范围之外,似乎无法限制来源