Konfigurieren Sie das Proxyprotokoll für Ihren Classic Load Balancer - Elastic Load Balancing

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie das Proxyprotokoll für Ihren Classic Load Balancer

Proxy-Protokoll ist ein Internetprotokoll, das verwendet wird, um Verbindungsinformationen von der Quelle, die die Verbindung anfragt, zum Ziel, für das die Verbindung angefragt wurde, überträgt. Elastic Load Balancing verwendet die Proxy-Protokoll-Version 1 in einem visuell lesbaren Header-Format.

Wenn Sie Transmission Control Protocol (TCP) für Frontend- und Backend-Verbindungen verwenden, überträgt Ihr Classic Load Balancer standardmäßig Anforderungen an die Instances, ohne die Anforderungs-Header zu ändern. Wenn Sie Proxy-Protokoll aktivieren, wird ein visuell lesbarer Header mit Verbindungsinformationen, wie z. B. Quell-IP-Adresse, Ziel-IP-Adresse und Portnummern, zum Anforderungs-Header hinzugefügt. Der Header wird dann als Teil der Anforderung zu der Instance gesandt.

Anmerkung

Das AWS-Managementkonsole unterstützt die Aktivierung des Proxyprotokolls nicht.

Proxy-Protokoll-Header

Anhand des Proxy-Protokoll-Headers können Sie die IP-Adresse eines Clients identifizieren, wenn Sie über einen Load Balancer verfügen, der für Backend-Verbindungen TCP verwendet. Da Load Balancers Datenverkehr zwischen Clients und Ihren Backend-Instances abfangen, enthalten die Zugriffsprotokolle von Ihrer Backend-Instance die IP-Adresse des Load Balancer statt des ursprünglichen Clients. Sie können die erste Zeile der Anforderung parsen, um die IP-Adresse Ihres Clients und die Portnummer abzurufen.

Die Adresse des Proxys im Header für IPv6 ist die öffentliche IPv6 Adresse Ihres Load Balancers. Diese IPv6 Adresse entspricht der IP-Adresse, die aus dem DNS-Namen Ihres Load Balancers aufgelöst wird, der entweder mit oder ipv6 beginnt. dualstack Wenn der Client eine Verbindung herstellt IPv4, ist die Adresse des Proxys im Header die private IPv4 Adresse des Load Balancers, die nicht durch eine DNS-Suche aufgelöst werden kann.

Die Proxy-Protokoll-Zeile ist eine einzelne Zeile, die mit einem Wagenrücklauf und Zeilenvorschub endet ("\r\n") und in der folgenden Form vorliegt:

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

Im Folgenden finden Sie ein Beispiel für die Proxy-Protokollzeile für. IPv4

PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\n

Voraussetzungen für die Aktivierung des Proxy-Protokolls

Bevor Sie beginnen, führen Sie die folgenden Schritte aus:

  • Vergewissern Sie sich, dass Ihr Load Balancer sich nicht hinter einem Proxy-Server mit aktiviertem Proxy-Protokoll befindet. Wenn Proxy-Protokoll sowohl für den Proxy-Server als auch den Load Balancer aktiviert ist, fügt der Load Balancer einen weiteren Header zu der Anforderung hinzu, die bereits über einen Header vom Proxy-Server verfügt. Abhängig von der Konfiguration Ihrer Instance kann diese Duplikation zu Fehlern führen.

  • Vergewissern Sie sich, dass Ihre Instances die Proxy-Protokoll-Informationen verarbeiten können.

  • Vergewissern Sie sich, dass Ihre Listener-Einstellungen Proxy-Protokoll unterstützen. Weitere Informationen finden Sie unter Listener-Konfigurationen für Classic Load Balancer.

Aktivieren von Proxy-Protokoll mit der AWS CLI

Sie müssen eine Richtlinie des Typs ProxyProtocolPolicyType erstellen und diese Richtlinie dann auf dem Instance-Port aktivieren, um Proxy-Protokoll zu aktivieren.

Nutzen Sie die folgende Vorgehensweise, um eine neue Richtlinie für Ihren Load Balancer des Typs ProxyProtocolPolicyType zu erstellen. Legen Sie die neu erstellte Richtlinie für die Instance von Port 80 fest und stellen Sie sicher, dass die Richtlinie aktiviert ist.

Aktivieren von Proxy-Protokoll für Ihren Load Balancer
  1. (Optional) Verwenden Sie den folgenden Befehl describe-load-balancer-policy-types, um die von Elastic Load Balancing unterstützten Richtlinien aufzulisten:

    aws elb describe-load-balancer-policy-types

    Die Antwort enthält die Namen und Beschreibungen der unterstützten Richtlinientypen. Das folgende Beispiel zeigt die Ausgabe für den ProxyProtocolPolicyType-Typ:

    { "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. Verwenden Sie den folgenden create-load-balancer-policyBefehl, um eine Richtlinie zu erstellen, die das Proxy-Protokoll aktiviert:

    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. Verwenden Sie den folgenden for-backend-server Befehl set-load-balancer-policies-, um die neu erstellte Richtlinie für den angegebenen Port zu aktivieren. Beachten Sie, dass dieser Befehl die aktuell aktivierten Richtlinien ersetzt. Daher müssen in der Option --policy-names sowohl die Richtlinie, die Sie zur Liste hinzufügen (zum Beispiel my-ProxyProtocol-policy) als auch alle Richtlinien, die aktuell aktiviert sind (zum Beispiel my-existing-policy) angegeben werden.

    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. (Optional) Verwenden Sie den folgenden describe-load-balancersBefehl, um zu überprüfen, ob das Proxyprotokoll aktiviert ist:

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

    Die Antwort enthält die folgenden Informationen, was bedeutet, dass die Richtlinie my-ProxyProtocol-policy Port 80 zugeordnet ist.

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

Deaktivieren von Proxy-Protokoll mit der AWS CLI

Sie können die mit Ihrer Instance verknüpften Richtlinien deaktivieren und zu einem späteren Zeitpunkt wieder aktivieren.

Deaktivieren der Proxy-Protokoll-Richtlinie
  1. Verwenden Sie den folgenden for-backend-server Befehl set-load-balancer-policies-, um die Proxyprotokollrichtlinie zu deaktivieren, indem Sie sie aus der --policy-names Option weglassen, aber die anderen Richtlinien einbeziehen, die aktiviert bleiben sollen (z. B.). 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

    Wenn keine anderen Richtlinien zum Aktivieren vorhanden sind, geben Sie mit der Option --policy-names eine leere Zeichenfolge an:

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names "[]"
  2. (Optional) Verwenden Sie den folgenden describe-load-balancersBefehl, um zu überprüfen, ob die Richtlinie deaktiviert ist:

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

    Die Antwort enthält die folgenden Informationen, was bedeutet, dass keine Ports mit der Richtlinie verknüpft sind.

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