Práctica 6: Puesta en marcha de un servidor Proxy Arquitectura de Sistemas y Aplicaciones Distribuidas – U.L.P.G.C. David Jesús Horat Flotats Enrique Fernández Perdomo Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Índice Introducción a Squid...........................................................................................2 Obtención e Instalación de Squid....................................................................... 4 Configuración básica......................................................................................... 5 Ejemplo de configuración básica........................................................................ 8 Configuración avanzada......................................................................................9 Ejemplo de configuración avanzada................................................................. 11 Objetivos........................................................................................................11 Archivo de configuración.............................................................................. 11 Ejemplos de acceso....................................................................................... 12 Desde la interfaz interna........................................................................... 12 Desde la interfaz externa.......................................................................... 14 Comprobación del funcionamiento de los hermanos y padre....................... 14 Hermano .es.............................................................................................. 14 Hermano .com........................................................................................... 16 Configuración de un Navegador Web Gráfico para que use el Proxy.............. 19 1 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Introducción a Squid Squid es un software que cachea datos. Lo realiza guardando las peticiones que los usuarios realizan. En otras palabras, si una persona quiere descargar una página web, pide a squid que obtenga dicha página. Squid se conecta al servidor remoto (por ejemplo http://www.ulpgc.es) y pide la página. Después reenvía la petición al usuario, pero al mismo tiempo mantiene una copia. La próxima vez que alguien desee dicha página, squid simplemente la lee del disco y la transfiere al usuario de forma instantánea. Squid soporta actualmente los protocolos HTTP, FTP, GOPHER, SSL y WHAIS. No soporta otros protocolos como RealAudio, Streams, POP3 y similares. Dentro del campo de las cachés, es necesario tener en cuenta de qué forma puede ser útil el realizar caché y que objetos deben ser cacheados. Es totalmente inapropiado cachear por ejemplo números de tarjetas de crédito, los resultados de un script ejecutado remotamente, sitios que cambian muy a menudo (como www.elprincipalperiodico.com) o incluso sitios que no desean ser cacheados. Squid cumple estos requerimientos, siempre y cuando los sitios remotos sigan los estándares. Los scripts ejecutables cgi-bin no son cacheados, las páginas que indican en las cabeceras peridos de caducidad son tenidos en cuenta, y es posible especificar con reglas extra que se debe y que no se debe cachear, y para cuanto tiempo. Para determinar la utilidad y rendimiento de la cache, es necesario tener en cuenta diversos factores. Utilizando una cache pequeña (un par de gigas) se obtienen unos resultados altos (cercanos al 25%). Este espacio cachea los sitios mas habituales, tales como ole, marca, y similares. Si se dobla el espacio en disco, no se dobla este porcentaje. Esto es debido a que se está intentando capturar el resto de peticiones, que con frecuencia son poco utilizadas. Una 2 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo cache grande (por encima de 20 Gb) probablemente no llegará al 50%, a no ser que las páginas se mantengan durante mucho tiempo. 3 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Obtención e Instalación de Squid Squid es el servidor caché más utilizado, por lo que suele estar incluido en las distintas distribuciones de Linux que nos podemos encontrar, especialmente las orientadas a servidores. En nuestro caso, usamos la distribución de Linux Fedora Core 31, en la que viene incluido Squid, por lo que la instalamos directamente desde el CD sin mayor problema. En caso de querer compilar e instalar la última versión, habría que ir a la página oficial de Squid2 y descargarse, o bien la versión estable (actualmente la 2.5), o bien la versión en desarrollo (actualmente 3.0). Los formatos de descarga son o bien tar.gz o bien tar.bz2. En ambos casos deberemos descomprimirlos, compilarlos e instalarlos. Una vez descargado un gzipped tarball (squid-*-tar.gz), lo descomprimimos con el comando: tar -xvzf squid-*-src.tar.gz cd squid -* A continuación, para configurar, compilar e instalar Squid, ejecutamos: ./configure make make install Esto instalará Squid en “/usr/local/squid”. Si quiere ver las opciones disponibles para la instalación de Squid, ejecute: ./configure –help En la instalación de Fedora Core 3, por defecto, el Squid se instala en “/usr/sbin/squid” y sus archivos de configuración en “/etc/squid/”. 1 Fedora Core: http://fedora.redhat.com/ 2 Squid Web Proxy Cache: http://www.squid-cache.org/ 4 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Configuración básica Todas las opciones de configuración de Squid se realizan en su fichero de configuración. Por defecto se encuentra en “/usr/local/squid/etc/squid.conf”, sin embargo en Fedora Core 3, se encuentra en “/etc/squid/squid.conf”. A continuación explicaremos una por una las opciones de configuración del Squid. http_port [host:puerto | puerto] Especifica el socket donde Squid escuchará peticiones. Por defecto Squid escucha en todas las ip del ordenador por el puerto 3128. En el caso de tener un ordenador con dos tarjetas de red: una para la red interna y otra de conexión a internet, es recomendable especificar a Squid que sólo use la de la red interna mediante su ip. Si elijes un puerto por debajo de 1024 (por ejemplo el 80), deberás ser root para poder usarlo. cache_mgr [usuario] Especifica el usuario que recibirá un email en caso de que el servidor de Squid deje de funcionar. cache_effective_user [usuario] cache_effective_group [grupo] En caso de que Squid se ejecute como root, se cambiará su UID y GID a los especificados por estos parámetros una vez se haya iniciado. Este recurso se uso como medida de seguridad, ya que una vez iniciados los sockets, ya no es necesario que Squid siga como administrador del sistema. En caso de no especificar grupo, Squid se cambiará al grupo del que pertenezca el usuario. ftp_user [usuario@ | usuario@dominio] Permite especificar la dirección de correo electrónico que se mandará a los servidores FTP en donde el login sea anónimo. Esto permite que en caso 5 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo de que un usuario abuse de un FTP, el administrador de dicho FTP tendrá una dirección donde quejarse y advertir de dicho uso. En caso de poner solo user@, el dominio se autocompletará con el actual. http_access allow | deny [ip/máscara | nombre-clase] Especifica qué ips pueden usar el servicio de Squid y cuales no. Esta regla puede duplicarse cuantas veces se quiera para especifcar la lista entera de permisos. Ejemplo: http_access allow 172.16.6.0/255.255.255.0 http_access deny 172.16.0.0/255.255.0.0 La comprobación se realiza desde arriba hacia abajo y la que primero se cumple es la que se ejecuta, por ello es aconsejable que las más restrictivas estén debajo. También se recomienda usar alguna regla que deniege a todos al final: “http_access deny 0.0.0.0/0.0.0.0” o “http_access deny all”. acl [nombre-clase] src [ip/máscara] Permite definir listas de cara a clasificar el acceso de forma más clara en organizaciones grandes. Ejemplo: # clases acl red6 src 172.16.6.0/255.255.255.0 acl redes src 172.16.0.0/255.255.0.0 # permisos http_access allow red6 http_access deny redes Este ejemplo clasifica las redes del ejemplo del parámetro anterior, sin embargo no se ve claramente su utilidad al ser una red pequeña. cache_peer [cache-host] [tipo] [puerto_http] [puerto_icp] Squid soporta el concepto de caché jerárquico, por el cual, si no tienes una IP se la preguntas a otro caché antes que al servidor original. Esto sólo es 6 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo recomendable si la caché está dentro de la red y por tanto es más rápido que preguntarle al servidor original. El host es la máquina a la que le preguntaremos o nos preguntará. El tipo puede ser “parent”, “sibling” o “multicast”. Para especificar varios servidores, simplemente se duplica la línea. 7 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Ejemplo de configuración básica A continuación hemos creado un servicio de caché con Squid tal que sólo los ordenadores de la red local sean los que puedan acceder hacia afuera. # Escucha en la red local por el puerto 8080 http_port 172.16.6.1:8080 # Si el servicio se cae, manda un email a root cache_mgr root # Cuando haya una conexión anónima a un FTP, manda # como dirección email: administrador@midominio ftp_user administrador@ # Desde que el Squid se active, cambia al usuario squid cache_effective_user squid # Lista de acceso acl red6 src 172.16.6.0/255.255.255.0 acl red6ext src 172.16.1.6/255.255.255.255 acl red2 src 172.16.1.2/255.255.255.255 acl redes src 172.16.0.0/255.255.0.0 acl all src 0.0.0.0/0.0.0.0 acl loopback src 127.0.0.1/255.255.255.0 http_access allow loopback http_access allow red6 http_access allow red6ext http_access allow red2 http_access deny all 8 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Configuración avanzada cache_dir [tipo-fs] [directorio] [opciones-fs] Permite especificar el lugar donde se almacenará la caché de Squid y sus parámetros. Tipo-fs representa el sistema de archivos donde estará nuestro directorio. Por defecto está incluido el “ufs” que es el sistema tradicional de Squid. En caso de querer otro formato habría que reconfigurarlo con la opción –enable-storeio. Para el sistema “ufs”, que es el que usaremos, existen tres opciones que hay que especificar: Mbytes L1 L2. Mbytes representa el tamaño máximo de disco que usará Squid para la caché en el directorio especificado. L1 representa el número máximo de subdirectorios que se crearán en el directorio especificado. El valor por defecto de L1 es 16. L2 representa el número máximo de subdirectorios que se crearán dentro de cada directorio de L1. El valor por defecto de L2 es 256. El valor por defecto del parámetro es “cache_dir ufs /var/spool/squid 100 16 256”. cache_access_log [ruta/archivo] Permite especificar el archivo donde se guardará todas las peticiones de los clientes, tanto HTTP como ICP. Para deshabilitar el logging usar “none”. El valor por defecto de este parámetro es: “cache_access_log /var/log/squid/access.log”. cache_peer_domain [cache-host] [dominio | !dominio] Permite especificar para qué dominios hay que o para que dominios no hay que preguntarle a otro caché. El cache-host debe estar especificado previamente mediante la opción cache_peer. udp_incoming_address [ip] udp_outgoing_address [ip] Permite especificar por qué interfaces de red escuchará (incoming) y 9 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo mandará (outgoing) paquetes ICP, que son los usados para preguntar. Si especificamos “0.0.0.0” para “udp_incoming_address”, Squid escuchará por todas las interfaces de red disponibles. Si especificamos “255.255.255.255” para “upd_outgoing_address”, que es el valor por defecto, Squid mandará paquetes ICP sólo por la interfaz especificada en “udp_incoming_address”. acl [nombre-clase] (dst [ip] | dstdomain [dominio]) Permite definir listas de cara a prohibir el acceso a determinadas ips o dominios como destino. Por ejemplo a sitios para adultos. 10 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Ejemplo de configuración avanzada Objetivos – Tamaño de caché de disco de 50 MB – Realizar el logging de las solicitudes de los clientes – 1 Padre – 1 hermano sólo para .com – 1 hermano sólo para .es – Permitir solicitudes de clientes sólo de la interfaz de la red interna – Permitir solicitar conexiones con servidores y cachés vecinos por la interfaz externa – – Prohibir las siguientes direcciones: – Playboy.com – Playgirl.com Sólo permitimos a nosotros, nuestra red local y a la pasarela de red2 el acceso al proxy Archivo de configuración # Caché situada en /var/spool/squid cuyo sistema de archivos # es ufs, ocupa 50 MB y tiene esta cache 7 subdirectorios en el primer nivel # y 100 en el segundo nivel. cache_dir ufs /var/spool/squid 50 7 100 # Guarda la actividad de los clientes en el archivo especificado cache_access_log /var/log/squid/clientes.log # # hostname type # # ------------------ -------- ----- cache_peer proxy.rcanaria.es cache_peer 220.254.20.164 port port options ----- ----------parent sibling 3128 11 3128 3130 proxy-only 3130 proxy-only Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas cache_peer 172.16.1.10 sibling 3128 David Jesús Horat Flotats Enrique Fernández Perdomo 3130 proxy-only # 1 hermano para .es cache_peer_domain 220.254.20.164 .es !.com # 1 hermano para .com cache_peer_domain 172.16.1.10 .com !.es # Solo permite solicitudes de la red interna por el puerto 3128 http_port 172.16.6.1:3128 # Solo permite enviar preguntas por la red externa tcp_outgoing_address 172.16.1.6 udp_outgoing_address 172.16.1.6 acl censurado dstdomain .playboy.com .playgirl.com acl LosDemas src 0.0.0.0/0.0.0.0 acl MisInternos src 172.16.6.0/255.255.255.0 http_access deny censurado http_access allow MisInternos http_access deny LosDemas Ejemplos de acceso A continuación mostramos ejemplos de acceso desde varias estaciones. Desde la interfaz interna Si intentamos acceder a google nos lo permite perfectamente: [root@enrique ~]# squidclient -h 172.16.6.1 http://www.google.es HTTP/1.0 200 OK Cache-Control: private Content-Type: text/html Set-Cookie: 12 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo PREF=ID=3faa49a75a2d03a5:LD=es:TM=1113931620:LM=1113931620:S= m-qXtjcXXtJAwwua; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.es Server: GWS/2.1 Date: Tue, 19 Apr 2005 17:27:00 GMT X-Cache: MISS from pasarela12.redes.dis.ulpgc.es Proxy-Connection: close ... Sin embargo, si intentamos acceder tanto a www.playboy.com como www.playgirl.com no podemos: [root@enrique ~]# squidclient -h 172.16.6.1 http://www.playboy.com HTTP/1.0 403 Forbidden Server: squid/2.5.STABLE6 Mime-Version: 1.0 Date: Tue, 19 Apr 2005 17:29:23 GMT Content-Type: text/html Content-Length: 1063 Expires: Tue, 19 Apr 2005 17:29:23 GMT X-Squid-Error: ERR_ACCESS_DENIED 0 X-Cache: MISS from pasarela12.redes.dis.ulpgc.es Proxy-Connection: close ... [root@enrique ~]# squidclient -h 172.16.6.1 http://www.playgirl.com HTTP/1.0 403 Forbidden Server: squid/2.5.STABLE6 Mime-Version: 1.0 Date: Tue, 19 Apr 2005 17:29:34 GMT Content-Type: text/html 13 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Content-Length: 1065 Expires: Tue, 19 Apr 2005 17:29:34 GMT X-Squid-Error: ERR_ACCESS_DENIED 0 X-Cache: MISS from pasarela12.redes.dis.ulpgc.es Proxy-Connection: close ... Desde la interfaz externa [root@pasarela12 ~]# squidclient -h 172.16.1.6 http://www.gooogle.es client: ERROR: Cannot connect to 172.16.1.6:3128: Connection refused Es lógico, ya que Squid no está escuchando la interfaz 172.16.1.6, sólo la 172.16.6.1. Comprobación del funcionamiento de los hermanos y padre A continuación usaremos el Ethereal para comprobar el funcionamiento de los hermanos y como se mandan los paquetes (las capturas mostradas se obtienen tras exportarlas a texto plano desde Ethereal). Los proxys usados son: -Como padre: proxy.rcanaria.es (193.146.95.50) -Como hermanos para .es: 220.254.20.164 -Como hermano para .com: 172.16.1.10 Hermano .es 1 0.000000 172.16.1.6 193.146.95.50 ICP 2 0.000031 172.16.1.6 220.254.20.164 4 0.065083 193.146.95.50 172.16.1.6 ICP ICP ICP Opcode: ICP_QUERY (1), Req Nr: 87 Opcode: ICP_QUERY (1), Req Nr: 87 Opcode: ICP_MISS (3), Req Nr: 87 24 0.186011 172.16.1.6 193.146.95.50 25 0.186056 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 88 26 0.186243 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 88 47 0.253495 193.146.95.50 49 0.257163 172.16.1.6 172.16.1.6 ICP 220.254.20.164 14 ICP Opcode: ICP_QUERY (1), Req Nr: 88 Opcode: ICP_MISS (3), Req Nr: 88 Opcode: ICP_QUERY (1), Req Nr: 89 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo 50 0.257204 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 89 51 0.278058 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 90 52 0.278098 172.16.1.6 220.254.20.164 69 0.323775 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 89 71 0.342718 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 90 84 0.641992 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 91 85 0.644674 172.16.1.6 220.254.20.164 86 0.644714 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 92 87 0.646733 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 93 88 0.654701 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 94 89 0.654742 172.16.1.6 220.254.20.164 90 0.705929 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 91 92 0.708808 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 92 94 0.712008 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 93 96 0.720026 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 94 ICP ICP ICP ICP Opcode: ICP_QUERY (1), Req Nr: 90 Opcode: ICP_QUERY (1), Req Nr: 92 Opcode: ICP_QUERY (1), Req Nr: 94 103 0.774414 172.16.1.6 220.254.20.164 104 0.774447 172.16.1.6 172.16.1.10 105 0.774467 172.16.1.6 193.146.95.50 107 0.774681 172.16.1.10 117 0.841289 193.146.95.50 126 1.105110 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 87 134 1.461001 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 89 137 1.505319 172.16.1.6 172.16.1.10 138 1.505361 172.16.1.6 193.146.95.50 139 1.505392 172.16.1.6 220.254.20.164 140 1.505496 172.16.1.10 141 1.508053 172.16.1.6 193.146.95.50 142 1.508095 172.16.1.6 220.254.20.164 143 1.508127 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 97 144 1.508235 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 97 145 1.572886 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 96 147 1.576190 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 97 175 1.882501 172.16.1.6 220.254.20.164 176 1.882542 172.16.1.6 172.16.1.10 177 1.882563 172.16.1.6 193.146.95.50 178 1.882716 172.16.1.10 179 1.887157 ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP ICP ICP ICP ICP ICP ICP Opcode: ICP_QUERY (1), Req Nr: 95 Opcode: ICP_QUERY (1), Req Nr: 95 Opcode: ICP_QUERY (1), Req Nr: 95 Opcode: ICP_MISS (3), Req Nr: 95 Opcode: ICP_MISS (3), Req Nr: 95 Opcode: ICP_QUERY (1), Req Nr: 96 Opcode: ICP_QUERY (1), Req Nr: 96 Opcode: ICP_QUERY (1), Req Nr: 96 Opcode: ICP_MISS (3), Req Nr: 96 Opcode: ICP_QUERY (1), Req Nr: 97 Opcode: ICP_QUERY (1), Req Nr: 97 Opcode: ICP_QUERY (1), Req Nr: 98 Opcode: ICP_QUERY (1), Req Nr: 98 Opcode: ICP_QUERY (1), Req Nr: 98 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 98 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 99 180 1.887196 172.16.1.6 193.146.95.50 181 1.887217 172.16.1.6 220.254.20.164 182 1.887268 172.16.1.10 183 1.901887 172.16.1.6 193.146.95.50 184 1.901929 172.16.1.6 220.254.20.164 172.16.1.6 ICP ICP ICP 15 ICP ICP Opcode: ICP_QUERY (1), Req Nr: 99 Opcode: ICP_QUERY (1), Req Nr: 99 Opcode: ICP_MISS (3), Req Nr: 99 Opcode: ICP_QUERY (1), Req Nr: 100 Opcode: ICP_QUERY (1), Req Nr: 100 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo 185 1.901951 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 100 186 1.902068 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100 188 1.949582 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 98 190 1.954109 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 99 191 1.968175 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100 221 2.242718 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 96 224 2.244791 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 97 229 2.264353 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 101 230 2.264383 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 101 231 2.330102 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 101 236 2.624775 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 102 237 2.624805 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 102 238 2.679557 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 98 239 2.683286 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 99 240 2.691326 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100 241 2.692708 193.146.95.50 249 3.073764 220.254.20.164 172.16.1.6 ICP 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 102 Opcode: ICP_MISS (3), Req Nr: 101 Hermano .com 1 0.000000 172.16.1.6 193.146.95.50 ICP 2 0.000032 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 103 3 0.000770 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 103 4 0.069223 193.146.95.50 172.16.1.6 18 0.981715 172.16.1.6 172.16.1.10 19 0.981754 172.16.1.6 193.146.95.50 20 0.981913 172.16.1.10 21 1.049196 193.146.95.50 55 1.637087 172.16.1.6 172.16.1.10 56 1.637118 172.16.1.6 193.146.95.50 57 1.637274 172.16.1.10 62 1.709727 193.146.95.50 66 1.831129 ICP ICP ICP 172.16.1.6 ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP Opcode: ICP_QUERY (1), Req Nr: 103 Opcode: ICP_MISS (3), Req Nr: 103 Opcode: ICP_QUERY (1), Req Nr: 104 Opcode: ICP_QUERY (1), Req Nr: 104 Opcode: ICP_MISS (3), Req Nr: 104 Opcode: ICP_MISS (3), Req Nr: 104 Opcode: ICP_QUERY (1), Req Nr: 105 Opcode: ICP_QUERY (1), Req Nr: 105 Opcode: ICP_MISS (3), Req Nr: 105 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 105 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 106 67 1.831171 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 106 68 1.831361 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 106 70 1.904041 193.146.95.50 75 2.029253 172.16.1.6 172.16.1.10 76 2.029292 172.16.1.6 193.146.95.50 77 2.029446 172.16.1.10 78 2.031097 172.16.1.6 ICP ICP ICP Opcode: ICP_MISS (3), Req Nr: 106 Opcode: ICP_QUERY (1), Req Nr: 107 Opcode: ICP_QUERY (1), Req Nr: 107 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 107 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 108 79 2.031136 172.16.1.6 193.146.95.50 80 2.031207 172.16.1.10 ICP 172.16.1.6 ICP 16 Opcode: ICP_QUERY (1), Req Nr: 108 Opcode: ICP_MISS (3), Req Nr: 108 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas ICP David Jesús Horat Flotats Enrique Fernández Perdomo 81 2.041328 172.16.1.6 193.146.95.50 82 2.041370 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 109 83 2.041520 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 109 84 2.043736 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 110 85 2.043775 172.16.1.6 193.146.95.50 86 2.043843 172.16.1.10 87 2.094220 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 107 89 2.095506 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 108 91 2.107428 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 109 93 2.108426 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 110 ICP 172.16.1.6 ICP ICP Opcode: ICP_QUERY (1), Req Nr: 109 Opcode: ICP_QUERY (1), Req Nr: 110 Opcode: ICP_MISS (3), Req Nr: 110 105 2.206639 172.16.1.6 172.16.1.10 106 2.206677 172.16.1.6 193.146.95.50 107 2.206830 172.16.1.10 112 2.243211 172.16.1.6 193.146.95.50 113 2.243255 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 112 114 2.243438 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 112 115 2.273939 193.146.95.50 119 2.297607 172.16.1.6 172.16.1.10 120 2.297649 172.16.1.6 193.146.95.50 121 2.297805 172.16.1.10 122 2.311048 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 112 125 2.366368 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 113 129 2.398897 172.16.1.6 172.16.1.10 130 2.398939 172.16.1.6 193.146.95.50 131 2.399087 172.16.1.10 133 2.421558 172.16.1.6 193.146.95.50 134 2.421600 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 115 135 2.421774 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 115 139 2.464199 193.146.95.50 143 2.476763 172.16.1.6 172.16.1.10 144 2.476805 172.16.1.6 193.146.95.50 145 2.476956 172.16.1.10 146 2.486737 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 115 149 2.544076 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 116 154 2.575494 172.16.1.6 172.16.1.10 155 2.575534 172.16.1.6 193.146.95.50 156 2.575684 172.16.1.10 158 2.595991 172.16.1.6 193.146.95.50 159 2.596035 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 118 160 2.596198 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 118 163 2.643123 193.146.95.50 167 2.654189 172.16.1.6 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP 172.16.1.10 ICP 17 Opcode: ICP_QUERY (1), Req Nr: 111 Opcode: ICP_QUERY (1), Req Nr: 111 Opcode: ICP_MISS (3), Req Nr: 111 Opcode: ICP_QUERY (1), Req Nr: 112 Opcode: ICP_MISS (3), Req Nr: 111 Opcode: ICP_QUERY (1), Req Nr: 113 Opcode: ICP_QUERY (1), Req Nr: 113 Opcode: ICP_MISS (3), Req Nr: 113 Opcode: ICP_QUERY (1), Req Nr: 114 Opcode: ICP_QUERY (1), Req Nr: 114 Opcode: ICP_MISS (3), Req Nr: 114 Opcode: ICP_QUERY (1), Req Nr: 115 Opcode: ICP_MISS (3), Req Nr: 114 Opcode: ICP_QUERY (1), Req Nr: 116 Opcode: ICP_QUERY (1), Req Nr: 116 Opcode: ICP_MISS (3), Req Nr: 116 Opcode: ICP_QUERY (1), Req Nr: 117 Opcode: ICP_QUERY (1), Req Nr: 117 Opcode: ICP_MISS (3), Req Nr: 117 Opcode: ICP_QUERY (1), Req Nr: 118 Opcode: ICP_MISS (3), Req Nr: 117 Opcode: ICP_QUERY (1), Req Nr: 119 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas 168 2.654231 172.16.1.6 193.146.95.50 169 2.654431 172.16.1.10 170 2.662018 193.146.95.50 174 2.695564 172.16.1.6 172.16.1.10 175 2.695601 172.16.1.6 193.146.95.50 176 2.695748 172.16.1.10 178 2.719482 193.146.95.50 183 2.753764 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP David Jesús Horat Flotats Enrique Fernández Perdomo Opcode: ICP_QUERY (1), Req Nr: 119 Opcode: ICP_MISS (3), Req Nr: 119 Opcode: ICP_MISS (3), Req Nr: 118 Opcode: ICP_QUERY (1), Req Nr: 120 Opcode: ICP_QUERY (1), Req Nr: 120 Opcode: ICP_MISS (3), Req Nr: 120 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 119 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 121 184 2.753806 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 121 185 2.753986 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 121 186 2.761255 193.146.95.50 189 2.773491 172.16.1.6 172.16.1.10 190 2.773531 172.16.1.6 193.146.95.50 191 2.773689 172.16.1.10 194 2.820352 193.146.95.50 198 2.833751 172.16.1.6 172.16.1.10 199 2.833785 172.16.1.6 193.146.95.50 200 2.833941 172.16.1.10 201 2.838678 193.146.95.50 204 2.871813 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP ICP Opcode: ICP_MISS (3), Req Nr: 120 Opcode: ICP_QUERY (1), Req Nr: 122 Opcode: ICP_QUERY (1), Req Nr: 122 Opcode: ICP_MISS (3), Req Nr: 122 Opcode: ICP_MISS (3), Req Nr: 121 Opcode: ICP_QUERY (1), Req Nr: 123 Opcode: ICP_QUERY (1), Req Nr: 123 Opcode: ICP_MISS (3), Req Nr: 123 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 122 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 124 205 2.871855 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 124 206 2.872030 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 124 208 2.898910 193.146.95.50 213 2.933488 172.16.1.6 220.254.20.164 214 2.933528 172.16.1.6 172.16.1.10 215 2.933549 172.16.1.6 193.146.95.50 216 2.933718 172.16.1.10 220 2.939842 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 124 243 3.003337 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 125 248 3.514946 172.16.1.6 172.16.1.10 249 3.514979 172.16.1.6 193.146.95.50 250 3.515118 172.16.1.10 252 3.584440 193.146.95.50 255 3.904472 220.254.20.164 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP ICP 172.16.1.6 ICP ICP 172.16.1.6 ICP 172.16.1.6 ICP 18 Opcode: ICP_MISS (3), Req Nr: 123 Opcode: ICP_QUERY (1), Req Nr: 125 Opcode: ICP_QUERY (1), Req Nr: 125 Opcode: ICP_QUERY (1), Req Nr: 125 Opcode: ICP_HIT (2), Req Nr: 125 Opcode: ICP_QUERY (1), Req Nr: 126 Opcode: ICP_QUERY (1), Req Nr: 126 Opcode: ICP_MISS (3), Req Nr: 126 Opcode: ICP_MISS (3), Req Nr: 126 Opcode: ICP_MISS (3), Req Nr: 125 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Configuración de un Navegador Web Gráfico para que use el Proxy Antes de realizar la configuración del proxy probamos si al navegar podemos acceder a las páginas prohibidas por nuestro Proxy, como es el caso de www.playboy.com. Si intentamos el acceso, comprobamos como la conexión se realiza, tal y como se ve en la Ilustración 1, que se ha detenido antes de que se cargue la página por completo. Illustración 1: Acceso a www.playboy.com (detenido antes de entrar completamente) Para configura el navegador web para que haga uso de nuestro proxy, que en este caso se trata del Firefox, seguiremos los siguientes pasos: 1. Ir a Edit-->Preferences. 19 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo El cuadro del diálogo al que accederemos tras acceder por el menú indicado, es el que se ve en la Ilustración 2. Illustración 2: Cuadro de Diálogo de Preferencias del navegador web Firefox 2. Ir a Connection Settings Picando en Connection Settings, que se ven el cuadro de diálogo Preferencias de la Ilustración 2, accederemos a la configuración de la conexión, donde se configura, entre otros parámetros el proxy a usar, en caso de usarse alguno, como es nuestro caso. El cuadro de diálogo que se nos abre para configurar la conexión es el de 20 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo la Ilustración 3, que se ve en el último punto, pues es ahí donde se configura el proxy para nuestro servidor proxy en concreto. 3. Configurar el proxy poniendo: El cuadro de diálogo de configuración de la conexión se ve en la Ilustración 3, en la que ya se ha aplicado la configuración apropiada para que Firefox haga uso de nuestro proxy, cuya IP es la 172.16.6.1 y que escucha por el puerto 3128, es decir, los parámetros son los siguientes: HTTP Proxy: 172.16.6.1Port: 3128 Visto gráficamente, lo tenemos en la Ilustración 3. Illustración 3: Configuración de la Conexión para nuestro proxy 21 Práctica 6: Puesta en marcha de un servidor proxy Arquitectura de Sistemas y Aplicaciones Distribuidas David Jesús Horat Flotats Enrique Fernández Perdomo Una vez realizado el proceso de configuración habrá que Aceptar (OK) todos los cuadros de diálogo. Esto aplicará la configuración. Ahora podemos probar de nuevo el acceso a una página prohibida por nuestro servidor proxy. Volvemos a intentar acceder a www.playboy.com y el resultado es el de la Ilustración 4. Illustración 4: Navegación usando el proxy. Denagación de acceso a www.playboy.com En lugar de producirse el acceso a www.playboy.com como en el caso anterior, en el que no se usaba el proxy configurado por nosotros, se produce un error. Esto es debido a que el proxy deniega el acceso a www.playboy.com, pues está prohibida. En su lugar, el proxy de squid manda al navegador una página de error que es la que se ha mostrado en la Ilustración 4. 22