Configurar servidor amb debian/ubuntu

Us copio un article de edmont, que ès molt útil per muntar un proxy amb serveis per www.guifi.net, aqui podeu trobar l’original.

Configuración de un servidor

Introducción

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:

Clica a”read more” per veure l’article complert 

Configuración del ordenador

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.

Paquetes útiles

Instalamos algunos paquetes que nos pueden ser de utilidad en el servidor:

apt-get install lynx links2 openssh-server wakeonlan ethtool

Configuración de red

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

Servidor proxy

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:

Proxy

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.

Instalación del software

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

Configuración del software

Apache

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

Webmin

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 “WebminChange Language and Theme” para ponerlo en español.

Squid

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:

Refresh modules

Programas de autentificación

A continuación accedemos a “ServidoresSquid – Servidor ProxyProgramas 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:

Autenticación squid

Clicamos en “Aplicar los cambios“, arriba a la derecha, para guardar.

Control de acceso

En “ServidoresSquid – 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 “ServidoresSquid – Servidor Proxy – Control de acceso”, vamos a la pestaña “Restricciones del proxy” y añadimos una nueva que permita los usuarios_autentificados.

Restricciones del proxy

Es importante el orden en que aparecen listadas las restricciones, por lo que debemos subir la nueva por encima de la que deniega todo.

Lista restricciones

Por último, debemos clicar en “Aplicar los cambios“, arriba a la derecha.

Sarg

Desde el webmin, podemos acceder a “ServidoresGenerador de Informes de Análisis de Squid” y generar un informe para visualizar las estadísticas.

Federación del proxy

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:

wget –timeout=240 http://www.guifi.net/es/node/00000/view/federated -qO /tmp/passwd
touch /usr/etc/passwd
OK=`cat /tmp/passwd|wc -l`
NEW=`diff /usr/etc/passwd /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

Webalizer

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:

  • /var/log/apache2/access.log

Escribir informe en directorio:     /var/www/webalizer/apache

Generación de informe planificada:     Habilitado, a las horas escogidas abajo ..

  • /var/log/squid/access.log

Escribir informe en directorio:     /var/www/webalizer/squid

Generación de informe planificada:     Habilitado, a las horas escogidas abajo ..

Servidor de gráficas

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

Ejemplo de gráfica

Software necesario

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://www.samaniego.cat/fitxers/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.

Servidor NTP

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

Extras

Encendido remoto

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/

IP virtual

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.

Instalación

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

Configuración

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

IP virtual con webmin

Una manera más sencilla y rápida de crear la IP virtual es usando webmin. En  “RedConfiguración de RedInterfaces” seleccionamos la que queremos modificary clicamos en “Agregar interfaz virtual“. Basta con rellenar los campos como en la imagen y guardar.

Agregar interfaz virtual

Ejecutar winbox en remoto por ssh

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. En el servidor, 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 en la máquina cliente.

ssh ip_maquina -l usuario -X

A continuación instalamos wine en el servidor:

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.

Ejecutar winbox en local a través de un túnel

Otra forma de ejecutar winbox, con mejor rendimiento, es hacer un túnel del puerto de winbox entre nuestra máquina cliente y un servidor que esté dentro de la red guifi.net a la que queramos acceder. Simplemente ejecutamos en una terminal de nuestra máquina:

ssh -L 8291:ip_mikrotik:8291 usuario@url_servidor

A continuación ejecutamos winbox.exe con wine y accedemos a la IP 127.0.0.1. Ya estamos dentro del Mikrotik con el que hayamos creado el túnel. La ventaja es que con este método solo se intercambian los datos necesarios con el Mikrotik, no toda la interfaz gráfica del winbox, con lo que irá mucho mejor con conexiones lentas.

Hub de Direct Connect

La mejor manera de compartir archivos dentro de la red es a través de DC++. En Debian, la instalación de un hub es sencilla:

apt-get install opendchub

Ejecutamos por primera vez y establecemos el puerto de escucha al 4747 y las contraseñas para el hub:

opendchub

Editamos su configuración (hay que hacerlo con el programa sin ejecutar, para que se guarde bien):

nano /root/.opendchub/config

Donde deberíamos cambiar las variables hub_name, max_users, min_share, public_hub_host y hub_hostname.

Por último, para que se ejecute tras un reinicio, añadimos el comando opendchub al fichero /etc/rc.local.

AirControl

AirControl es una herramienta de Ubiquiti que permite tener un control centralizado de todos los dispositivos Ubiquiti de nuestra red. Nos puede ser muy útil si tenemos instalados muchos Nanostation o Nanostation Loco, como suele ser lo habitual. De momento está en versión beta y se puede descargar desde un enlace en foro de soporte de Ubiquiti.

Una vez obtenido el paquete lo instalamos:

dpkg -i aircontrol-1.0.04-beta.deb

Nos hará falta también Java:

apt-get install java-common

Tras instalar (especificando la contraseña de administrador) nos da error al tratar de arrancar. Para solucionarlo editamos /etc/init.d/aircontrol y sustituimos la línea:

JAVA_HOME=/usr/lib/jvm/java-6-sun

Por:

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

Ya podemos arrancar el servicio:

/etc/init.d/aircontrol

Para usarlo accedemos con el navegador a la IP de nuestra máquina, puerto 9080. Como usuario ponemos ubnt y contraseña la que hayamos especificado en la instalación.

Una vez en el entorno podemos añadir dispositivos escaneando un rango de IPs y una vez conectados a ellos (se puede hacer de golpe si todos tienen mismo usuario y contraseña) actualizarle la versión de firmware que previamente hayamos descargado de la página de Ubiquiti y elegir los datos que queremos que se nos muestren en el listado.

Más información sobre AirControl.

Share

2 pensaments a “Configurar servidor amb debian/ubuntu

  1. A vegades les coses més simples són les que més costa trobar…. per això les solo guardar al blog que així no les perdo… Salut !

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.