Documento original en: asociacionjuvenilelcueto.info/node/156
En este apartado se detalla la configuración de un ordenador para que sirva como servidor de distintos servicios útiles para la red libre.
Parte de la información para redactar este manual ha sido obtenida de los siguientes lugares:
A falta de un ordenador nuevo, se usará provisionalmente un equipo viejo reciclado para tal propósito. Sus características corresponden a un Pentium 3 a 667 MHz con 64 MB de memoria RAM y disco duro de 40 GB. Hará falta añadir una nueva tarjeta de red ethernet, salvo que se cree una interfaz virtualizada.
Partimos de una instalación mínima del sistema operativo Debian, con el disco duro particionado mediante LVM (esto nos permitirá más adelante redimensionar o ampliar particiones sin problemas). Los servicios que necesitamos instalar son el servidor proxy y el servidor de gráficas, con todos sus requerimientos (servidor web, etc.). A partir de ahí se pueden instalar los servicios que consideremos oportunos.
Se supone que, como se ha explicado en un apartado anterior, tenemos creados en guifi.net tanto el dispositivo correspondiente al servidor como los servicios necesarios.
Instalamos algunos paquetes que nos pueden ser de utilidad en el servidor:
apt-get install lynx links2 openssh-server wakeonlan ethtool
Para que todo funcione correctamente, nuestro servidor debe tener bien configuradas las interfaces de red. En Debian, nada más sencillo que editar el fichero /etc/network/interfaces. Si tenemos una tarjeta de red conectada al router ADSL y la otra al routerboard del nodo guifi.net, la cosa quedaría así:
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 192.168.1.20 #Por poner una válida
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255
iface eth1 inet static
address 10.34.192.34 # Dirección asignada al servidor en la web
netmask 255.255.255.224 # Máscara asignada para el servidor en la web
gateway 10.34.192.33 # Dirección asignada al routerboard en la web
network 10.34.192.32 # De acuerdo a la dirección del routerboard y la máscara
broadcast 10.34.192.63 # De acuerdo a la dirección del routerboard y la máscara
up ip route add 10.0.0.0/8 via 10.34.192.33 # Importante añadir esta ruta
Es el servicio esencial para que los usuarios de la red puedan acceder a Internet desde la misma. Una vez instalado, los usuarios solo necesitarán una URL o dirección IP y un puerto para poder configurar sus navegadores para que puedan acceder a internet.
La configuración del proxy es aproximadamente la que se muestra en la siguiente imagen:
Esquema de conexión de un servidor proxy (fuente)
Una de las interfaces de red irá conectada al router ADSL y la otra a un concentrador de la red interna libre, en principio al routerboard del nodo en cuestión.
Todos los paquetes requeridos están disponibles en Debian, salvo webmin. Lo instalaremos desde su repositorio:
echo "deb http://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list
Instalamos la clave GPG del repositorio:
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
Y actualizamos:
apt-get update
Ahora ya podemos instalar todos los paquetes requeridos:
apt-get install squid sarg webmin apache2 webalizer
Generamos un certificado:
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
Cargamos el módulo SSL del Apache:
a2enmod ssl
Y lo reiniciamos para que cargue el módulo:
/etc/init.d/apache2 force-reload
Una vez tenemos instalado el paquete, podemos acceder a su configuración desde un navegador:
lynx https://127.0.0.1:10000/
Accederemos como nuestro usuario de Linux. En el menú de la izquierda vamos a "Webmin - Change Language and Theme" para ponerlo en español.
Primero creamos un directorio que nos hará falta más adelante:
mkdir /usr/etc/
touch /usr/etc/passwd
Accederemos desde otro ordenador que tenga entorno de escritorio a la URL de webmin (https://ip_de_la_maquina:1000). Lo primero es refrescar el estado de los módulos:
A continuación accedemos a "Servidores - Squid - Servidor Proxy - Programas de autentificación". Ahí añadimos en "Programa de autenticación básica", /usr/lib/squid/ncsa_auth /usr/etc/passwd y los siguientes valores marcados en la imagen:
Clicamos en "Aplicar los cambios", arriba a la derecha, para guardar.
En "Servidores - Squid - Servidor Proxy - Control de acceso", clicamos en el botón de "Crear nueva ACL", con el menú desplegable marcado con "Autentificación Externa" y le damos el nombre usuarios_autentificados.
Ahora en "Servidores - Squid - Servidor Proxy - Control de acceso", vamos a la pestaña "Restricciones del proxy" y añadimos una nueva que permita los usuarios_autentificados.
Es importante el orden en que aparecen listadas las restricciones, por lo que debemos subir la nueva por encima de la que deniega todo.
Por último, debemos clicar en "Aplicar los cambios", arriba a la derecha.
Desde el webmin, podemos acceder a "Servidores - Generador de Informes de Análisis de Squid" y generar un informe para visualizar las estadísticas.
Para que otros usuarios de proxys federados puedan conectarse al nuestro necesitamos tener una lista actualizada de los mismos con sus contraseñas. Para ello crearemos un script que la descargue periódicamente de guifi.net mediante cron. El código del script es el siguiente:
#!/bin/sh
wget http://www.guifi.net/es/node/00000/view/federated -qO /tmp/passwd
touch /usr/etc/passwd
NEW=`diff /usr/etc/passwd /tmp/passwd|wc -l`
#OK=`grep Federated /tmp/passwd|wc -l`
#if [ $OK != "0" ]; then
if [ $NEW != "0" ]; then
cp /tmp/passwd /usr/etc/
/etc/init.d/squid reload
echo "Nuevo /usr/etc/passwd copiado"
fi;
#fi
Donde debemos sustituir el "00000" por el número de nodo correspondiente a nuestro proxy. Lo guardamos como proxypasswd.sh, le damos permisos de ejecución y lo copiamos a una ruta dentro del PATH.
chmod 755 proxypasswd.sh
mv proxypasswd.sh /usr/bin/proxypasswd.sh
Nos queda automatizar el proceso de recuperación de usuarios. Para ello usaremos cron.
crontab -e
Nos abre un archivo de texto donde están las entradas de los procesos periódicos del sistema. Añadimos la siguiente línea:
54 * * * * /usr/bin/proxypasswd.sh
Y reiniciamos cron para que tenga en cuenta los cambios (aunque no es estrictamente necesario):
/etc/init.d/cron restart
Creamos los directorios necesarios:
mkdir /var/www/webalizer/apache
mkdir /var/www/webalizer/squid
Y lo configuramos mediante webmin:
https://127.0.0.1:10000/
En "Servidores - Webalizer - Análisis de Históricos (Logs)" tenemos que editar dos logs pinchando en ellos:
Escribir informe en directorio: /var/www/webalizer/apache
Generación de informe planificada: Habilitado, a las horas escogidas abajo ..
Escribir informe en directorio: /var/www/webalizer/squid
Generación de informe planificada: Habilitado, a las horas escogidas abajo ..
Es necesario para la plataforma de gestión de guifi.net, de manera que se puedan mostrar gráficas y estadísticas de tráfico de la red en su interfaz. Es una herramienta esencial para llevar a cabo un seguimiento de la evolución de la red y detectar en qué momento y lugar es necesario ampliarla.
Ejemplo de gráfica
El software que genera las gráficas es el paquete llamado snpservices. Lo descargamos desde (versión más reciente a 23/09/2009):
wget http://trac.guifi.net/trac/export/759/guifi/tools/packaging/debian/snpservices/snpservices_0.2.0-2_all.deb
o de aqui:
wget http://repo.vic.guifi.net/debian/snpservices_0.2.0-2_all.deb
Tras descargar el paquete, lo instalamos:
dpkg -i snpservices_0.2.0-2_all.deb
Nos dará error de dependencias. Las instalamos:
apt-get -f install
La instalación nos pedirá que introduzcamos el ID del servidor de gráficas. Ese número lo obtendremos del nodo que hemos creado en la web, en este caso de guifi.net/es/node/24562, es decir, 24562 (para otros lugares será un número distinto).
También nos preguntará si queremos recuperar en este momento el archivo mrtg.cfg. Aceptamos. Una vez instalado no tendremos que configurar nada más en el servidor, comenzará a servir gráficas inmediatamente.
Debemos modificar el nodo del servicio de gráficas para añadirle la URL del mismo, que será del tipo maquina/snpservices. También hay que establecer la versión 2.0.
El Network Time Protocol es un protocolo de protocolo de sincronización de relojes entre máquinas conectadas a una red. En la red libre es usado para mantener todos los equipos con la misma hora que las estadísticas y logs sean congruentes.
Su instalación es sencilla:
apt-get install ntp
Permitimos a las IP de la red acceder al servidor:
echo "#guifi.net users" >> /etc/ntp.conf
echo "restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap" >> /etc/ntp.conf
Iniciamos el servidor y comprobamos que se ha sincronizado:
/etc/init.d/ntp start
ntpq -p
Y ya lo tenemos listo. Si en algún momento queremos usar el servicio desde otro equipo, hacemos:
ntpdate -u ip_del_servidor
Nos podría interesar en algún momento poder encender el ordenador de manera remota, por ejemplo tras un corte de luz. Aquí un buen artículo que explica como hacerlo:
miblockdenotix.wordpress.com/2008/09/17/wake-on-lan-wol-en-ubuntu/
Si solo tenemos una tarjeta de red en el dispositivo podemos conectarlo tanto al ADSL como a la red libre asignando dos IP a la misma interfaz. Para ello podemos utilizar el programa IPRoute2.
Instalamos dependencias:
apt-get install flex bison libdb-dev
Descargamos la versión de IPRoute2 correspondiente a nuestro kernel (usar uname -r para determinar la versión):
wget http://devresources.linux-foundation.org/dev/iproute2/download/iproute2-2.6.28.tar.bz2
Descomprimimos y compilamos:
tar jvxf iproute2-2.6.28.tar.bz2
cd iproute2-2.6.28
make
make install
Una vez instalado, ya podemos usar las utilidades del programa.
ip addr show
Vemos las interfaces configuradas. Tomando la de nuestra tarjeta de red (que suponemos configurada en la LAN del router ADSL como 192.168.1.2 o similar), añadimos la nueva IP correspondiente al servidor de la red libre:
ip addr add 10.34.193.3/27 broadcast + dev eth0
La IP y máscara de subred las tomamos del dispositivo correspondiente del nodo, en este caso de guifi.net/es/guifi/device/16811. Podemos comprobar que las rutas se han actualizado también con:
ip route show
Una manera más sencilla y rápida de crear la IP virtual es usando webmin. En "Red - Configuración de Red - Interfaces" seleccionamos la que queremos modificary clicamos en "Agregar interfaz virtual". Basta con rellenar los campos como en la imagen y guardar.
Tal vez puede ser útil acceder remotamente a nuestro routerboard con winbox. Para ello hay que habilitar la ejecución de las X de manera remota. Editamos /etc/ssh/ssh_config y descomentamos la siguiente línea:
ForwardX11Trusted yes
Reiniciamos el servicio:
/etc/init.d/ssh restart
La próxima vez que accedamos lo haremos añadiendo la opción -X al comando ssh.
ssh ip_maquina -l usuario -X
A continuación instalamos wine:
apt-get install wine
Y descargamos el ejecutable de winbox:
wget http://demo.mt.lv/winbox/winbox.exe
Ya podemos ejecutarlo como si estuviera en nuestro ordenador:
wine ./winbox.exe
Hay que tener en cuenta que para no tener problemas debemos conectar al routerboard mediante IP y no mediante MAC. Además el servidor debería tener un ADSL con velocidad de subida razonablemente alta para no desesperar con cada clic.