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

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

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

  1. Sitio de solicitudes de usuario
  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 dar cabida a 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 enviar 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 según la tabla de enrutamiento de la máquina cliente.

Cualquier comentario será muy apreciado.

Respuesta1

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

Si configura IE con unexplícitoapoderado:por ejemplo, no hay otras opciones marcadas, el proxy está configurado en algo: 8080.

  1. El usuario escribe una dirección

  2. IE comprueba la dirección en busca de uncoincidencia de cadenas con la lista de excepciones del proxy de IE(es decir, "Omitir proxy para estas direcciones:")

    a.Si coincide con una entrada en elDerivaciónlista, elclienteusossu propio DNSpara resolver el nombre, y luego elEl cliente se conecta directamente a la dirección IP de destino.en el puerto 80 (se supone), luego envía una solicitud como:

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

    b.Si ninguna entrada de la lista de omisiones coincide, continuar:

  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

    Dato adicional: este uso delFQDN en la URLes una manera de saber que un clientepiensaestá hablando con un proxy en lugar de un servidor web real

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

Cuando utilice WPAD/PAC:

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

  1. El usuario escribe una dirección

  2. Clientedescargasla corrientewpad.dat/autoproxy.js/.pacarchivo desde su ubicación configurada

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

  4. El script Autoproxy procesa elnombre de hostyURL. Este es un archivo javascript de función limitada, pero aún son posibles muchas cosas:

    a. esto puede incluirresolución de nombre(IsInNet, DNSResolve)

    b. esto puede incluircoincidencia de cadenas(Partida ShExp)

    C. esto puede incluircontando hasta un millón(yo ++)

    d. esto puede incluirmensajes emergentes de alerta de Narkysi el administrador es un idiota

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

    a. cualquiera"DIRECTO", en cuyo caso el cliente debe resolver el nombre por sí mismo y conectarse directamente, según el caso de omisión anterior.

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

    • como unejemplo: si la función del script regresó"PROXY tuProxy:8080;DIRECTO"que le dice al cliente que se conecte atu proxyen el puerto TCP8080para solicitar esta URL, y siesoNo se puede establecer la conexión, intente ir directamente. NotaEse error en la 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 es nada mejor. Tal vez.

Ocasionalmente hay fallos, sutilezas y comportamientos inexplicables, pero en su mayor parte, cuando las cosas no se rompen de maneras extrañas e interesantes, así es como he visto funcionar durante muchos años. Los navegadores más nuevos optimizan el comportamiento, paralelizan cosas y prueban cosas interesantes todo el tiempo, así que consulte los documentos más recientes de su navegador para comprender los detalles.

Proxy WinSock / Cliente de firewall ISA / Cliente TMG:

Si está interesado en Winsock Proxy Client (de TMG/ISA Server), esa es una historia diferente, con más flexibilidad y partes móviles. Demasiado para profundizar 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 ahora también está en desuso y no se ha actualizado en varios años.

Los clientes pueden ser realmente pegajosos:

Unonota final: Una vez que un cliente HTTP ha decidido hablar con un proxy para un sitio/URL determinado,no hay manera de que el proxy le diga que no lo haga.

No hay un código de estado HTTP ni un encabezado para "No sirvo eso, en su lugar deberías ir directamente a él"...

Una vez que el cliente decide que una URL en particular es servida por proxy,agarre-muerte-proxysobreviene.

La única forma de evitarlo es obteniendo 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 sonDIRECTOconectados, incluso si tienen puntos en la URL, para ser parte de la zona de intranet local (de forma predeterminada, configurable en las propiedades de la zona) y, por lo tanto, harán cosas como permitir la autenticación integrada de Windows en esos sitios (es decir, autenticación Kerberos y/o NTLM). , de forma transparente). Entonces, 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, de forma predeterminada.

Respuesta2

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

Respuesta3

Lo intenté 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 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.

Respuesta4

No creo que lo sea: 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á pasando por el proxy.

Es posible que un proxy.pac/wpad.dat le permita salir de este comportamiento a la fuerza.

información relacionada