it-swarm.com.de

Funktionsweise von DNS-Lookups bei Verwendung eines HTTP-Proxys (oder nicht) in IE

Ich habe kürzlich an einer Diskussion darüber teilgenommen, was passiert, wenn ein Client eine Seite von einem Proxyserver anfordert. Ich wollte nur sicherstellen, dass mein Verständnis dieser Abfolge von Ereignissen im allgemeinen Fall korrekt war:

  1. Benutzer fordert Website an
  2. Eine DNS-Anforderung wird vom Client an seinen konfigurierten DNS-Server gesendet, um die Ziel-IP-Adresse aufzulösen (dies erfolgt zuerst, um HTTP-Anforderungen zu berücksichtigen, die so konfiguriert sind, dass sie den Proxy umgehen).
  3. Sobald die Ziel-IP vom DNS empfangen wurde und kurz bevor die HTTP-Anforderung gesendet wird, wird die Anforderung mit der Ausnahmeliste verglichen
  4. Befindet sich der Zielserver nicht in der Ausnahmeliste, wird die Anforderung an den Proxyserver weitergeleitet.
  5. Befindet sich der Zielserver in der Ausnahmeliste, wird die Anforderung gemäß der Routing-Tabelle des Client-Computers weitergeleitet.

Jedes Feedback wäre sehr dankbar.

20
orange_aurelius

Nicht genau: Es hängt davon ab, wie der Client konfiguriert ist. Verwenden wir als grundlegendes Beispiel IE).

Wenn Sie IE mit einem expliziten Proxy :) konfigurieren : zB keine anderen Optionen angekreuzt, Proxy auf etwas eingestellt: 8080.

  1. Der Benutzer gibt eine Adresse ein

  2. IE überprüft die Adresse auf ein Zeichenfolgenübereinstimmung mit der IE Proxy-Ausnahmeliste (d. H. "Proxy für diese Adressen umgehen:")

    ein. Wenn es mit einem Eintrag in der Liste Bypass übereinstimmt, verwendet der clientits eigenes DNS um den Namen aufzulösen, und dann sendet der Client stellt eine direkte Verbindung zur Ziel-IP-Adresse her an Port 80 (angenommen) eine Anfrage wie:

    GET /something.htm HTTP/1.1
    Host: fulldomainame.example.com

    b. Wenn keine Bypass-Listeneinträge übereinstimmen, fahren Sie fort:

  3. IE stellt eine Verbindung zu seinem konfigurierten Proxy her und sendet eine Anfrage des Formulars:

    GET http://fulldomainname.example.com/something.htm HTTP/1.1

    Bonus-Factoid: Diese Verwendung des FQDN in der URL ist eine Möglichkeit, mit der Sie feststellen können, dass ein Client denkt Es wird mit einem Proxy anstelle eines echten Webservers gesprochen

  4. Der Proxy löst diesen Hostnamen auf verwendet sein eigenes DNS und stellt dann eine Verbindung zum Zielstandort her (verhält sich wie der Client in Schritt 2 oben) usw. usw.

Bei Verwendung von WPAD/PAC :

Bei Verwendung eines Web Proxy Auto Discovery (WPAD) - oder Proxy Auto Configuration (PAC oder Autoconfig) -Skripts, wie es beispielsweise von ISA/TMG bereitgestellt wird, wenn die automatische Konfiguration aktiviert ist, ist dies anders:

  1. Der Benutzer gibt eine Adresse ein

  2. Client Downloads die aktuelle wpad.dat/autoproxy.js/.pac Datei von ihrem konfigurierten Speicherort

  3. Der Client sucht in der js-Datei nach der Funktion "FindProxyForUrl" und führt sie aus

  4. Das Autoproxy-Skript verarbeitet die URL Hostname und URL . Dies ist eine Javascript-Datei mit eingeschränkten Funktionen, aber viele Dinge sind noch möglich:

    ein. Dies kann Namensauflösung (IsInNet, DnsResolve) umfassen.

    b. Dies kann String Matching (ShExpMatch) beinhalten.

    c. Dies kann bis zu einer Million (i ++) umfassen.

    d. Dies kann narky Alarm Popup-Nachrichten enthalten, wenn der Administrator ein Idiot ist

    • (oder einfach nur lustig)
    • ((oder Debuggen))
  5. Die Funktion FindProxyForUrl gibt mindestens eine Zeichenfolge zurück: Eine geordnete Liste der besten zu verwendenden Proxys (durch Semikolon getrennt)

    ein. entweder "DIRECT", in diesem Fall muss der Client den Namen selbst auflösen und eine direkte Verbindung herstellen, wie im obigen Bypass-Fall beschrieben

    b. oder "PROXY-Proxyname: 8080" oder ähnlich. In diesem Fall stellt der Client eine Verbindung zu diesem Port auf diesem Proxy her und weist ihn an, GET the full URL und Proxy führt Namensauflösung durch.

    • Als Beispiel: Wenn die Skriptfunktion "PROXY yourProxy: 8080; DIRECT" zurückgibt, wird der Client angewiesen, eine Verbindung zu yourproxy herzustellen on TCP port 8080 , um diese URL anzufordern, und if dass Verbindung nicht hergestellt werden kann, versuchen Sie es direkt. Hinweis dass TCP Sitzungs-Setup-Fehler nicht genau schnell, so dass dies für einen Benutzer wahrscheinlich keine angenehme Failover-Erfahrung ist, aber nichts übertrifft. Vielleicht.

Es gibt gelegentlich Störungen, Feinheiten und ungeklärte Verhaltensweisen, aber zum größten Teil, wenn die Dinge nicht auf seltsame und interessante Weise kaputt gehen, habe ich oben gesehen, wie es über viele Jahre funktioniert. Neuere Browser optimieren das Verhalten, parallelisieren Inhalte und probieren ständig interessante Dinge aus. Lesen Sie daher die neuesten Dokumente für Ihren Browser, um die Details zu verstehen.

WinSock Proxy/ISA Firewall Client/TMG Client:

Wenn Sie sich für den Winsock Proxy Client (von TMG/ISA Server) interessieren, ist das eine andere Geschichte, mit mehr Flexibilität und beweglichen Teilen. Zu viel, um hier darauf einzugehen, aber es gibt Dokumente, die beschreiben, wie es funktioniert. Kurz gesagt: Es wird an Windows Sockets angeschlossen und kann sowohl TCP/UDP-basierten Datenverkehr als auch Namensauflösungsanforderungen pro App und pro Benutzer abfangen. Sehr mächtig, aber jetzt auch veraltet und seit einigen Jahren nicht mehr aktualisiert.

Kunden können wirklich anhänglich sein :

Eins letzte Anmerkung: Sobald ein HTTP-Client entschieden hat, mit einem Proxy für eine bestimmte Site/URL zu sprechen, es gibt keine Möglichkeit für den Proxy, dies nicht zu sagen.

Es gibt keinen HTTP-Statuscode oder Header für "Ich bediene das nicht, Sie sollten stattdessen direkt darauf zugreifen" ...

Sobald der Client entscheidet, dass eine bestimmte URL als Proxy bereitgestellt wird, erfolgt Proxy-Death-Grip .

Die einzige Möglichkeit, dies zu vermeiden, besteht darin, die Auswahllogik direkt vor dem Herstellen der Verbindung durch den Client in der PAC- oder Bypass-Liste abzurufen.

Ein letzter Hinweis zu Zonen und PAC-Dateien

IE behandelt Websites, die [~ # ~] direkt [~ # ~] verbunden sind - auch wenn sie Punkte in der URL haben - als Teil der Lokale Intranetzone (standardmäßig in den Zoneneigenschaften einstellbar) und ermöglicht beispielsweise die integrierte integrierte Windows-Authentifizierung für diese Sites (dh transparente Kerberos- und/oder NTLM-Authentifizierung). Wenn Sie also steuern, ob sich etwas in der lokalen Intranetzone befindet, wird festgelegt, wie vertrauenswürdig es in Bezug auf die automatische Authentifizierung ist. Zumindest standardmäßig wieder.

22
TristanK

Ich glaube nicht - wenn Sie die IP und die Domain in die Ausnahmeliste oder die Domain eingeben und die IP in der Ausnahmeliste ist, wird es wahrscheinlich immer noch über den Proxy gehen.

Es ist möglich, dass Sie mit proxy.pac/wpad.dat den Weg aus diesem Verhalten erzwingen können.

0
Tom Newton

Ich bin nicht sicher, ob Ihr DNS-Teil richtig ist. Ich habe gesehen, dass ein Computer ohne gültige DNS-Server Seiten in IE in Ordnung mit einem Proxy) abgerufen hat.

0
JamesRyan

Ich versuche in Ubuntu 10.04, Wein, IE 6.0 und Tintenfisch 2.7 (System haben eine DNS und Tintenfisch haben andere DNS-Server)

  1. Benutzer sendet Anforderungen an den Proxy
  2. Squid sendet DNS-Anfrage an DNS-Server
  3. Tintenfisch erhalten DNS-Antwort. Wenn nxdomain oder ein anderer Fehler vorliegt, senden Sie die Fehlerseite an den IE. Wenn sich der Name auflöst, rufen Sie die Seite ab und geben Sie sie an den Internet Explorer weiter.

IE 6.0 löst den DNS-Namen nicht auf.

0
bindbn