Cómo funcionan las búsquedas DNS cuando se usa un proxy HTTP (o no) en IE


20

Recientemente participé en una discusión sobre lo que sucede cuando un cliente solicita una página de un servidor proxy. Solo quería asegurarme de que mi comprensión de esta secuencia de eventos era correcta en el caso general:

  1. Usuario solicita sitio
  2. El cliente envía una solicitud DNS a su servidor DNS configurado para resolver la dirección IP de destino (esto se hace primero para acomodar las solicitudes HTTP que están configuradas para omitir el proxy)
  3. Una vez que se recibe la IP de destino del DNS, y justo antes de que se envíe la solicitud HTTP, la solicitud se compara con la lista de excepciones
  4. Si el servidor de destino no está en la lista de excepciones, la solicitud se reenvía al servidor proxy.
  5. Si el servidor de destino está en la lista de excepciones, la solicitud se reenvía de acuerdo con la tabla de enrutamiento de la máquina cliente.

Cualquier comentario sería muy apreciado.

Respuestas:


21

No exactamente: depende de cómo esté configurado el cliente. Usemos IE como el ejemplo básico.

Si configura IE con un proxy explícito : por ejemplo, no hay otras opciones marcadas, proxy configurado en algo: 8080.

  1. El usuario escribe una dirección

  2. IE comprueba la dirección para una coincidencia de cadena con la lista de excepciones de proxy de IE (es decir, "Omitir proxy para estas direcciones:")

    a. Si coincide con una entrada en la lista de omisión , el cliente usa su propio DNS para resolver el nombre, y luego el cliente se conecta directamente a la dirección IP de destino en el puerto 80 (supuesto), luego envía una solicitud como:

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

    si. Si no coinciden las entradas de la lista de omisión , continúe:

  3. IE se conecta a su proxy configurado y envía una solicitud del formulario:

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

    Factoid de bonificación: este uso del FQDN en la URL es una forma de saber que un cliente cree que está hablando con un proxy en lugar de un servidor web real

  4. El proxy resuelve ese nombre de host utilizando su propio DNS y luego se conecta al sitio de destino (actúa como el cliente en el paso 2 anterior), etc., etc.

Cuando use WPAD / PAC:

En el caso de utilizar un script de detección automática de proxy web (WPAD) o de configuración automática de proxy (PAC o Autoconfig), como los proporcionados por ISA / TMG cuando la configuración automática está habilitada, es diferente:

  1. El usuario escribe una dirección

  2. El cliente descarga el archivo actual wpad.dat / autoproxy.js / .pac desde su ubicación configurada

  3. El cliente busca la función " FindProxyForUrl " en el archivo js y la ejecuta

  4. El script Autoproxy procesa el nombre de host y la URL . Este es un archivo javascript de función limitada, pero todavía hay muchas cosas posibles:

    a. Esto puede incluir la resolución de nombres (IsInNet, DnsResolve)

    si. esto puede incluir la coincidencia de cadenas (ShExpMatch)

    C. Esto puede incluir contar hasta un millón (i ++)

    re. esto puede incluir mensajes emergentes de alerta narky si el administrador es un imbécil

    • (o simplemente divertido)
    • ((o depuración))
  5. La función FindProxyForUrl devuelve al menos una cadena : una lista ordenada de los mejores proxies para usar (separados por punto y coma)

    a. ya sea "DIRECTO" , en cuyo caso el cliente debe resolver el nombre y conectarse directamente, según el caso de omisión anterior

    si. o "nombre de proxy PROXY: 8080" o similar, en cuyo caso el cliente se conecta a ese puerto en ese proxy, le dice que OBTENGA la URL completa y el proxy realiza la resolución de nombre .

    • Como ejemplo : si la función de script devolvió "PROXY yourProxy: 8080; DIRECT" que le dice al cliente que se conecte a su proxy en el puerto TCP 8080 para solicitar esta URL, y si esa conexión no se puede establecer, intente ir directamente. Tenga en cuenta que el fallo de configuración de la sesión TCP no es exactamente rápido, por lo que no es probable que sea una experiencia de conmutación por error agradable para un usuario, pero no supera nada. Tal vez.

De vez en cuando hay fallas, sutilezas y comportamientos inexplicables, pero en su mayor parte cuando las cosas no se rompen de maneras extrañas e interesantes, lo anterior es cómo lo he visto funcionar durante muchos años. Los navegadores más nuevos están optimizando el comportamiento, y paralelizando cosas, y probando cosas interesantes todo el tiempo, así que revise los documentos más recientes para su navegador dado para comprender los detalles.

Cliente WinSock Proxy / ISA Firewall / Cliente TMG :

Si está interesado en Winsock Proxy Client (del servidor TMG / ISA), esa es una historia diferente, con más flexibilidad y partes móviles. Demasiado para entrar aquí, pero hay documentos que describen cómo funciona. En resumen: se conecta a Windows Sockets y puede interceptar tanto el tráfico basado en TCP / UDP como las solicitudes de resolución de nombres por aplicación y por usuario. Muy potente, pero también en desuso ahora, y no se ha actualizado en varios años.

Los clientes pueden ser realmente pegajosos:

Una nota final : una vez que un cliente HTTP ha decidido hablar con un proxy para un sitio / url determinado, no hay forma de que el proxy le diga que no lo haga .

No hay un código de estado HTTP o encabezado para "No sirvo eso, simplemente debes ir directamente a él" ...

Una vez que el cliente decide que una URL particular es servida por proxy , se produce proxy-death-grip .

La única forma de evitarlo es obtener la lógica de selección justo antes de que el cliente realice su conexión, en la lista PAC o Bypass.

Una nota final sobre Zonas y archivos PAC

IE trata los sitios que están conectados DIRECTAMENTE , incluso si tienen puntos en la URL, como parte de la Zona de Intranet Local (de forma predeterminada, configurable en las propiedades de la Zona), y así hará cosas como permitir la autenticación integrada de Windows en esos sitios (es decir, Kerberos y / o autenticación NTLM, de forma transparente). Por lo tanto, controlar si algo está en la zona de Intranet local define qué tan confiable es en términos de autenticación automática. De nuevo, al menos, por defecto.


¿Existe un estándar o parte de un RFC que establezca que los clientes no deben realizar una resolución DNS antes de conectarse a través de un proxy?
Wheeler

Solo convenciones y / o eficiencia, hasta donde yo entiendo. El antiguo cliente de Microsoft Winsock Proxy solía permitirte jugar con opciones de resolución de nombres. Y no hay nada que te impida escribir un PAC que resuelva el nombre y luego use un proxy ... al principio no es así.
TristanK

0

No estoy seguro de que su parte de DNS sea correcta. He visto una máquina sin servidores DNS válidos que busca páginas en IE bien usando un proxy.


Sé que un Cliente proxy web del servidor ISA usa el DNS del servidor ISA para resolver las direcciones de destino, pero estoy bastante seguro de que un proxy HTTP básico configurado en las Opciones de Internet de una máquina XP / Win7 se resuelve como se indicó anteriormente ...
orange_aurelius

... y vaya. Acabo de hacer una prueba que demostró que estaba equivocado, al menos en IE. Entonces, supongo que mi siguiente pregunta sería, ¿cómo se resuelve el DNS para las direcciones que están en la lista de excepciones de proxy? Tal vez es hora de salir del sniffer.
orange_aurelius

0

Intento en ubuntu 10.04, wine, IE 6.0 y squid 2.7 (el sistema tiene un dns y squid tiene otro servidor dns)

  1. El usuario envía solicitudes al proxy
  2. Squid envía solicitud de DNS al servidor DNS
  3. Squid recibe respuesta de DNS. Si nxdomain u otro error, envíe la página de error a IE. Si el nombre se resuelve, busque la página y entréguela a IE.

IE 6.0 no resuelve el nombre DNS.


0

No creo que sea así: si escribe la IP y el dominio en la lista de excepciones, o el dominio, y la IP está en la lista de excepciones, probablemente seguirá a través del proxy.

Es posible que un proxy.pac / wpad.dat le permita forzar su salida de este comportamiento.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.