Privater Prefetch-Proxy in Chrome für Netzwerkadministratoren

Um die Seitenladezeit für Nutzer zu verbessern, ruft Chrome in manchen Fällen Links auf der Google-Suchergebnisseite und auf anderen teilnehmenden Websites vorab ab, bevor der Nutzer darauf klickt. Diese Funktion wird aus technischer Sicht in diesem Artikel ausführlich beschrieben.

Für diese Funktion wird ein CONNECT-Proxy verwendet, der die IP-Adresse des Nutzers vor der Website verbirgt, die vorab abgerufen werden muss. Dadurch wird der Verbindungsaufbau wiederum aus der Sicht des Netzwerkadministrators verschoben.

Wir sind uns auch bewusst, dass Netzwerkadministratoren Inhalte möglicherweise filtern müssen. Daher haben wir einen Mechanismus entwickelt, mit dem Netzwerkadministratoren dies weiterhin tun können, wenn der Nutzer auf einen vorabgerufenen Link klickt.

Filter für Inhalte

Aus Datenschutzgründen führt Chrome beim Vorabruf von Links keine beobachtbaren DNS-Lookups aus. Wenn der Nutzer einen vorabgerufenen Link aufruft, werden die Seitenressourcen aus dem lokalen Cache abgerufen, ohne dass ein beobachtbarer DNS-Lookup durchgeführt wird. Ein Nebeneffekt ist, dass das Filtern von Inhalten möglicherweise nicht wie beabsichtigt funktioniert, wenn der Nutzer zu einem vorabgerufenen Link navigiert.

Damit Netzwerkadministratoren Inhalte aus diesen vorabgerufenen Navigationen filtern können, haben wir einen Signalmechanismus entwickelt, der Chrome anweist, einen DNS-Lookup auszuführen, wenn der Nutzer auf einen vorabgerufenen Link klickt. Dieser DNS-Lookup wird zur gleichen Zeit und auf dieselbe Weise durchgeführt, als wäre der Prefetch nicht gewesen, sodass die Administratoren die Möglichkeit haben, Inhalte zu filtern. Chrome pausiert das Laden der vorab abgerufenen Ressourcen aus dem Cache, bis dieser zweite DNS-Lookup erfolgreich ist. Wenn ein Fehler auftritt, verwendet Chrome die vorabgerufenen Ressourcen nicht, sondern lädt die Seite wie gewohnt. Dies hat jedoch Leistungseinbußen für den Nutzer zur Folge, da Chrome warten muss, bis der DNS-Lookup abgeschlossen ist.

Details des Signalmechanismus

Für Nutzer, die das Vorabladen von Seiten nicht deaktiviert haben, führt Chrome beim Start von Chrome oder bei einer Änderung der Netzwerkschnittstelle asynchron einen DNS-Lookup nach dns-tunnel-check.googlezip.net aus.

Dies sind die möglichen Ergebnisse der dns-tunnel-check.googlezip.net-Prüfung:

  • Wenn die Antwort NXDOMAIN oder SERVFAIL lautet oder ein NOERROR-Antwortcode zurückgegeben wird, der aber weder A- noch AAAA-Einträge enthält, weiß Chrome, dass Netzwerkadministratoren Einblick in die Navigation zu vorabgerufenen Seiten benötigen (siehe Preflight-Modus).
  • Wenn die Antwort ein anderer Wert ist, verwendet Chrome die vorabgerufenen Ressourcen direkt und führt keine zusätzlichen DNS-Lookups aus, wenn der Nutzer zur vorabgerufenen Seite navigiert.

Das Ergebnis dieser Prüfung bleibt bestehen, bis Chrome neu gestartet wird oder bis sich die Netzwerkschnittstelle ändert. Dadurch wird ein neuer DNS-Lookup für dns-tunnel-check.googlezip.net ausgelöst, mit potenziell abweichendem Ergebnis.

Preflight-Modus

In diesem Modus führt Chrome einen DNS-Lookup nach der entsprechenden Domain aus und wartet, bis die Antwort zurückgegeben wird:

  • Wenn die Antwort aus einem nicht leeren Satz von IP-Adressen besteht, fährt Chrome mit der Navigation fort und verwendet die vorab abgerufenen Ressourcen.
  • Wenn die Antwort REFUSED (bevorzugt) oder NXDOMAIN lautet, fährt Chrome nicht mit der Navigation fort, sondern zeigt stattdessen die entsprechende DNS-Fehlerseite an.