Etiqueta: transferencia

  • Proxy caché: squid

    Si tienes un servidor de ficheros (Samba), ftp, de impresión, Web, etc., y quieres aprovechar todavía mas tu hardware, le pueden añadir un servidor proxy caché: squid.

    Una aplicación común de los Servidores Intermediarios (Proxies) es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y ficheros disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

    La configuración inicial para que tu squid funcione como caché de páginas no difiere mucho de la configuración inicial con la que se instala por defecto squid.

    Instalación de squid

    Para nuestro ubuntu server bastará:

    #apt-get install squid

    Configuración básica

    Varios parámetros influyen en la configuración básica de squid.

    Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de parámetros, de los cuales recomendamos configurar los siguientes:

    http_port
    cache_dir
    Al menos una Lista de Control de Acceso
    Al menos una Regla de Control de Acceso

    El puerto en el que escucha squid se especifica en el parámetro:

    #
    #    You may specify multiple socket addresses on multiple lines.
    #
    # Default: http_port 3128
    http_port 3128

    Controles de acceso.

    Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas máquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Procedamos a entender como definir unas y otras.

    Listas de control de acceso.

    Regularmente una lista de control de acceso se establece con la siguiente sintaxis:

    acl [nombre de la lista] src [lo que compone a la lista]

    Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde las máquinas tienen direcciones IP 192.168.1.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

    acl miredlocal src 192.168.1.0/255.255.255.0

    También puede definirse una Lista de Control de Acceso especificando un fichero localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP. Ejemplo:

    acl permitidos src "/etc/squid/permitidos"

    El fichero /etc/squid/permitidos contendría algo como siguiente:

    192.168.1.1
    192.168.1.2
    192.168.1.3
    192.168.1.15
    192.168.1.16
    192.168.1.20
    192.168.1.40

    Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

    Reglas de Control de Acceso.

    Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:

    #
    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #

    La sintaxis básica es la siguiente:

    http_access [deny o allow] [lista de control de acceso]

    En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

    http_access allow permitidos

    También pueden definirse reglas valiéndose de la expresión !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:

    http_access allow lista1 !lista2

    Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

    Aplicando Listas y Reglas de control de acceso.

    Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración.

    Caso 1.

    Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

    acl todalared src 192.168.1.0/255.255.255.0

    Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

    Listas de Control de Acceso: definición de una red local completa

    #
    # Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl todalared src 192.168.1.0/255.255.255.0

    A continuación procedemos a aplicar la regla de control de acceso:

    http_access allow todalared

    Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

    Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

    #
    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    http_access allow localhost
    http_access allow todalared
    http_access deny all

    La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual está conformada por 192.168.1.0/255.255.255.0. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

    Caso 2.

    Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/listas/redlocal, dentro del cual se incluirán solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:

    192.168.1.1
    192.168.1.2
    192.168.1.3
    192.168.1.15
    192.168.1.16
    192.168.1.20
    192.168.1.40

    Denominaremos a esta lista de control de acceso como redlocal:

    acl redlocal src "/etc/squid/listas/redlocal"

    Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

    Listas de Control de Acceso: definición de una red local completa

    #
    # Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl redlocal src "/etc/squid/listas/redlocal"

    A continuación procedemos a aplicar la regla de control de acceso:

    http_access allow redlocal

    Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

    Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

    #
    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    http_access allow localhost
    http_access allow redlocal
    http_access deny all

    La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual está conformada por las direcciones IP especificadas en el fichero /etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.

    En un momento dado se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT.

    Re-direccionamiento de peticiones a través de la opción REDIRECT en Shorewall.

    La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidores Intermediario (Proxy) transparente.

    #ACTION		SOURCE		DEST	PROTO	DEST
    REDIRECT	loc		8080	tcp	80

    Si no usamos el proxy transparente anterior y tenemos un cortafuegos montado en el servidor, debemos habilitar este para que nuestros ordenadores de la red local accedan a este proxy en el puerto 3128.

    Mas información en Linux para Todos

  • Análisis del ancho de banda

    linux-logoSurfeando por la web conocí la página de vicente navarro que como vereis tiene una filosofía verdaderamente interesante en su forma de postear.

    Resumo aquí brevemente un artículo sobre el análisis del ancho de banda no solamente de internet sino también de una red local. El artículo original está aquí.

    La situación pasa por querer medir la transferencia entre dos ordenadores a través de la red (local o internet). El paquete utilizado es iperf. A través de una apt-get install iperf, cualquier versión de ubuntu lo instalará. La ventaja de este paquete es que hace por sí mismo una transferencia entre los ordenadores implicados de tal manera que no es necesario hacer una transferencia con cualquier otro programa para el test.

    En uno de los ordenadores pondremos:

    debian $ iperf -s
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.69.69 port 5001 connected with 192.168.69.33 port 53490

    Esto no dejará este ordenador en modo espera en el puerto por defecto 5001.

    En el otro ordenador será:

    ubuntu $ iperf -c debian
    ------------------------------------------------------------
    Client connecting to debian, TCP port 5001
    TCP window size: 16.0 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.69.33 port 53490 connected with 192.168.69.69 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.1 sec    116 MBytes  96.3 Mbits/sec
    [  4]  0.0-10.3 sec    116 MBytes  94.1 Mbits/sec

    De esta manera podemos comprobar la transferencia entre ambos sin utilizar ningún software adicional.

    Este comando admite la opción -p xxxx donde xxxx es el puerto a utilizar.