%20im%20Internet%20Explorer.png)
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 Ereignisfolge im Allgemeinen richtig war:
- Benutzer fordert Site an
- Der Client sendet eine DNS-Anfrage an seinen konfigurierten DNS-Server, um die Ziel-IP-Adresse aufzulösen (dies geschieht zuerst, um HTTP-Anfragen zu berücksichtigen, die so konfiguriert sind, dass sie den Proxy umgehen).
- Sobald die Ziel-IP vom DNS empfangen wurde und unmittelbar bevor die HTTP-Anforderung gesendet wird, wird die Anforderung anhand der Ausnahmeliste überprüft.
- Wenn der Zielserver nicht auf der Ausnahmeliste steht, wird die Anfrage an den Proxyserver weitergeleitet.
- Wenn sich der Zielserver auf der Ausnahmeliste befindet, wird die Anforderung gemäß der Routing-Tabelle des Clientcomputers weitergeleitet.
Wir freuen uns über jedes Feedback.
Antwort1
Nicht ganz: Es hängt von der Konfiguration des Clients ab. Als grundlegendes Beispiel verwenden wir den Internet Explorer.
Wenn Sie den IE mit einemexplizitProxy:zB keine anderen Optionen angekreuzt, Proxy auf etwas eingestellt: 8080.
Der Benutzer gibt eine Adresse ein
Der IE überprüft die Adresse aufString-Abgleich mit der IE-Proxy-Ausnahmeliste(z. B. „Proxy für diese Adressen umgehen:“)
A.Wenn es mit einem Eintrag imBypassListe, DieKlientVerwendeteinen eigenen DNSum den Namen aufzulösen, und dann dieDer Client stellt eine direkte Verbindung zur Ziel-IP-Adresse herauf Port 80 (angenommen), sendet dann eine Anfrage wie:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
B.Wenn keine Einträge in der Bypass-Liste übereinstimmen, weitermachen:
IE stellt eine Verbindung zu seinem konfigurierten Proxy herund sendet eine Anfrage im Format:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Bonus-Fakt: Diese Verwendung derFQDN in der URList ein Zeichen dafür, dass ein KundedenktEs kommuniziert mit einem Proxy statt mit einem echten Webserver
Der Proxy löst diesen Hostnamen aufmitseine eigeneDNS und stellt dann eine Verbindung zur Zielsite 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-Skripts (PAC oder Autoconfig), wie sie beispielsweise von ISA/TMG bei aktivierter Autokonfiguration bereitgestellt werden, verhält es sich anders:
Der Benutzer gibt eine Adresse ein
KlientDownloadsdie jetzigewpad.dat/autoproxy.js/.pacDatei von ihrem konfigurierten Speicherort
Client sucht nach der Funktion "ProxyForUrl suchen" in der js-Datei und führt sie aus
Das Autoproxy-Skript verarbeitet dieHostnameUndURL. Dies ist eine Javascript-Datei mit eingeschränkter Funktionalität, aber vieles ist trotzdem möglich:
a. hierzu können gehörenNamensauflösung(IsInNet, DNS-Auflösung)
b. hierzu können gehörenZeichenfolgenübereinstimmung(ShExpMatch)
c. hierzu können gehörenbis eine Million zählen(ich++)
d. hierzu können gehörenNarky-Alarm-Popup-Nachrichtenwenn der Admin ein Idiot ist
- (oder einfach nur lustig)
- ((oder Debuggen))
DerProxyForUrl suchenFunktion gibt mindestens eine Zeichenfolge zurück: eine geordnete Liste der am besten zu verwendenden Proxys (durch Semikolon getrennt)
a. entweder"DIREKTE", in diesem Fall muss der Client den Namen selbst auflösen und eine direkte Verbindung herstellen, wie im Bypass-Fall oben beschrieben.
b. oder„PROXY Proxyname:8080“oder ähnlich, in diesem Fall verbindet sich der Client mit diesem Port auf diesem Proxy, sagt ihm,Holen Sie sich die vollständige URL, und dasProxy führt Namensauflösung durch.
- AlsBeispiel: wenn die Skriptfunktion zurückgegeben wurde"PROXY IhrProxy:8080;DIREKT"das dem Client mitteilt, dass er eine Verbindung herstellen soll mitIhrProxyauf TCP-Port8080diese URL anzufordern, und wennDasEs kann keine Verbindung hergestellt werden. Versuchen Sie es direkt. Notizdass der Fehler beim Einrichten einer TCP-Sitzung nicht gerade schnell auftritt, sodass dies für einen Benutzer wahrscheinlich keine angenehme Failover-Erfahrung ist, aber es ist besser als alles andere. Vielleicht.
Es gibt gelegentlich Störungen, Feinheiten und unerklärliches Verhalten, aber größtenteils, wenn die Dinge nicht auf seltsame und interessante Weise kaputt sind, ist das oben Beschriebene die Funktionsweise, die ich über viele Jahre hinweg erlebt habe. Neuere Browser optimieren ihr Verhalten, parallelisieren Dinge und probieren ständig interessante Dinge aus. Sehen Sie sich also die aktuellsten Dokumentationen für Ihren Browser an, um die Feinheiten 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. Das wäre zu viel, um hier darauf einzugehen, aber es gibt Dokumente, die beschreiben, wie er funktioniert. Kurz gesagt: Er wird in Windows-Sockets eingesteckt und kann sowohl TCP/UDP-basierten Datenverkehr als auch Namensauflösungsanforderungen pro App und pro Benutzer abfangen. Sehr leistungsstark, aber mittlerweile auch veraltet und seit mehreren Jahren nicht mehr aktualisiert.
Kunden können wirklich anhänglich sein:
EinsSchlussbemerkung: Sobald ein HTTP-Client sich entschieden hat, mit einem Proxy für eine bestimmte Site/URL zu kommunizieren,Es gibt keine Möglichkeit für den Proxy, ihm mitzuteilen, dass er.
Es gibt keinen HTTP-Statuscode oder Header für „Das biete ich nicht an, Sie sollten stattdessen einfach direkt dorthin gehen“ …
Sobald der Client entscheidet, dass eine bestimmte URL über einen Proxy bereitgestellt wird,Proxy-Todesgrifferfolgt.
Dies lässt sich nur vermeiden, indem die Auswahllogik in der PAC- oder Bypass-Liste richtig platziert wird, bevor der Client seine Verbindung herstellt.
Ein letzter Hinweis zu Zonen und PAC-Dateien
IE behandelt Websites, dieDIREKTEverbunden – auch wenn sie Punkte in der URL haben –, um Teil der lokalen Intranetzone zu sein (standardmäßig – einstellbar in den Zoneneigenschaften) und so Dinge wie die integrierte Windows-Authentifizierung für diese Sites zuzulassen (d. h. transparente Kerberos- und/oder NTLM-Authentifizierung). Die Kontrolle, ob sich etwas in der lokalen Intranetzone befindet, definiert also, wie vertrauenswürdig es in Bezug auf die automatische Authentifizierung ist. Auch hier gilt zumindest standardmäßig.
Antwort2
Ich bin nicht sicher, ob Ihr DNS-Teil richtig ist. Ich habe gesehen, dass eine Maschine ohne gültige DNS-Server mithilfe eines Proxys problemlos Seiten im IE abrufen konnte.
Antwort3
Ich versuche es in Ubuntu 10.04, Wine, IE 6.0 und Squid 2.7 (das System hat einen DNS und Squid hat einen anderen DNS-Server).
- Benutzer sendet Anfragen an den Proxy
- Squid sendet DNS-Anfrage an DNS-Server
- Squid empfängt DNS-Antwort. Bei nxdomain oder einem anderen Fehler wird die Fehlerseite an den IE gesendet. Bei Namensauflösung wird die Seite abgerufen und an den IE weitergeleitet.
IE 6.0 löst DNS-Namen nicht auf.
Antwort4
Ich glaube nicht, dass das der Fall ist. Wenn Sie die IP-Adresse und die Domäne in der Ausnahmeliste eingeben oder die Domäne und die IP-Adresse in der Ausnahmeliste, läuft es wahrscheinlich trotzdem über den Proxy.
Möglicherweise können Sie dieses Verhalten mithilfe der Datei proxy.pac/wpad.dat beenden.