Configure o protocolo proxy para seu Classic Load Balancer - Elastic Load Balancing

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configure o protocolo proxy para seu Classic Load Balancer

O protocolo de proxy é um protocolo de Internet usado para transportar informações de conexão da origem que solicita a conexão ao destino ao qual a conexão foi solicitada. O Elastic Load Balancing usa o protocolo de proxy versão 1, que usa um formato de cabeçalho legível por humanos.

Por padrão, quando você usa o Transmission Control Protocol (TCP) para conexões front-end e back-end, seu Classic Load Balancer encaminha solicitações para as instâncias sem modificar os cabeçalhos da solicitação. Se você habilitar o protocolo de proxy, um cabeçalho legível por humanos será adicionado ao cabeçalho de solicitação com informações de conexão, como o endereço IP de origem, endereço IP de destino e números de portas. O cabeçalho, então, será enviado à instância como parte da solicitação.

nota

O AWS Management Console não suporta a ativação do protocolo proxy.

Cabeçalho do protocolo de proxy

O cabeçalho do protocolo proxy ajuda a identificar o endereço IP de um cliente quando você tem um balanceador de carga usado TCP para conexões de back-end. Como os load balancers interceptam tráfego entre clientes e suas instâncias, os logs de acesso da sua instância contêm o endereço IP do load balancer em vez do cliente de origem. Você pode analisar a primeira linha da solicitação para recuperar o endereço IP do cliente e o número da porta.

O endereço do proxy no cabeçalho de IPv6 é o IPv6 endereço público do seu balanceador de carga. Esse IPv6 endereço corresponde ao endereço IP que é resolvido a partir do DNS nome do seu balanceador de carga, que começa com ipv6 oudualstack. Se o cliente se conectar comIPv4, o endereço do proxy no cabeçalho será o IPv4 endereço privado do balanceador de carga, que não pode ser resolvido por meio de uma pesquisa. DNS

A linha do protocolo de proxy é uma única linha que termina com um retorno de carro e feed de linha ("\r\n") e tem o seguinte formato:

PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"
Exemplo: IPv4

Veja a seguir um exemplo da linha de protocolo proxy paraIPv4.

PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\n

Pré-requisitos para habilitar o protocolo de proxy

Antes de começar, faça o seguinte:

  • Confirme se o balanceador de carga não está por trás de um servidor de proxy com o protocolo de proxy habilitado. Se o protocolo de proxy estiver habilitado tanto no servidor de proxy quanto no balanceador de carga, este adicionará outro cabeçalho à solicitação, que já tem um cabeçalho do servidor de proxy. Dependendo de como sua instância estiver configurada, essa duplicação poderá resultar em erros.

  • Confirme se suas instâncias podem processar as informações do protocolo de proxy.

  • Confirme se as configurações do seu listener são compatíveis com o protocolo de proxy. Para obter mais informações, consulte Configurações do listener para balanceadores de carga clássicos.

Habilitar o protocolo de proxy usando a AWS CLI

Para habilitar o protocolo de proxy, você precisa criar uma política do tipo ProxyProtocolPolicyType e, em seguida, habilitar a política na porta da instância.

Use o procedimento a seguir para criar uma nova política para o load balancer do tipo ProxyProtocolPolicyType, definir a política recém-criada para a instância na porta 80 e verificar se a política está ativada.

Para habilitar o Proxy Protocol para o load balancer
  1. (Opcional) Use o seguinte comando describe-load-balancer-policy-types para listar as políticas suportadas pelo Elastic Load Balancing:

    aws elb describe-load-balancer-policy-types

    A resposta inclui os nomes e as descrições dos tipos de política suportados. A tabela a seguir mostra a saída para o tipo ProxyProtocolPolicyType:

    { "PolicyTypeDescriptions": [ ... { "PolicyAttributeTypeDescriptions": [ { "Cardinality": "ONE", "AttributeName": "ProxyProtocol", "AttributeType": "Boolean" } ], "PolicyTypeName": "ProxyProtocolPolicyType", "Description": "Policy that controls whether to include the IP address and port of the originating request for TCP messages. This policy operates on TCP/SSL listeners only" }, ... ] }
  2. Use o create-load-balancer-policycomando a seguir para criar uma política que habilite o protocolo proxy:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-ProxyProtocol-policy --policy-type-name ProxyProtocolPolicyType --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true
  3. Use o seguinte for-backend-server comando set-load-balancer-policies- para habilitar a política recém-criada na porta especificada. Observe que esse comando substitui o conjunto atual de políticas habilitadas. Portanto, a opção --policy-names deve especificar tanto a política que você está adicionando à lista (por exemplo, my-ProxyProtocol-policy) quanto quaisquer políticas que estejam atualmente habilitadas (por exemplo, my-existing-policy).

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-ProxyProtocol-policy my-existing-policy
  4. (Opcional) Use o describe-load-balancerscomando a seguir para verificar se o protocolo proxy está ativado:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    A resposta inclui as informações a seguir, que mostra que a política my-ProxyProtocol-policy está associada com a porta 80.

    { "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [ { "InstancePort": 80, "PolicyNames": [ "my-ProxyProtocol-policy" ] } ], ... } ] }

Desabilitar o protocolo de proxy usando a AWS CLI

Você pode desativar as políticas associadas à sua instância e, em seguida, habilitá-las posteriormente.

Para desabilitar a política do protocolo de proxy
  1. Use o seguinte for-backend-server comando set-load-balancer-policies- para desativar a política do protocolo proxy omitindo-a da --policy-names opção, mas incluindo as outras políticas que devem permanecer habilitadas (por exemplo,my-existing-policy).

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-existing-policy

    Se não houver outras políticas para habilitar, especifique uma string vazia com a opção --policy-names, da seguinte forma:

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names "[]"
  2. (Opcional) Use o describe-load-balancerscomando a seguir para verificar se a política está desativada:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    A resposta inclui as informações a seguir, que mostram que nenhuma porta está associada com uma política.

    { "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [], ... } ] }