Direkt zum Inhalt

Warum wurde der Datenverkehr für meine Webinhalte an den falschen CloudFront-Edge-Standort weitergeleitet?

Lesedauer: 4 Minute
0

Ich habe Amazon CloudFront verwendet, um meine Webinhalte zu verteilen. Der Datenverkehr auf meine Website wird jedoch an den falschen Edge-Standort weitergeleitet.

Kurzbeschreibung

CloudFront leitet Datenverkehr auf der Grundlage der Preisklasse der Distribution, der zugehörigen Geolocation-Datenbanken und der Unterstützung von EDNS0-Client-Subnetzen weiter. Abhängig von einer Kombination dieser Faktoren werden die Besucher der Website möglicherweise an einen unerwarteten Edge-Standort weitergeleitet. Dies kann die Gesamtlatenz beim Abrufen eines Objekts von einem CloudFront-Edge-Standort erhöhen.

Prüfe Folgendes, um Probleme mit dem Datenverkehr zu beheben, der an einen unerwarteten Edge-Standort weitergeleitet wird:

  • Die Preisklasse unterstützt den Edge-Standort, den du erwartest.
  • Der DNS-Resolver unterstützt Anycast-Routing.
  • Der DNS-Resolver unterstützt das EDNS0-Client-Subnetz.

Lösung

Die Preisklasse unterstützt den erwarteten Edge-Standort

Prüfe die Edge-Standorte, die in der Preisklasse deiner CloudFront-Distribution enthalten sind. Um andere Edge-Standorte einzubeziehen, ändere deine Preisklasse.

Der DNS-Resolver unterstützt Anycast-Routing

Wenn der DNS-Resolver Anycast-Routing unterstützt, verwendet der DNS-Resolver mehrere Edge-Standorte. Da der Edge-Standort eines Anforderers auf einer optimalen Latenz basiert, kannst du möglicherweise einen unerwarteten Standort der IP-Adresse des Resolvers wahrnehmen.

Um zu überprüfen, ob der DNS-Resolver Anycast unterstützt, führe einen der folgenden Befehle mehrmals aus.

Andere Betriebssysteme (OSs) als Windows:

dig +nocl TXT o-o.myaddr.l.google.com

Windows:

nslookup -type=txt o-o.myaddr.l.google.com

Wenn die Ausgabe bei jeder Ausführung des Befehls dieselbe IP-Adresse enthält, unterstützt der DNS-Resolver Anycast nicht. Wenn die Ausgabe bei jeder Ausführung des Befehls eine andere IP-Adresse enthält, unterstützt der DNS-Resolver Anycast. 

Der DNS-Resolver unterstützt das EDNS0-Client-Subnetz

Führe einen der folgenden Befehle aus, um zu überprüfen, ob der DNS-Resolver das EDNS0-Client-Subnet unterstützt.

Andere Betriebssysteme als Windows:

dig +nocl TXT o-o.myaddr.l.google.com

Windows:

nslookup -type=txt o-o.myaddr.l.google.com

Hinweis: Überprüfe den TTL-Wert und stelle sicher, dass du den Befehl ausführst, wenn der TTL-Wert abgelaufen ist. Andernfalls erhältst du möglicherweise eine zwischengespeicherte Antwort vom rekursiven Resolver.

Wenn der DNS-Resolver das EDNS0-Client-Subnetz nicht unterstützt, sieht die Ausgabe ähnlich wie folgt aus:

$ dig +nocl TXT o-o.myaddr.l.google.com  +short
"192.0.2.1"

Im vorherigen Beispiel ist 192.0.2.1 die IP-Adresse des nächstgelegenen DNS-Servers, der Anycast verwendet hat. Dieser DNS-Resolver unterstützt das EDNS0-Client-Subnetz nicht.

Führe eine der folgenden Aktionen durch, um sicherzustellen, dass der Datenverkehr der Website an den richtigen Standort weitergeleitet wird:

  • Ändere den DNS-Resolver in einen rekursiven DNS-Resolver, der sich geografisch näher an den Clients der Website befindet.
  • Wechsle zu einem DNS-Resolver, der das EDNS0-Client-Subnetz unterstützt.

Wenn der DNS-Resolver das EDNS0-Client-Subnetz unterstützt, enthält die Ausgabe ein gekürztes Client-Subnetz (/24 oder /32) zum autoritativen CloudFront-Namenserver:

$ dig +nocl TXT o-o.myaddr.l.google.com @8.8.8.8 +short
"192.0.2.1"
"edns0-client-subnet 198.51.100.0/24"

Im vorherigen Beispiel ist 192.0.2.1 die nächstgelegene DNS-Resolver-IP-Adresse. Der Client-Subnetzbereich, der zur Beantwortung der DNS-Abfrage verwendet wird, ist 198.51.100.0/24.

Selbst wenn der DNS-Resolver das EDNS0-Client-Subnetz unterstützt, wird der Website-Datenverkehr möglicherweise immer noch falsch weitergeleitet. Um dieses Problem zu beheben, verknüpfe eine öffentliche Geolocation-Datenbank mit dem Client-Subnetz-Bereich, der die Abfrage an den DNS-Resolver sendet. Wenn der DNS-Resolver die gekürzte Version der Client-IP-Adressen an CloudFront-Namenserver weiterleitet, überprüft CloudFront eine Datenbank, die auf mehreren öffentlichen Geolocation-Datenbanken basiert.

Du musst die IP-Adressen in der Geolocation-Datenbank korrekt zuordnen, damit Anforderungen korrekt weitergeleitet werden.

Wenn der DNS-Resolver das EDNS0-Client-Subnetz unterstützt, führe den folgenden DNS-Suchbefehl aus, um den Edge-Standort zu ermitteln, an den der Datenverkehr weitergeleitet wird:

$ dig dftex7example.cloudfront.net. +short
13.224.77.109
13.224.77.62
13.224.77.65
13.224.77.75

Führe dann eine umgekehrte DNS-Suche für die IP-Adressen durch, die der vorherige Befehl zurückgibt:

$ dig -x 13.224.77.62 +short
server-13-224-77-62.man50.r.cloudfront.net.

Im vorherigen Beispiel wird der Datenverkehr an den Edge-Standort Manchester weitergeleitet.

Tipp: Für einen zusätzlichen Test kannst du einen öffentlichen DNS-Resolver verwenden, der das EDNS0-Client-Subnetz unterstützt, z. B. 8.8.8.8, 8.8.4.4 oder 1.1.1.1. Sende Abfragen mit Edge-Standort-IP-Adressen an den öffentlichen DNS-Resolver. Überprüfe anschließend die Ergebnisse der DNS-Abfragen, um festzustellen, ob CloudFront über die richtigen Informationen zum EDNS0-Client-Subnetz verfügt.

AWS OFFICIALAktualisiert vor einem Jahr