Wie DNS-Lookups funktionieren, wenn ein HTTP-Proxy im IE verwendet wird (oder nicht)


20

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 Site an
  2. Der Client sendet eine DNS-Anfrage an seinen konfigurierten DNS-Server, um die Ziel-IP-Adresse aufzulösen (dies erfolgt zuerst, um HTTP-Anfragen 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 Routingtabelle des Clientcomputers weitergeleitet.

Über Feedback würde ich mich sehr freuen.

Antworten:


21

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

Wenn Sie IE mit einem expliziten Proxy konfigurieren : z. B. keine anderen Optionen angekreuzt, Proxy auf etwas festgelegt: 8080.

  1. Benutzer gibt eine Adresse ein

  2. IE vergleicht die Adresse auf eine Zeichenfolgenübereinstimmung mit der IE-Proxy-Ausnahmeliste (dh "Proxy für diese Adressen umgehen:")

    ein. Wenn es einen Eintrag in der übereinstimmt Bypass Liste der Client verwendet einen eigenen DNS den Namen aufzulösen, und dann wird die Verbindung Client direkt an die Ziel - IP - Adresse auf Port 80 (angenommen), sendet dann eine Anfrage wie:

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

    b. Wenn keine Umgehungslisteneinträ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: Mit dieser Verwendung des FQDN in der URL können Sie feststellen, dass ein Client denkt, dass er mit einem Proxy anstelle eines echten Webservers spricht

  4. Der Proxy löst diesen Hostnamen mithilfe seines eigenen DNS auf 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 Skripts für die automatische Webproxyerkennung (WPAD) oder die automatische Proxykonfiguration (PAC oder Autoconfig), wie sie von ISA / TMG bereitgestellt werden, wenn die automatische Konfiguration aktiviert ist, ist dies anders:

  1. Benutzer gibt eine Adresse ein

  2. Der Client lädt die aktuelle Datei wpad.dat / autoproxy.js / .pac von seinem konfigurierten Speicherort herunter

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

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

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

    b. Dies kann einen String-Abgleich beinhalten (ShExpMatch)

    c. Dies kann das Zählen bis zu einer Million (i ++) beinhalten.

    d. Dies kann narky Alert Popup-Meldungen enthalten, wenn der Administrator ein Idiot ist

    • (oder einfach nur lustig)
    • ((oder Debugging))
  5. Die FindProxyForUrl- Funktion 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, fordert ihn auf, die vollständige URL abzurufen , und der Proxy führt die Namensauflösung durch .

    • Als Beispiel : Wenn die Script - Funktion zurückgegeben „PROXY yourProxy: 8080; DIRECT“ , dass der Kunde sagt zu verbinden yourproxy auf TCP - Port 8080 diese URL zu beantragen, und wenn die Verbindung nicht hergestellt werden kann, versuchen Sie direkt gehen. Beachten Sie, dass der Fehler beim Einrichten der TCP-Sitzung nicht gerade schnell ist. Daher ist dies wahrscheinlich keine angenehme Failover-Erfahrung für einen Benutzer, schlägt aber nichts. Vielleicht.

Es gibt gelegentlich Störungen, Feinheiten und unerklärliche Verhaltensweisen, aber zum größten Teil, wenn die Dinge nicht auf seltsame und interessante Weise zerbrochen sind, habe ich gesehen, wie es über viele Jahre funktioniert. Neuere Browser optimieren das Verhalten und parallelisieren die Inhalte. Sie probieren die ganze Zeit interessante Dinge aus. Sehen Sie sich daher die neuesten Dokumente Ihres Browsers an, 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 in Windows Sockets eingesteckt und kann sowohl TCP / UDP-basierten Datenverkehr als auch Anforderungen zur Namensauflösung pro App und pro Benutzer abfangen. Sehr leistungsfähig, jetzt aber auch veraltet und seit einigen Jahren nicht mehr aktualisiert.

Kunden können wirklich anhänglich sein:

Ein letzter Hinweis : Sobald ein HTTP-Client entschieden hat, mit einem Proxy für eine bestimmte Site / URL zu sprechen, kann der Proxy nicht mehr sagen, dass er dies nicht tun soll .

Es gibt keinen HTTP-Statuscode oder -Header für "Ich versorge das nicht, du solltest stattdessen direkt dorthin gehen" ...

Sobald der Client entscheidet, dass eine bestimmte URL vom Proxy bedient wird, erfolgt der 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 Sites, die DIREKT verbunden sind - auch wenn sie Punkte in der URL enthalten - als Teil der lokalen Intranetzone (standardmäßig in den Zoneneigenschaften einstellbar) und ermöglicht daher die integrierte Windows-Authentifizierung für diese Sites (z. B. Kerberos- und / oder NTLM-Authentifizierung (transparent). Die Kontrolle darüber, ob sich etwas in der lokalen Intranetzone befindet, definiert, wie vertrauenswürdig es in Bezug auf die automatische Authentifizierung ist. Zumindest wieder standardmäßig.


Gibt es einen Standard oder einen Teil eines RFC, der besagt, dass Clients vor dem Herstellen einer Verbindung über einen Proxy keine DNS-Auflösung durchführen sollten ?
Wheeler

Nur Konvention und / oder Effizienz, soweit ich das verstehe. Mit dem alten Microsoft Winsock-Proxy-Client können Sie mit Optionen für die Namensauflösung spielen. Und nichts hindert Sie daran, ein PAC zu schreiben, das die Namensauflösung durchführt und dann einen Proxy verwendet ... es ist einfach nicht so, wie es zuerst gemacht wurde.
TristanK

0

Ich bin nicht sicher, ob Ihr DNS-Teil richtig ist. Ich habe gesehen, dass ein Computer ohne gültige DNS-Server Seiten im Internet Explorer über einen Proxy abruft.


Ich weiß, dass ein ISA Server-Webproxy-Client den DNS des ISA Servers zum Auflösen von Zieladressen verwendet, aber ich bin mir ziemlich sicher, dass ein grundlegender HTTP-Proxy, der in den Internetoptionen eines XP / Win7-Computers festgelegt ist, wie oben angegeben aufgelöst wird ...
orange_aurelius

... und hoppla. Ich habe gerade einen Test gemacht, der sich als falsch erwiesen hat, zumindest im IE. Also, ich denke meine nächste Frage wäre, wie wird DNS dann für Adressen aufgelöst, die in der Proxy-Ausnahmeliste sind? Vielleicht ist es Zeit, den Schnüffler rauszuholen.
Orange_aurelius

0

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

  1. Der Benutzer sendet Anforderungen an den Proxy
  2. Squid sendet eine DNS-Anfrage an den DNS-Server
  3. Squid erhält DNS-Antwort. Wenn nxdomain oder ein anderer Fehler vorliegt, senden Sie die Fehlerseite an den IE. Wenn der Name aufgelöst wird, rufen Sie die Seite ab und übergeben Sie sie an den Internet Explorer.

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


0

Ich glaube nicht, dass dies der Fall ist. Wenn Sie die IP-Adresse und die Domain in der Ausnahmeliste oder die Domain eingeben und die IP-Adresse in der Ausnahmeliste ist, wird dies wahrscheinlich immer noch über den Proxy erfolgen.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.