Hemen zaude: Hasiera Comunidad Documentación Guías Servidor para install partys

Servidor para install partys

Instalar y configurar un servidor con ip masquerading, dns-cache, dhcp, cacheo de dns y repositorio de Debian GNU/Linux paso a paso.

Copyrigth y Licencia

Copyright (c) 2007-2008 Ales Zabala Alava <shagi@gisa-elkartea.org>, Maider Likona Santamarina <pisoni@gisa-elkartea.org>

Es posible copiar, distribuir y/o modificar éste documento bajo los términos de la FDL (Free Documentation License), versión 1.2 o posterior.

Introducción

Para la install party del Openaldia 2007 (Un festival de software libre de Donostia) nos encontramos con las siguientes necesidades:

  • Había que montar una red local, simplificando al máximo su uso.
  • Todos los asistentes debían tener conexión a Internet.
  • No había mucho ancho de banda, por lo que fue necesario minimizar el tráfico de descarga.
  • Necesitaríamos acceso a un repositorio para tener todos los programas posibles accesibles. Descargarlo directamente de Internet lo ralentizaría mucho. Además al tener un repositorio luego podríamos generar de manera sencilla CDs o DVDs de Debian GNU/Linux.

Cuando terminamos de configurar el servidor nos dimos cuenta que esas mismas necesidades se repetirían en muchas install partys, por lo que decidimos escribir esta guía.

La idea de este howto es explicar cómo montar un servidor con las siguientes características:

  • Compartir conexión a Internet
  • Servidor de DHCP
  • Cacheo de DNS y tráfico web
  • Mirror de Debian GNU/Linux
  • Instalación por PXE

Los programas utilizados están todos en Lenny Debian GNU/Linux, y no hará falta demasiada configuración. Sin embargo, el servidor debería ser lo suficientemente seguro (no permitir enmascarar tráfico de Internet, cerrar conexiones de Internet a la red local, etc.)

No voy a explicar todas las posibilidades de los programas, sólo las necesarias para conseguir poner en marcha el servidor. Esto no quiere decir que los programas sólo hagan lo que se explica aquí, es recomendable echar una ojeada a la documentación de todos ellos para ver qué pueden hacer por nosotros.

Necesidades de hardware

Disco duro
Un mirror de Debian GNU/Linux (sólo main) ocupa alrededor de 20 gigabytes. Un proxy caché ocupa tanto como puedas dejarle. Por lo tanto, el disco duro debería ser de mínimo 40 GB para estar cómodos.

Dos tarjetas de red
Una para conectarse a Internet, y otra para ofrecer red a los asistentes.

Una torre normalita
No necesitamos mucha máquina. Nosotros utilizamos un procesador a 1500MHz y 256 MB de memoria ram, pero seguramente valdría también una máquina menos potente.

Instalación del sistema mínimo

Con sistema mínimo quiero decir exactamente eso: MÍNIMO. Cuantas menos cosas haya instaladas más sitio para la caché. Es suficiente con los paquetes que se instalan de base en Debian GNU/Linux. El resto de paquetes los iremos instalando luego de uno en uno.

Particiones

Es recomendable que haya como mínimo tres particiones:

El sistema
Con 1 gigabyte debería ser suficiente para instalar todo el sistema. Se pueden poner 2 sin problema.
La swap
500 mebabytes deberían ser suficientes.
Lugar para guardar el mirror y la caché del proxy
Es la partición que más espacio necesita. Cuanto más mejor. El sitio recomendado para montar esta partición es /var/spool. Esta partición va a tener muchos ficheros, de tamaños que variarán etre los 4Kb y los 100Mb.

Red

La tarjeta de red que vayamos a utilizar para conectarnos a Internet no requiere ninguna configuración especial. Con que esté configurada para conectarse a Internet es suficiente. Esto cambia de una red a otra, pero típicamente se suele configurar con DHCP.

La tarjeta de red que utilizaremos para la red de la party tiene que tener un rango de IP diferente a la otra. Tendrá que tener también una dirección fija. Casi siempre se puede poner el rango 10.1.1.0.

El fichero /etc/network/interfaces quedaría así:

  auto lo
  iface lo inet loopback
  
  #eth1 es la interfaz que utilizamos para salir a Internet
  auto eth1
  iface eth1 inet dhcp
  
  #eth0 es la interfaz que se conecta a la red de la party
  auto eth0
  iface eth0 inet static
  	address	10.1.1.1
  	netmask 255.255.255.0
  	network	10.1.1.0
  	broadcast 10.1.1.255

Es muy útil ponerle nombre y dominio al servidor para evitar tener que andar con las IPs.

Si no hemos especificado el nombre en la instalación, editamos el fichero /etc/hostname y lo escribimos ahí. Nosotros le hemos llamado liberador.

Para especificar el dominio (otra vez, sólo necesario si no lo hemos especificado en la instalación), editamos el fichero /etc/hosts y añadimos o corregimos la línea:

  127.0.1.1	liberador.install-party.taz	liberador

Compartir salida a Internet a los asistentes

Para que toda la gente de la install party se pueda conectar a Internet a través de nuestra única IP tendremos que utilizar masquerading. Para que la red de los asistentes sea más fácil de configurar utilizaremos DHCP.

Masquerading

Ipmasq es una serie de scripts que configuran todo lo necesario para que funcione el masquerading. Cierra el firewall lo suficiente para que no nos dé pánico conectar un servidor que haga masquerading, y por defecto no permite que se pueda acceder a los ordenadores de la red local desde Internet. Es muy flexible, por lo que podremos cambiar cualquier parte de su funcionamiento de manera sencilla. Y todo esto sin preguntar nada!

Utiliza unos scripts sencillitos para detectar cual es la interfaz de salida y cual(es) las de la red local. Claro que como no nos pregunta nada, tendremos que configurar bien la red antes de ejecutarlo, y habrá que reiniciarlos después de cualquier cambio en la red. Pequeño precio para semejante joya.

Instalamos ipmasq:

  aptitude install ipmasq

DHCP

Como servidor DHCP utilizaremos dnsmasq. Es un servidor dhcp y dns. Además de ser muy fácil de configurar la parte de DHCP, obtendremos un DNS-cache por el mismo precio, reduciendo el tráfico DNS al máximo.

Instalamos dnsmasq:

  aptitude install dnsmasq

El fichero de configuración está muy bien comentado y muestra ejemplos muy variados. Nosotros sólo necesitamos una pequeña parte de la que ofrece, por lo que nos vale con las siguientes líneas:

  interface=eth0
  except-interface=eth1
  domain=install-party.taz
  dhcp-range=10.1.1.3,10.1.1.100,12h

Con interface especificamos las tarjetas de red en la que escucharán los servidores DHCP y DNS. Tendremos que cambiar eth0 por el nombre de la tarjeta de red que enchufemos a la red de la party.

Con except-interface especificamos las tarjetas de red en las que NO escucharán los servidores DHCP y DNS. Por si acaso pondremos aquí el nombre de la tarjeta de red que utilicemos para conectarnos a Internet.

Con domain especificamos el dominio de la red de la install party. No es obligatorio, pero queda bien.

Y por último lo más importante. Con dhcp-range configuramos el servidor DHCP. En este ejemplo estamos diciendo que ofrecemos direcciones IP desde la 10.1.1.3 hasta la 10.1.1.100, y que la IP será válida por 12 horas.

Una vez configurado reiniciamos dnsmasq:

  /etc/init.d/dnsmasq restart

Proxy-cache

Squid

Squid es un proxy-cache. Es muy completo y permite controlar muchísimas cosas, pero a nosotros sólo nos interesan dos:

  • Proxy-cache de tráfio web
  • Puede funcionar de modo transparente

El fichero de configuración está muy comentado, es prácticamente la mejor fuente de documentación. Está en /etc/squid/squid.conf. Las partes que tenemos que cambiar son pocas:

  http_port 3128 transparent
  acl MIRROR dst 10.1.1.0/255.255.255.0
  cache deny MIRROR
  cache_dir ufs /var/spool/squid 5000 16 256
  acl allowed_hosts src 10.1.1.0/255.255.255.0
  cache_mgr admin@liberador.install-party.taz
  visible_hostname liberador.install-party.taz

En la línea de http_port simplemente hay que añadir transparent al final, para poder utilizarlo en modo transparente.

Las líneas acl MIRROR... y cache deny MIRROR indicamos que no vamos a cachear el tráfico interno de la red. De este modo nos ahorramos cachear el contenido del mirror.

En la línea cache_dir ... tenemos que cambiar el primero de los números para que indique la cantidad de megabytes que le vamos a permitir a la caché. En este ejemplo le dejamos 5000.

La línea acl allowed_hosts ... describe a los clientes que vamos a permitir utilizar la caché. En este caso permitimos a cualquier ordenador de la red 10.1.1.0

Las dos últimas líneas indican el correo del administrador y el nombre de la máquina.

Una vez configurado reiniciamos el squid y listos:

  /etc/init.d/squid restart

Iptables

Para que el proxy sea transparente tendremos que redirigir todo el tráfico que pase por nuestro servidor (que también es router de los asistentes) al puerto donde escucha squid. Para ello necesitaremos una regla de iptables. Como estamos utilizando ipmasq, que es quien se encarga de configurarlo, lo mejor es que configuremos este programa para que añada las reglas necesarias. Editamos el fichero /etc/ipmasq/rules/F00chain.rul:

  $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Con esta regla estamos diciendo que todo el tráfico TCP que vaya a algún puerto 80 desde la red a la que está conectada la tarjeta eth0 se redirija al puerto 3128 (donde escucha squid). Puede que tengamos que cambiar eth0 por la tarjeta de red que tengamos enchufada a la red de la party.

Mirror de Debian GNU/Linux

Para que la party vaya lo más rápido posible, es recomendable llevar un repositorio. Los paquetes se descargarán mucho más rápido, incluso con la mejor conexión de Internet del mercado.

Antes de decidir montar un mirror del repositorio tendremos que plantearnos las siguientes preguntas:

¿Me cabe en el disco duro? Son un montón de gigas (la sección main de Debian Etch ocupa 14GB)

¿Voy a sacarle provecho? Si solo voy a instalar media docena de ordenadores, o si se va a instalar exactamente lo mismo en todos, es probable que no merezca la pena.

¿Va a serme útil más veces? Le vamos a pedir un montón de tráfico a los servidores de Debian. Hay que mirar cómo amortizar todas esas descargas. Aprovecha luego y haz CDs o DVDs de Debian con tu repositorio, llévalo a más sitios, utilízalo con todos los ordenadores de casa/trabajo/local,... Piensa que a Debian le cuesta dinero mantener todo ese ancho de banda.

En el caso de que la respuesta sea afirmativa en los tres casos, instalamos el mirror.

Obtener el mirror

Apt-mirror es una herramienta que genera un mirror de parte o la totalidad de una distribución Debian (o cualquier otra fuente de apt) listo para utilizar.

Instalamos apt-mirror:

  aptitude install apt-mirror

El fichero de configuración (''/etc/apt/mirror.list'') es bastante sencillo. Para tener un mirror de debian testing para la arquitectura i386 hay que descomentar y/o cambiar las líneas:

  set defaultarch    i386
  set nthreads       20
  deb http://ftp.fr.debian.org/debian lenny main
  deb http://security.debian.org/debian-security lenny/updates main
  deb http://ftp.fr.debian.org/debian lenny main/debian-installer
  clean http://security.debian.org/
  clean http://ftp.fr.debian.org/

Con set defaultarch especificamos la arquitectura. Otras arquitecturas habituales suelen ser amd64 o powerpc.

Con set nthreads fijamos el número de descargas que se realizarán en paralelo. 20 es un número bastante alto. Si tu conexión a Internet es lenta es mejor que reduzcas esto a 5 o así, ya que de todas maneras no notarías mejoría.

Con las tres líneas que empiezan por deb especificamos fuentes de apt de las que queremos hacer mirror. Su sintaxis es igual a la utilizada en /etc/apt/sources.list. Tened en cuenta que por lo general en las install partys no se instalan fuentes de paquetes (o muy pocas) por lo que no merece la pena meter entradas deb-src.

Con las líneas que empiezan por clean nos aseguramos que no tendremos ficheros de sobra en el mirror.

Cuando ya está todo configurado ejecutamos apt-mirror como usuario apt-mirror

  su - apt-mirror -c apt-mirror

Esto lleva su tiempo. Si no puedes hacerlo todo de una sola vez puedes comenzar más tarde con el mismo comando y seguirá donde lo dejaste. Hay que tener paciencia, porque hasta que el comando no termine no tendremos el mirror operativo.

Ofrecerlo a los asistentes

Los métodos más habituales para exportar un repositorio son http y ftp. En nuestro caso utilizaremos http, ya que así podremos aprovechar el servidor para poner material disponible a los usuarios vía web. Utilizaremos el servidor apache2, por ser el más extendido, aunque existen muchos otros más apropiados para lo que nos va a hacer falta.

Apache es con diferencia el servidor web más utilizado. #FIXME: hablar de bondades de apache o cambiarlo por otro servidor más simple

Instalamos apache:

  aptitude instal apache2

Crearemos un host virtual para el repositorio, donde publicaremos el directorio donde está el mirror. Para ello creamos el fichero /etc/apache2/sites-available/mirror:

  NameVirtualHost 10.1.1.1
  <VirtualHost 10.1.1.1>
  	ServerName 10.1.1.1
  	ServerAdmin webmaster@liberador.install-party.taz
  	Alias /debian "/var/spool/apt-mirror/mirror/ftp.fr.debian.org/debian"
  	Alias /debian-security "/var/spool/apt-mirror/mirror/security.debian.org/debian-security"
  </VirtualHost>

Con NameVirtualHost especificamos la IP en la que funcionará el dominio virtual, en nuestro caso la que tengamos en la red de la party.

Con <VirtualHost> y su correspondiente etiqueta de cierre marcamos la configuración que afecta al dominio virtual. Hay que ponerle la misma IP que hemos puesto en NameVirtualHost.

Con ServerName especificamos qué nombre tendrá nuestro servidor en ese dominio virtual. Otra vez le ponemos la misma IP.

Por último, definimos varios Alias para hacer accesible los repositorios en la dirección /debian del servidor web. Hay que pasarle como parametro el directorio donde está el mirror (en este caso /var/spool/apt-mirror/mirror/ftp.fr.debian.org/debian para el mirror de ftp.fr.debian.org).

Después de configurar el dominio virtual, hay que activarlo y recargar la configuración del servidor

  a2ensite mirror
  /etc/init.d/apache2 reload

Crear CDs y DVDs de instalación

Para crear CDs o DVDs de instalación a partir de un repositorio existe la herramienta jigdo-file. Lo único que tendremos que hacer será encontrar los enlaces a ficheros .jigdo, que están en la web de Debian: http://www.debian.org/CD/jigdo-cd/. Debian Lenny ocupa 31 CDs o 5 DVDs, por lo que bajaremos los DVDs. Como el repositorio que hemos descargado es de testing, los que necesitamos son los siguientes:

  http://cdimage.debian.org/cdimage/weekly-builds/i386/jigdo-dvd/debian-testing-i386-DVD-1.jigdo
  http://cdimage.debian.org/cdimage/weekly-builds/i386/jigdo-dvd/debian-testing-i386-DVD-2.jigdo
  http://cdimage.debian.org/cdimage/weekly-builds/i386/jigdo-dvd/debian-testing-i386-DVD-3.jigdo

Instalamos jigdo-file

  aptitude install jigdo-file

Ejecutamos jigdo-file

  jigdo-lite http://cdimage.debian.org/cdimage/weekly-builds/i386/jigdo-dvd/debian-testing-i386-DVD-1.jigdo

Nos preguntará si tenemos algún CD o DVD viejo que podamos aprovechar; como tenemos el repositorio completo le decimos que no. Cuando nos pregunte por el repositorio a utilizar le ponemos el nuestro: http://liberador.install-party.taz/debian

Es posible que no encuentre todos los paquetes necesarios en el repositorio, ya que algunos se habrán actualizado. No es problema, jigdo se bajará los que falten de un repositorio por defecto.

Por cada uno de los enlaces tendremos que repetir el proceso. Al final tendremos 3 ficheros .iso.

Instalaciones por PXE

Si no queremos grabar tantos CDs podemos arrancar el instalador de Debian GNU/Linux por red. Hay que tener en cuenta que algunas máquinas (sobre todo las antiguas) no tienen capacidad para arrancar por red; hay que comprobarlo en la BIOS.

Para ponerlo en marcha necesitamos que el servidor de DHCP de información adicional para el arranque de red. Con dnsmasq es suficiente con añadir al fichero de configuración la siguiente línea:

  dhcp-boot=pxelinux.0,liberador,10.1.1.1

Donde liberador y 10.1.1.1 son el nombre y la dirección del servidor tftp.

Después es necesario poner en marcha el servidor TFTP. Primero instalamos el paquete necesario:

  aptitude install tftpd-hpa

Verificamos que tftp se arrancará mediante inetd. Tenemos que tener una línea como esta (descomentada):

  tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

Por último necesitamos las imágenes de arranque. Para ello utilizaremos el programa di-netboot-assistant, que tendremos que instalar:

  aptitude install di-netboot-assistant

Este comando se encarga de descargar los ficheros necesarios, ponerlos accesibles por TFTP y configura pxelinux para que podamos elegir entre las distintas imágenes disponibles. Nosotros le pediremos que consiga instaladores de i386 y de amd64:

  di-netboot-assistant install lenny --arch=i386
  di-netboot-assistant install lenny --arch=amd64

Recordad que hay que reiniciar los servidores que hemos configurado:

  /etc/init.d/dnsmasq restart
  /etc/init.d/openbsd-inetd restart

Referencias

Debian GNU/Linux
http://www.debian.org
ipmasq
No he encontrado la web oficial de ipmasq, pero se puede utilizar la documentación que viene con el paquete: /usr/share/doc/ipmasq/ipmasq.html/index.html
dnsmasq
http://thekelleys.org.uk/dnsmasq/doc.html
apt-mirror
http://apt-mirror.sourceforge.net/
bind
http://www.isc.org/index.pl?/sw/bind/
apache
http://httpd.apache.org/
iptables
http://www.netfilter.org/
jigdo-file
http://atterer.net/jigdo/
instalación con PXE
Setting up a server for PXE network booting
http://www.debian-administration.org/articles/478
Guía de instalación de Debian GNU/Linux. Capitulo 4.5
http://www.debian.org/releases/stable/amd64/ch04s05.html.es

Historia

11/04/2007
Primera versión del documento. Un servidor de install parties funcional.
23/11/2008
Añadida instalación por PXE y revisión del documento.
etiketak: ,