Servidor compacto con una routerstation

De Guifi.net - Wiki Hispano

Crear servidor compacto de guifi.net con una routerstation

Introducción

Bueno, alguna gente nos compramos en su día una o varias routerstations con la idea de utilizarlas como reemplazo libre y más barato para las RB433AH e incluso las RB600. Sin embargo, con la llegada del modelo híbrido como mucho las hemos utilizado para enrutar en lugar de las más habituales RB750(G(L)).

Así que voy a explicar algo que podemos hacer para aprovechar estas maravillas que en muchos casos están criando polvo por problemas también de drivers de atheros (el famoso problema de la falta de soporte para wdsap-p2p en ath5k y la necesidad de meter patches manuales a madwifi para recuperar el soporte de este modo).

La idea es tener un servidor básico para una pequeña zona.

Para ello utilizaremos debwrt, una mezcla entre debian y openwrt

Materiales

  • 1 routerstation (64 MB RAM, 16 MB flash, puertos ethernet 10/100) / routerstation pro (128 MB RAM, 16 MB flash, puertos ethernet gigabit)
  • 1 adaptador USB (diagrama; en el caso de la routerstation pro ya viene incluido) + 1 disco duro USB
  • (o bien) 1 controladora sata/ide en formato mini-pci y el correspondiente soporte de almacenamiento

Particionando el disco duro usb

La primera partición contendrá el sistema de archivos (ext3 o ext2) (X GBs) La segunda partición, opcional, será para swap [linux-swap] (no tiene porqué ser sólo 1.5x o 3x la RAM; mi servidor tiene 512 MB de swap :)

El particionado podemos hacerlo con gparted. Es interesante que en cualquier caso creemos las particiones alineándolas a sectores :)


Creando el firmware

Si tenemos una RS-pro y nos da pereza...

En el caso de la routerstation pro podremos tirar de imágenes, rootfs (el sistema de archivos) y módulos (drivers, entre otros) precompilados. Se pueden descargar aquí: http://www.debwrt.net/download/releases/2.0/

  • La imagen (debwrt-firmware-ar71xx-generic-ubnt-rspro-squashfs-factory.bin) tendremos que flashearla por tftp tal y como hacemos con las imágenes de openwrt
  • El rootfs (debwrt-rootfs-mips-2.0-1.tar.bz2) y los módulos (debwrt-modules-ar71xx-generic_UBNTRSPRO-2.6.32.20-angel-2.0-1.tar.gz) los tendremos que descomprimir en la primera partición de nuestro disco duro usb. Si la tenemos montada en /media/rs, haremos:
# tar jvxf debwrt-rootfs-mips-2.0-1.tar.bz2 /media/rs/
# tar zvxf debwrt-modules-ar71xx-generic_UBNTRSPRO-2.6.32.20-angel-2.0-1.tar.gz /media/rs/ --no-same-owner


En cualquier otro caso...

Añadimos nuestro usuario al grupo «src» para poder escribir en el directorio /usr/src

$ sudo addgroup ${LOGNAME} src

tras esto, para que sea efectivo, tendremos que cerrar sesión y volver a abrirla (o bien, logout y luego login)

Nos vamos al directorio de fuentes en sistemas GNU/linux y bajamos las del trunk de debwrt

~$ cd /usr/src
/usr/src$ svn checkout https://svn.debwrt.net/debwrt/trunk debwrt

Una vez que termine, entramos en el directorio debwrt y nos ponemos manos a la obra:

/usr/src$ cd debwrt
/usr/src/debwrt$ make menuconfig

En el menú, elegimos:

  • el sistema de destino o target system (Atheros AR71xx/AR7240/AR913x)
  • el perfil de destino o target profile (Ubiquiti RouterStation [Pro])

A continuación salimos (exit) y guardamos los cambios ( Do you wish to save your new DebWrt configuration? YES)

Después, nos ponemos manos a la obra a compilar tanto el firmware como el sistema de archivos y los módulos que copiaremos a la primera partición de nuestro dispositivo usb/sata/ide:

$ make

!!! Si queremos ver qué está haciendo a cada momento el compilador, podemos ejecutar lo siguiente en lugar de loa anterior:

$ make V=99

!!! Si tenemos un procesador de doble núcleo o bien dos procesadores, podemos lanzar el proceso de compilación con 3 hilos así:

$ make -j 3

Lo ideal es que lancemos el proceso de compilación con el número de núcleos + 1 (dual core --> -j 3)


Una vez se haya bajado el código de openwrt, haya construido el toolchain de compilación para hardware ajeno (cross-compiling) y haya compilado el firmware de openwrt, nos aparecerá algo parecido a esto:

Make DebWrt completed

DEBWRTVERSION : angel - 2.0-1 - [ 29 January 2011 (r156) ]
TARGET_ARCH   : mipsel
BOARD         : malta
SUB_BOARD     : le_Default
LINUX_VERSION : 2.6.36.2 (default)


Flasehando...

Aunque este proceso es el de openwrt y varía según dispositivo, en este caso, al tratarse de sólo dos, routerstation y routerstation pro, el procedimiento es muy concreto: 1. Instalamos un cliente de tftp 2. Enchufamos el trasto y mantenemos pulsado el botón de reset hasta que veamos que el led de RF parpadea 3. Iniciamos el cliente de tftp en sistemas GNU/linux debian y derivados:

$ tftp 192.168.1.20
tftp> rexmt 1
tftp> trace
tftp> binary
tftp> timeout 60
tftp> put debwrt-firmware-ar71xx-generic-ubnt-rs-squashfs-factory.bin
...

en caso de que sea una routerstation pro, el nombre del firmware será: debwrt-firmware-ar71xx-generic-ubnt-rspro-squashfs-factory.bin o similar

Una vez flasheado, montaremos la primera partición de nuestro soporte en /media/DEBWRT_ROOT y después haremos:

$ make debian/rootfs/install 


Una vez flasheado, extraemos de manera segura nuestro soporte y lo "instalamos" en nuestra routerstation.

Accederemos a ella, bien por telnet o por ssh (user root, password debwrt) sea en la ip 192.168.1.1 o en la ip 192.168.1.20 (en este primer arranque estará accesible en las dos).

Dentro, llevaremos a cabo los primeros pasos en la instalación de debian:

/debootstrap/debootstrap --second-stage

este paso lleva bastante rato (hacer la colada, un poco de footing, los cristales, etc...)

A continuación:

rm -rf /var/cache/apt/archives"
mkdir -p /var/cache/apt/archives/partial
echo deb http://ftp.debian.org/debian squeeze main >>/etc/apt/sources.list

Para que podamos hacer la postinstalación tendremos que configurar la red. Editamos /etc/network/interfaces e introducimos los datos adecuados; en mi caso, al estar conectada la routerstation a mi router adsl y tener éste la 192.168.2.30, el fichero /etc/network/interfaces quedó de la siguiente manera:

auto eth0
iface eth0 inet static
        address 192.168.2.30
        netmask 255.255.255.0
        gateway 192.168.2.9
        dns     192.168.2.9

A partir de aquí, algunas cosas interesantes por hacer son:

apt-get update

No olvidemos este paso ;)

apt-get install locales

Si es inglés, interesante elegir las siguientes:

  • en_US ISO-8859-1
  • en_US.ISO-8859-15 ISO-8859-15
  • en_US.UTF-8 UTF-8

Si es castellano, elegiremos las siguientes ADEMÁS de las de inglés:

  • es_ES ISO-8859-1
  • es_ES.UTF-8 UTF-8
  • es_ES@euro ISO-8859-15

Aceptaremos y elegiremos la siguiente como configuración regional predefinida (para castellano):

  • es_ES.UTF-8

Esperaremos a que termine de generar las locales.

Para que estos cambios sean funcionales, tendremos que reiniciar. NADA de reboot, sino:

shutdown -r now

También podremos:

  • instalar sudo
apt-get install sudo
adduser pepito
adduser pepito sudo
  • añadir el repositorio de guifi a nuestro sources.list
# echo "deb http://repo.vic.guifi.net/debian/  ./" >> /etc/apt/sources.list
  • instalar el paquete snpservices
$ sudo apt-get install snpservices
  • y otras muchas cosas :)

Configurando el switch o dónde está la lan

De momento no he averiguado cómo se configura el switch, aunque dicen por ahi que se hace a base de robocfg (investigaré)

Herramientas personales