#SysAdmin – Automatización de los Servicios – #Proxy automatico

Squid

Todo el que halla configurado un navegador con proxy; o sea, todo cubano que halla configurado un navegador, quizás halla visto que una de las tantas opciones dice “configuración automática”. Seguro se preguntarán que es eso.

Autor: lazaro

Pues es un javascript que le dice al navegador como debe ser la configuración del proxy; obviamente.

Resulta que hay dos maneras de hacerlo, vía DHCP o vía DNS. Algunos navegadores lo cogen por DHCP mientras que otros lo hacen por DNS.

Para evitar problemas, configuramos las dos…

Primero y principioso. Creamos el fichero wpad.dat, el nombre debe respetarse. Dicho fichero los servimos, así que por definición los podremos en /var/www. Este fichero contendrá las instrucciones que un navegador necesita para que funcionen.

“/var/www/wpad.dat”
1
2
3
4
5
6
7
8
9
10
11
12
function FindProxyForURL(url, host) {

        // los host locales NO pasan a través del proxy
        if(shExpMatch(url,"*.hcg.sld.cu:*")) { return "DIRECT"; }
        if(shExpMatch(url,"*.hcg.sld.cu:*/*")) { return "DIRECT"; }

        // la red local, tampoco
        if(isInNet(host, "10.1.1.0", "255.255.255.0")) { return "DIRECT"; }

        // lo demás sale por el proxy
        return "PROXY 10.1.1.1:3128";
};

Como ve, es javascript puro, osea que las opciones se podrían hacer más creativas. Por ejemplo, si la ip de la máquina es tal, configuralo así o asao.

Los criticones de código diran que se pudo usar un swith en vez de 4 “if”. Pero eso correrá en un momento y entorno casi imposible de debugar. Lo intenté con swith y no me pinchó.

Ahora el problema es que hay que declarar un nuevo contenido mime para este dato. En mi caso uso nginx y en el fichero de configuración de mime, le aclaramos el nuevo; a mi me quedó así:

mime.conf
1
2
3
4
5
6
7
types {

    application/x-ns-proxy-autoconfig     dat;
    text/html                             html htm shtml;
    text/css                              css;
    (muchas lineas más aqui)
}

Bueno ahora, vamos pal DHCP. Por supuesto, nada menos que el mismísimo dnsmasq:

Primero el método DHCP, declaramos una option cuyo código sea 252

“/etc/dnsmasq.conf”
1
option=252,http://10.1.1.1/wpad.dat

También declaramos un puntero DNS, que apunte a wpad.hcg.sld.cu y que sea el servidor donde está el wpad. Le recuerdo que “hcg.sld.cu” es el nombre del dominio.

Al reiniciar nginx y dnsmasq, todo debe estar listo…

Autor: ArmandoF

Ahora en caso de usar Bind9dhcp3-server lo pueden hacer de la siguiente forma

Configurando el servidor ISC dhcpd para WPAD

El servidor ISC dhcpd soporta el uso de la opción 252 asignada para proveer información para localizar el script de auto configuración PAC. En la sección de parámetros globales del archivo de configuración dhcpd.conf defina la opción wpad con el código 252 y de tipo text, por ejemplo:

option wpad code 252 = text;

Además, en el bloque de las opciones de la subred, agregue el valor para la opción wpad, por ejemplo:

subnet 10.1.1.0 netmask 255.255.255.0 {

        option subnet-mask              255.255.255.0;
        option broadcast-address        10.1.1.255;
        option routers                  10.1.1.1;
        option domain-name              "hcg.sld.cu";
        option domain-name-servers      10.1.1.1;
        option wpad                     "http://wpad.hcg.sld.cu/wpad.dat\n";

        range  192.168.X.50 192.168.X.200;

}

Valide la configuración:

# dhcpd -t

Re inicie el servidor dhcpd para que los cambios tomen efecto:

# /etc/init.d/dhcp3-server restart

Configurando el servidor bind para WPAD

Si el servidor proxy tiene asignado un nombre DNS a través de un registro A en la zona dns local entonces se aconseja que cree un registro CNAME llamado wpad y que apunte a nombre del servidor proxy.

Edite el archivo de la zona directa para el dominio de la red local, por ejemplo:

# vim /etc/bind/db.hcg.sld.cu.zone

Agregue un registro tipo CNAME apuntando al nombre del servidor proxy, por ejemplo:

proxy       IN    A      10.1.1.1
wpad        IN    CNAME  proxy.hcg.sld.cu.

En caso de que el servidor web en el que vaya a hospedar el archivo se aconseja que cree un registro A wpad apuntando a la dirección IP del servidor web, por ejemplo:

wpad        IN    A      10.1.1.1

Algunos clientes web localizan los parámetros de proxy haciendo consultas DNS al registro SRV wpad.tcp, cree un registro SRV, por ejemplo:

wpad.tcp    IN    SRV    0 0 80 wpad.hcg.sld.cu.

Otra alternativa que usan algunos clientes web es localizar el URL del proxy pac vía una consulta a un registro TXT, por ejemplo:

wpad        IN    CNAME  proxy.hcg.sld.cu.
wpad        IN    TXT    "service: wpad:!http://wpad.hcg.sld.cu:80/wpad.dat"

Valide el archivo de la zona:

# named-checkzone hcg.sld.cu /etc/bind/db.hcg.sld.cu.zone

Y recargue la zona:

# rndc reload hcg.sld.cu

Realice una consulta usando el comando host:

# host wpad.hcg.sld.cu

Asegurese de que desde un navegador pueda alcanzar el script usando el URL:

  • http://wpad.hcg.sld.cu/wpad.dat

5 Replies to “#SysAdmin – Automatización de los Servicios – #Proxy automatico”

  1. Mijo cual de estas opciones es la que utiliza Firefox, pues no todas el bin9 me las deja aplicar.
    Y tan solo necesito la de Firefox.
    A por cierto en cuento al mime.conf deverías explicar un poquito más pues pues el loco de lázaro cree que todo el mundo es especialista. jajaj
    Dime como puedo implementarlo el apache2.

  2. Hola Armando necesito saber si existe alguna herramienta q me permita saltarme el proxy de mi trabajo para poder bucear como tu en internet,
    soy electronico y necesito descargar manuales y documentacion y no tengo acceso q ironico

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*