Los servidores proxy de guifi.net son el caramelito para la expansión de esta red, estos servidores se usan en la red para compartir la conexión a internet con el resto de usuarios de la red guifi.
Este servidor proxy es un squid de toda la vida pero con unas modificaciones para que pueda leer la lista de usuarios en la web de guifi y permita cargarlos.
Esta instalación se ha hecho en una debian etch (old stable), pero para versiones mas nuevas es posible que la configuración sea similar. Por suerte tenemos unos super empaquetadores de paquetes que nos han facilitado esta tarea creando un paquete .deb que dejará el proxy up and running.
Para añadir los sources del repositorio apt de guifi editamos el fichero /etc/apt/sources.list y añadimos estas líneas al final.
#repo guifi deb http://repo.vic.guifi.net/debian/ ./
Y actualizamos el listado de los repositorios e instalamos el paquete guifi-proxy:
# apt-get update # apt-get install guifi-proxy
Nos pregunta algunas cosas, como la “web base” dejamos la que hay (www.guifi.net).
Guifi Proxy node number: esto tendremos que ir a la web de guifi y crear un nuevo contenido llamado guifi.net service, donde indicamos que queremos crear un servidor proxy y a qué máquina la vinculamos (recuerdo que la máquina tiene que estar creada previamente en el nodo/supernodo correspondiente). El numero que nos pide esta pantalla es el mismo que sale en la url o los numeros iniciales en el campo servicio. Importante tras crear el proxy acabar de configurarlo, indicandole el nombre (yo he puesto la ip porque es lo que se ve primero al acceder a la página del proxy y si no sabes ni siquiera un numero de DNS no puedes resolver el nombre de dominio interno) y el puerto, además del ancho de banda disponible. Con esto federamos este proxy.
A continuación nos pide “Force to fetch passwd file now.“, le indicamos “Yes”. Esto se va a descargar la versión actual de usuarios de proxy creados en la web de guifi, de esta forma cualquier usuario de guifi sea cual sea su ubicación o donde tenga montado su nodo podrá acceder a este proxy.
Dejo a continuación el log que ha dejado la instalación:
fermat:/etc/squid# apt-get install guifi-proxy Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: sarg Suggested packages: squidguard The following NEW packages will be installed: guifi-proxy sarg 0 upgraded, 2 newly installed, 0 to remove and 24 not upgraded. Need to get 573kB of archives. After this operation, 1470kB of additional disk space will be used. Do you want to continue [Y/n]? WARNING: The following packages cannot be authenticated! guifi-proxy Install these packages without verification [y/N]? y Get:1 http://ftp.de.debian.org lenny/main sarg 2.2.5-2 [568kB] Get:2 http://repo.vic.guifi.net ./ guifi-proxy 0.0.2 [4852B] Fetched 573kB in 3s (177kB/s) Preconfiguring packages ... Selecting previously deselected package sarg. (Reading database ... 49098 files and directories currently installed.) Unpacking sarg (from .../archives/sarg_2.2.5-2_i386.deb) ... Selecting previously deselected package guifi-proxy. Unpacking guifi-proxy (from .../guifi-proxy_0.0.2_all.deb) ... Processing triggers for man-db ... Setting up sarg (2.2.5-2) ... Setting up guifi-proxy (0.0.2) ... Creating config file /etc/guifi-proxy/config.sh with new version Fetching passwd file. ... --2011-02-19 21:03:32-- http://www.guifi.net/guifi/export/36508/federated_md5 Resolving www.guifi.net... 77.246.179.62 Connecting to www.guifi.net|77.246.179.62|:80... connected. HTTP request sent, awaiting response... 302 Found Location: http://guifi.net/guifi/export/36508/federated_md5 [following] --2011-02-19 21:03:32-- http://guifi.net/guifi/export/36508/federated_md5 Resolving guifi.net... 77.246.179.61 Connecting to guifi.net|77.246.179.61|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 32 [text/plain] Saving to: `/tmp/passwd_web_md5.txt' 100%[======================================>] 32 --.-K/s in 0s 2011-02-19 21:03:33 (1.89 MB/s) - `/tmp/passwd_web_md5.txt' saved [32/32] [Sat, 19 Feb 2011 21:03:33 +0100] - Different Hash, New Passwd File --2011-02-19 21:03:33-- http://www.guifi.net/guifi/export/36508/federated Resolving www.guifi.net... 77.246.179.62 Connecting to www.guifi.net|77.246.179.62|:80... connected. HTTP request sent, awaiting response... 302 Found Location: http://guifi.net/guifi/export/36508/federated [following] --2011-02-19 21:03:33-- http://guifi.net/guifi/export/36508/federated Resolving guifi.net... 77.246.179.61 Connecting to guifi.net|77.246.179.61|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 108 [text/plain] Saving to: `/tmp/passwd' 100%[======================================>] 108 --.-K/s in 0s 2011-02-19 21:03:34 (8.17 MB/s) - `/tmp/passwd' saved [108/108] [Sat, 19 Feb 2011 21:03:34 +0100] - Download OK, copying Passwd file to /etc/guifi-proxy/passwd Reloading Squid configuration files. done.
Si investigamos un poco veremos que ha creado un montón de ficheros de configuración en /etc/squid/, el motivo es que ha instalado el sarg, un programa que permite ver vía web unas estadísticas globales del uso del servidor.
Por otra parte nos preguntamos como lo hace el servidor proxy para descargar los usuarios federados. La cosa es que se crean algunos directorios adicionales en /etc/guifi-proxy/ y /usr/share/guifi-proxy/.
El script que hace todo el trabajo pues vive en /usr/share/guifi-proxy/guifi-proxy.sh (siendo el fichero guifi-proxy de /etc/guifi-proxy el que manda con la configuración). Este script se descarga los usuarios, los guarda a los ficheros de password del directorio guifi-proxy y reinicia el squid.
Este script se ejecuta cada hora:
fermat:/etc/guifi-proxy# cat /etc/cron.d/guifi-proxy # # Regular cron jobs for the guifi-proxy package # 55 * * * * root /usr/share/guifi-proxy/guifi-proxy.sh >> /var/log/guifi-proxy/guifi-proxy.log 2>&1;
Si el servidor proxy funciona pero no pide el nombre de usuario y contraseña verificad que no falte alguna de estas cosas:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/guifi-proxy/passwd auth_param basic children 5 auth_param basic realm proxy BCNrosello208 auth_param basic credentialsttl 2 hours auth_param basic casesensitive off acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network # acl SSL_ports port 443 # https acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost localnet http_access deny manager # Only allow purge requests from localhost http_access allow purge localhost localnet http_access deny purge # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports # # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost acl usuarios_autenticados proxy_auth REQUIRED http_access allow usuarios_autenticados # And finally deny all other access to this proxy http_access deny all #Allow ICP queries from local networks only icp_access allow localnet icp_access deny all # Squid normally listens to port 3128 http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|?) 0 0% 0 refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] upgrade_http0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT hosts_file /etc/hosts coredump_dir /var/spool/squid
Gracias tonic para el cacho fichero de configuración de squid!
En este punto ya tenemos el servidor proxy federado de guifi.net funcionando. Pero ahora mismo ofrecemos barra libre de ancho de banda y esto puede hacer que la conexión a internet quede muy colapsada o incluso deje de funcionar, así que se recomienda activar los delay pools (link en catalán). En pocos rasgos, los delay pool permiten gestionar las conexiones en celdas y lo que tenemos que hacer es limitar el numero de celdas a usar.
Pues venga, compartir es bueno :)
;)
;)
creo que las líneas “http_access” con localhost y localnet no funcionan, porque lo que hace squid es aplicar un AND entre los dos parámetros, y no puede suceder que la petición sea de localhost y de localnet a la vez, aquí lo explican mejor que yo:
http://wiki.squid-cache.org/SquidFaq/SquidAcl#line-223
aunque no lo he probado aun!