Aprendiendo OpenWrt con La Fonera

Lo que vamos a hacer

Vamos a instalar OpenWrt Kamikaze a una fonera modelo 2100 y a agregarle una tarjeta SD para aumentar su espacio de almacenamiento. Por último vamos a instalar nagios en la fonera, moviendo parte de la aplicación a la tarjeta SD.

Prepara un cable para conexión directa al PC, un soldador, estaño, cables y un lector SD que no utilices.

De donde salió

Hace unos meses Javier Turégano se fue de Ándago a Australia y empezó a repartir sus bienes entre los compañeros.

A mi me tocó una fonera, modelo 2100.

Instalar OpenWrt

En el wiki de OpenWrt vienen las instrucciones para su instalación que detallaré más abajo.

Lo que voy a decir a continuación es verdad a medias pero es muy didáctico:

  • Si nunca has usado este tipo de máquinas pero si has trasteado con Android, debes saber que el Android System Recovery para nuestros propósitos viene a hacer lo mismo que RedBoot. Desde el RedBoot podrás escribir en la memoria del cacharrito, pero también hacer más cosas como cargar imágenes por tftp.
  • Si nunca has trasteado con Android, el RedBoot viene a ocupar la parte del grub. Es lo que se arranca al principio y permite ejecutar comandos antes de arrancar el sistema operativo de verdad.

Paso 1: Obtener acceso por ssh a la fonera

Se podría conectar a la fonera con un conversor TTL a USB y ya tendríamos acceso, pero entrar usando una vulnerabilidad es más divertido. ;-)

La foneras vienen con OpenWRT instalado pero con todos los puertos cerrados por iptables. Se trata de abrir el puerto 22 y arrancar dropbear que es un servidor de ssh.

En esta página, cuya lectura completa recomiendo encarecidamente, vienen varias formas de hacer esto. En mi caso la versión del firmware era la 0.7.1-1 así que ejecutando el comando fondue.pl me conecté por ssh a la fonera.

Paso 2: Conseguir acceso por ssh permanente

En esta otra página vienen los pasos para conseguir el acceso ssh de forma permanente.

Para ellos activamos dropbear de forma permanente en el arranque:

mv /etc/init.d/dropbear /etc/init.d/S50dropbear

abrir el puerto 22 en el firewall agregando estas dos líneas en /etc/firewall.user:

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22
iptables -A input_rule -i $WAN -p tcp --dport 22

evitar que se ejecute código desde los servidores de fon comentando una línea en /bin/thinclient

# . /tmp/.thinclient.sh

Paso 3: Cambiar la configuración de RedBoot para activar el acceso por telnet

Copio liberalmente los pasos de la guía.

Reemplazar el kernel para desactivar la protección de escritura:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://ipkg.k1k2.de/hack/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
root@OpenWrt:~# Connecting to ipkg.k1k2.de[85.10.200.90]:80
openwrt-ar531x-2.4-v 100% |**************************|   512 KB    00:00 ETA
root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
Unlocking vmlinux.bin.l7 ...
Erasing vmlinux.bin.l7 ...
Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to vmlinux.bin.l7 ... [w]
root@OpenWrt:~# reboot

Sobreescribir la configuración de redboot:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://ipkg.k1k2.de/hack/out.hex
root@OpenWrt:~# Connecting to ipkg.k1k2.de[85.10.200.90]:80
out.hex 100% |*******************************| 4096 00:00 ETA
root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
Unlocking RedBoot config ...
Erasing RedBoot config ...
Writing from out.hex to RedBoot config ... [w]
root@OpenWrt:~# reboot

Esta configuración configura la IP 192.168.1.254 en la fonera y abre un servicio de telnet en el puerto 9000 durante 10 segundos.
Con un ifconfig eth0:0 192.168.1.222 netmask 255.255.255.0 estarás en la misma red que el RedBoot de tu fonera.

A partir de ahora utiliza el putty para conectarte por telnet a la fonera, ya que el cliente de consola puede darte problemas en algunas ocasiones.

Y esta era la parte peligrosa. Si consigues conectarte por telnet al puerto 9000 el resto ya no tiene porque enladrillar la fonera. ¿A lo mejor te lo tenía que haber dicho antes? ;-)

Instalar OpenWrt

Instala un servidor de tftp

Necesitamos instalar un servidor de tftp en el que dejar los archivos que luego cargará la fonera.

Para ello puedes instalar el paquete tftpd-hpa y todo lo que dejes en /var/lib/tftpboot podrá verlo la fonera.

Descarga del sistema operativo

Descarga el kernel y el sistema de archivos desde:

Deja ambos archivos en /var/lib/tftpboot.

Configura en RedBoot la IP del servidor de tftp y la suya propia

Tenemos que decirle donde está el servidor de tftp y en caso de que esté en otra red, configurársela.

RedBoot> ip_address -h  -l /24
IP: [...], Gateway: 0.0.0.0
Default server: [...]

Por ejemplo, si has instalado el servidor de tftp en tu PC con la ip 192.168.1.222 el comando siguiente debería servirte:

RedBoot> ip_address -h 192.168.1.222 -l 192.168.1.254/24

Descarga e instala las imágenes

Cargamos el kernel:

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded [...], assumed entry at [...]

Inicializamos la tabla de particiones (FIS):

RedBoot> fis init

Ahora volcamos la imagen del kernel. Ten en cuenta que en el par de minutos que tarda parecerá que la fonera se ha frito. Pero no te preocupes que, como dije antes, la parte peligrosa ya pasó:

RedBoot> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
... Erase from 0xa8730000-0xa87e0000: ...........
... Program from 0x80041000-0x800f1000 at 0xa8730000: ...........
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Ahora volcamos el sistema de archivos:

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP)

Raw file loaded 0x80041000-0x80200fff, assumed entry at 0x80041000
RedBoot> fis create rootfs
... Erase from 0xa8030000-0xa8730000: ................................................................................................................
... Program from 0x80041000-0x80741000 at 0xa8030000: ..............................................................................................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Comprobamos con un fconfig -l -nque en el script de arranque se hace referencia al kernel que hemos instalado y sino lo cambiamos:

RedBoot> fconfig boot_script_data 
boot_script_data: 
.. fis load -l vmlinux.bin.1
.. exec
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>> 
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

Reiniciar el router.

RedBoot> reset

Recuerda que todavía no estás en OpenWrt donde el comando si sería reboot.

Configuración inicial de OpenWrt

Cambia la contraseña

Te conectas por telnet al router (puerto 23, no 9000). La contraseña es admin.
Dentro ejecutas passwd y le cambias la contraseña a root. Reinicia y podrás conectarte por ssh a la fonera.

Configuración de la red

OpenWrt arranca un interfaz web muy chulo para su configuración a golpe de click.
Para familiarizarte con ella ponle una IP de tu red y reinicia usando la interfaz web.

Un primer contacto con OpenWrt

Capacidades

El problema de estas máquinas es que tienen una capacidad extremadamente limitada. No puedes ponerte a instalar paquetes sin parar porque solo tienes 5MB de sitio en disco. Si, 5.4MB, no me he equivocado al escribirlo.

root@pandora:/etc/config# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.5M      1.5M         0 100% /
/dev/root                 1.5M      1.5M         0 100% /rom
tmpfs                     6.7M     40.0k      6.6M   1% /tmp
tmpfs                   512.0k         0    512.0k   0% /dev
/dev/mtdblock3            5.4M      5.1M    308.0k  94% /jffs
mini_fo:/jffs             1.5M      1.5M         0 100% /
root@pandora:/etc/config#

Y la memoria, 16MB ¡más memoria que disco de datos!

root@pandora:/etc/config# free
              total         used         free       shared      buffers
  Mem:        13672        11960         1712            0         1088
 Swap:            0            0            0
Total:        13672        11960         1712
root@pandora:/etc/config#

Ten esto siempre en mente antes de instalar cualquier cosa.

Instalación y configuración del sistema

Siempre que arranques la fonera la lista de paquetes disponibles habrá desaparecido. Utiliza opkg update para bajártela cada vez que arranques. Sino te ocurrirá esto:

root@OpenWrt:~# opkg install luci-app-mmc_over_gpio
An error ocurred, return value: 716563936.
root@OpenWrt:~#

Si, como yo, eres un adicto al Ctrl-r, puedes instalarte la bash con un opkg install bash y luego, en el home de root crear un archivo .profile con el contenido /bin/bash.

root@OpenWrt:~# opkg install bash
Installing bash (3.2-2) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/bash_3.2-2_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
bash_3.2-2_mips.ipk  100% |*********************************************************************************************|   297k 00:00:00 ETA
Installing libncurses (5.6-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libncurses_5.6-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libncurses_5.6-1_mip 100% |*********************************************************************************************|   135k --:--:-- ETA
Configuring bash
Configuring libncurses
root@OpenWrt:~#

¡Ya tenemos history!

Prueba a configurar el hostname en /etc/config/system a ver que pasa.

Como ves, es otro linux.

Alimentación por USB

Como no me apetecía tener que llevar el transformador de un lado para el otro corté un cable usb por la mitad, le soldé un terminal con el positivo (rojo) en el centro y el negativo (negro) en el cuerpo.

Y ya tenemos fonera portable.

Si quisiéramos alimentación PoE, hubiera bastado con usar dos de los cables que no usa la fonera, por ejemplo los marrones, y conectarlos a las patas de alimentación.

Instalación del lector de tarjetas SD

Para quitarnos el problema del almacenamiento vamos poner una tarjeta SD en la máquina, la formateamos como ext3, la montamos en /mnt/sdcard y luego movemos las cosas que nos interesan a la tarjeta para dejar espacio libre y hacemos enlaces blandos.

Hay una guía bastante buena en la que se explica como hacer las conexiones pero se deja cosas sueltas así que la he intentado aclarar un poco

Extracción y localización del lector de tarjetas

Utilizamos un lector de tarjetas roto:

Normalmente la gente usa el soldador pero yo lo intento usar lo menos posible por eso de que al plástico no le gusta el calor y tal.
Aprovechando que las soldaduras son superficiales y que el estaño es blando, se corta con una navaja el estaño del lector:

Tras ponerlo en la parte de atrás, vemos que los cables coinciden exactamente con los agujeros ¿que mejor sitio que este para ponerlo?

Cables a utilizar

Recomiendo siempre utilizar cables de red rígidos para estas cosas. El estaño se agarra bien y son flexibles pero rígidos cuando nos interesa.

Eliminar condensadores

Elimina estos condensadores con el soldador. No se porqué hay que hacerlo pero si no se quitan no funciona:

Soldar cables a la tarjeta SD

El esquema de conexiones desde el punto de vista de la tarjeta SD en texto sería algo así:

SD Card      -----   Fonera
 CS  (pin 1)          SW6
 DI  (pin 2)          SW5
 Gnd (pin 3)          Gnd
 Vcc (pin 4)          Vcc
 CLK (pin 5)          SW2
 Gnd (pin 6)          Gnd
 DO  (pin 7)          SW1

El orden de los cables del 1 al 7 es azul, marrón claro, blanco-azul, naranja, verde, blanco-azul, marrón oscuro.
Fíjate en como están soldados el 3 y el 6 ya que en realidad son el mismo cable.

Alimentación del lector de tarjetas

El naranja y el blanco-azul son el positivo y el negativo y van a los conectores que se usan también para el puerto serie:

Soldar los cables a la fonera

El esquema de conexiones desde el punto de vista de la fonera en texto sería algo así:

SD Card      -----   Fonera
 DO  (pin 7)          SW1
 CLK (pin 5)          SW2
 DI  (pin 2)          SW5
 CS  (pin 1)          SW6
 Gnd (pin 3 and 6)    Gnd
 Vcc (pin 4)          Vcc

Donde el 1 está al lado del conector ethernet y el 6 es el que está más lejos.

Y el orden de los cables es marrón, verde, _ , _ , marrón claro, azul.
Como se puede ver los condensadores ya no están.

Conexiones terminadas

Aquí se puede ver una foto de todas las conexiones desde arriba:

Y aquí como queda la tarjeta SD pegada a la parte de abajo:

Instalación y configuración del lector de tarjetas

Instalar el software para la detección de tarjeta

Actualizamos con opkg update e instalamos el software necesario con opkg install luci-app-mmc_over_gpio:

root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/Packages.gz
Connecting to downloads.openwrt.org (78.24.191.177:80)
Packages.gz          100% |**********************************************************************|   142k 00:00:00 ETA
Inflating http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/snapshots
root@OpenWrt:~# opkg install luci-app-mmc_over_gpio
Installing luci-app-mmc_over_gpio (0.8.8-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/luci-app-mmc_over_gpio_0.8.8-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
luci-app-mmc_over_gp 100% |**********************************************************************|  2079  --:--:-- ETA
....

Y editamos la sección de start() en el archivo /etc/init.d/mmc_over_gpio. Donde pone add_device "default" 5 4 3 7 0 tenemos que comentarla y agregar unas líneas:

        #add_device "default" 5 4 3 7 0                                       
        add_device "default" 1 3 4 14 0                                       
        sleep 2                                                               
        remove_device "default"                                               
        sleep 2                                                               
        add_device "default" 1 3 4 7 0              

Si ejecutamos /etc/init.d/mmc_over_gpio start y ejecutamos dmesg deberíamos ver al final algo como esto:

mmc0: new SD card on SPI
mmcblk0: mmc0:0000 SD128 123008KiB 
 mmcblk0: p1

Si esto funciona, ya tienes la tarjeta funcionando.

Sistema de archivos de la tarjeta

Si intentas montar la partición donde está el sistema de archivos te dirá algo como file not found.

Eso es porque faltan los módulos del kernel para vfat, ext3 y casi todos los sistemas de archivos que se usan en otros sistemas operativos.

Vamos a instalarlos tanto para vfat como para ext3, que será el que usaremos:

root@OpenWrt:~# opkg install kmod-fs-vfat kmod-fs-ext3 kmod-nls-cp437 kmod-nls-cp850 kmod-nls-iso8859-15
Installing kmod-fs-vfat (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-fs-vfat_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-fs-vfat_2.6.26. 100% |*********************************************************************************************| 37598  --:--:-- ETA
Installing kmod-fs-ext3 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-fs-ext3_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-fs-ext3_2.6.26. 100% |************************************************************************************************************| 92529  --:--:-- ETA
Installing kmod-nls-base (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-base_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-base_2.6.26 100% |*********************************************************************************************|  3719  --:--:-- ETA
Installing kmod-nls-cp437 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-cp437_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-cp437_2.6.2 100% |*********************************************************************************************|  2968  --:--:-- ETA
Installing kmod-nls-cp850 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-cp850_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-cp850_2.6.2 100% |*********************************************************************************************|  2930  --:--:-- ETA
Installing kmod-nls-iso8859-15 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-iso8859-15_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-iso8859-15_ 100% |*********************************************************************************************|  2722  --:--:-- ETA
Configuring kmod-fs-vfat
Configuring kmod-fs-ext3
Configuring kmod-nls-base
Configuring kmod-nls-cp437
Configuring kmod-nls-cp850
Configuring kmod-nls-iso8859-15
root@OpenWrt:~#

Ahora creamos el directorio en el que montar la tarjeta y la montamos ahí. Si es vfat tendremos que pasarle a mount la opción -t vfat y si es ext3 tendremos que pasarle -t ext3.

root@pandora:/jffs/usr/libexec/nagios# mkdir /mnt/sdcard/
root@pandora:/jffs/usr/libexec/nagios# mount /dev/mmcblk0p1 /mnt/sdcard/ -t ext3

Y ahora vamos a instalar algo sin tener espacio para hacerlo, como por ejemplo nagios. Tras instalar el nagios y el nagios-nrpe con un opkg install nagios nagios-plugins nrpe se instala todo menos nagios porque dice que no tiene espacio. Vamos a solucionarlo:

root@pandora:/jffs/usr/libexec/nagios# cd ..
root@pandora:/jffs/usr/libexec# mv  nagios/ /mnt/sdcard/;ln -s /mnt/sdcard/nagios/
root@pandora:/jffs/usr/libexec# opkg install nagios
Installing nagios (2.10-1) to root...
Collected errors:
 * Only have 3468 available blocks on filesystem /, pkg nagios needs 5112
root@pandora:/jffs/usr/libexec# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.5M      1.5M         0 100% /
/dev/root                 1.5M      1.5M         0 100% /rom
tmpfs                     6.7M    752.0k      5.9M  11% /tmp
tmpfs                   512.0k         0    512.0k   0% /dev
/dev/mtdblock3            5.4M      2.1M      3.3M  39% /jffs
mini_fo:/jffs             1.5M      1.5M         0 100% /
/dev/mmcblk0p1          116.2M      6.7M    103.5M   6% /mnt/sdcard
root@pandora:/jffs/usr/libexec#

El no sabe que en realidad si tiene espacio, pero en la tarjeta SD. Vamos a ver si se puede forzar a instalar:

root@pandora:/jffs/usr/libexec# opkg
opkg: opkg must have one sub-command argument
opkg version 0.1.5
usage: opkg [options...] sub-command [arguments...]
where sub-command is one of:

Package Manipulation:
	update  		Update list of available packages
	upgrade			Upgrade all installed packages to latest version
	install 		Download and install  (and dependencies)
	install 	Install package 
	configure []	Configure unpacked packages
	remove 	Remove package 
	flag  ...	Flag package(s) =hold|noprune|user|ok|installed|unpacked (one per invocation)	

Informational Commands:
	list    		List available packages and descriptions
	list_installed		List all and only the installed packages and description 
	files 		List all files belonging to 
	search 		Search for a package providing 
	info [pkg|regexp]		Display all info for 
	status [pkg|regexp]		Display all status for 
	download 		Download  to current directory.
	compare_versions 
	                          compare versions using  >= = >
	print_architecture      prints the architecture.
	print_installation_architecture
	whatdepends [-A] [pkgname|pat]+
	whatdependsrec [-A] [pkgname|pat]+
	whatprovides [-A] [pkgname|pat]+
	whatconflicts [-A] [pkgname|pat]+
	whatreplaces [-A] [pkgname|pat]+
	                        prints the installation architecture.

Options:
	-A                      Query all packages with whatdepends, whatprovides, whatreplaces, whatconflicts
	-V                Set verbosity level to . If no value is
	--verbosity       provided increase verbosity by one. Verbosity levels:
	                         0 errors only
	                         1 normal messages (default)
	                         2 informative messages
	                         3 debug output
	-f 		Use  as the opkg configuration file
	-conf 	Default configuration file location
				is /etc/opkg.conf
	-d 		Use  as the the root directory for
	-dest 	package installation, removal, upgrading.
				 should be a defined dest name from
				the configuration file, (but can also be a
				directory name in a pinch).
	-o 	Use  as the root directory for
	-offline 	offline installation of packages.
	Force Options (use when opkg is too smart for its own good):
	-force-depends		Make dependency checks warnings instead of errors
					Install/remove package in spite of failed dependences
	-force-defaults		Use default options for questions asked by opkg.
				(no prompts). Note that this will not prevent
				package installation scripts from prompting.
	-force-reinstall 	Allow opkg to reinstall a package.
	-force-overwrite 	Allow opkg to overwrite files from another package during an install.
	-force-downgrade 	Allow opkg to downgrade packages.
	-force_space            Install even if there does not seem to be enough space.
	-noaction               No action -- test only
	-nodeps                 Do not follow dependences
	-force-removal-of-dependent-packages
	-recursive	 	Allow opkg to remove package and all that depend on it.
	-autoremove	 	Allow opkg to remove packages that where installed automatically to satisfy dependencies.
	-test                   No action -- test only
	-t	 	        Specify tmp-dir.
	--tmp-dir 	        Specify tmp-dir.

	regexp could be something like 'pkgname*' '*file*' or similar
	eg: opkg info 'libstd*'  or opkg search '*libop*' or opkg remove 'libncur*'
root@pandora:/jffs/usr/libexec#

Eso de -force_space tiene buena pinta:

root@pandora:/jffs/usr/libexec# opkg install -force_space nagios
Installing nagios (2.10-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/nagios_2.10-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
nagios_2.10-1_mips.i 100% |*******************************|  2022k 00:00:00 ETA
Installing libpthread (0.9.29-14.3) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libpthread_0.9.29-14.3_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libpthread_0.9.29-14 100% |*******************************| 19212  --:--:-- ETA
Installing microperl (5.10.0-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/microperl_5.10.0-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
microperl_5.10.0-1_m 100% |*******************************|   434k 00:00:00 ETA
Installing libltdl (1.5.24-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libltdl_1.5.24-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libltdl_1.5.24-1_mip 100% |*******************************| 11443  00:00:00 ETA
Configuring libltdl
Configuring libpthread
Configuring microperl
Configuring nagios
root@pandora:/jffs/usr/libexec# 

Y ya tenemos nagios instalado en la fonera.

AdjuntoTamaño
Image icon 00_presentacion.320w.png85.94 KB

Aprendiendo OpenWrt con La Fonera

Lo que vamos a hacer

Vamos a instalar OpenWrt Kamikaze a una fonera modelo 2100 y a agregarle una tarjeta SD para aumentar su espacio de almacenamiento. Por último vamos a instalar nagios en la fonera, moviendo parte de la aplicación a la tarjeta SD.

Prepara un cable para conexión directa al PC, un soldador, estaño, cables y un lector SD que no utilices.

De donde salió

Hace unos meses Javier Turégano se fue de Ándago a Australia y empezó a repartir sus bienes entre los compañeros.

A mi me tocó una fonera, modelo 2100.

Instalar OpenWrt

En el wiki de OpenWrt vienen las instrucciones para su instalación que detallaré más abajo.

Lo que voy a decir a continuación es verdad a medias pero es muy didáctico:

  • Si nunca has usado este tipo de máquinas pero si has trasteado con Android, debes saber que el Android System Recovery para nuestros propósitos viene a hacer lo mismo que RedBoot. Desde el RedBoot podrás escribir en la memoria del cacharrito, pero también hacer más cosas como cargar imágenes por tftp.
  • Si nunca has trasteado con Android, el RedBoot viene a ocupar la parte del grub. Es lo que se arranca al principio y permite ejecutar comandos antes de arrancar el sistema operativo de verdad.

Paso 1: Obtener acceso por ssh a la fonera

Se podría conectar a la fonera con un conversor TTL a USB y ya tendríamos acceso, pero entrar usando una vulnerabilidad es más divertido. ;-)

La foneras vienen con OpenWRT instalado pero con todos los puertos cerrados por iptables. Se trata de abrir el puerto 22 y arrancar dropbear que es un servidor de ssh.

En esta página, cuya lectura completa recomiendo encarecidamente, vienen varias formas de hacer esto. En mi caso la versión del firmware era la 0.7.1-1 así que ejecutando el comando fondue.pl me conecté por ssh a la fonera.

Paso 2: Conseguir acceso por ssh permanente

En esta otra página vienen los pasos para conseguir el acceso ssh de forma permanente.

Para ellos activamos dropbear de forma permanente en el arranque:

mv /etc/init.d/dropbear /etc/init.d/S50dropbear

abrir el puerto 22 en el firewall agregando estas dos líneas en /etc/firewall.user:

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22
iptables -A input_rule -i $WAN -p tcp --dport 22

evitar que se ejecute código desde los servidores de fon comentando una línea en /bin/thinclient

# . /tmp/.thinclient.sh

Paso 3: Cambiar la configuración de RedBoot para activar el acceso por telnet

Copio liberalmente los pasos de la guía.

Reemplazar el kernel para desactivar la protección de escritura:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://ipkg.k1k2.de/hack/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
root@OpenWrt:~# Connecting to ipkg.k1k2.de[85.10.200.90]:80
openwrt-ar531x-2.4-v 100% |**************************|   512 KB    00:00 ETA
root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
Unlocking vmlinux.bin.l7 ...
Erasing vmlinux.bin.l7 ...
Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to vmlinux.bin.l7 ... [w]
root@OpenWrt:~# reboot

Sobreescribir la configuración de redboot:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://ipkg.k1k2.de/hack/out.hex
root@OpenWrt:~# Connecting to ipkg.k1k2.de[85.10.200.90]:80
out.hex 100% |*******************************| 4096 00:00 ETA
root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
Unlocking RedBoot config ...
Erasing RedBoot config ...
Writing from out.hex to RedBoot config ... [w]
root@OpenWrt:~# reboot

Esta configuración configura la IP 192.168.1.254 en la fonera y abre un servicio de telnet en el puerto 9000 durante 10 segundos.
Con un ifconfig eth0:0 192.168.1.222 netmask 255.255.255.0 estarás en la misma red que el RedBoot de tu fonera.

A partir de ahora utiliza el putty para conectarte por telnet a la fonera, ya que el cliente de consola puede darte problemas en algunas ocasiones.

Y esta era la parte peligrosa. Si consigues conectarte por telnet al puerto 9000 el resto ya no tiene porque enladrillar la fonera. ¿A lo mejor te lo tenía que haber dicho antes? ;-)

Instalar OpenWrt

Instala un servidor de tftp

Necesitamos instalar un servidor de tftp en el que dejar los archivos que luego cargará la fonera.

Para ello puedes instalar el paquete tftpd-hpa y todo lo que dejes en /var/lib/tftpboot podrá verlo la fonera.

Descarga del sistema operativo

Descarga el kernel y el sistema de archivos desde:

Deja ambos archivos en /var/lib/tftpboot.

Configura en RedBoot la IP del servidor de tftp y la suya propia

Tenemos que decirle donde está el servidor de tftp y en caso de que esté en otra red, configurársela.

RedBoot> ip_address -h  -l /24
IP: [...], Gateway: 0.0.0.0
Default server: [...]

Por ejemplo, si has instalado el servidor de tftp en tu PC con la ip 192.168.1.222 el comando siguiente debería servirte:

RedBoot> ip_address -h 192.168.1.222 -l 192.168.1.254/24

Descarga e instala las imágenes

Cargamos el kernel:

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded [...], assumed entry at [...]

Inicializamos la tabla de particiones (FIS):

RedBoot> fis init

Ahora volcamos la imagen del kernel. Ten en cuenta que en el par de minutos que tarda parecerá que la fonera se ha frito. Pero no te preocupes que, como dije antes, la parte peligrosa ya pasó:

RedBoot> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
... Erase from 0xa8730000-0xa87e0000: ...........
... Program from 0x80041000-0x800f1000 at 0xa8730000: ...........
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Ahora volcamos el sistema de archivos:

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP)

Raw file loaded 0x80041000-0x80200fff, assumed entry at 0x80041000
RedBoot> fis create rootfs
... Erase from 0xa8030000-0xa8730000: ................................................................................................................
... Program from 0x80041000-0x80741000 at 0xa8030000: ..............................................................................................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Comprobamos con un fconfig -l -nque en el script de arranque se hace referencia al kernel que hemos instalado y sino lo cambiamos:

RedBoot> fconfig boot_script_data 
boot_script_data: 
.. fis load -l vmlinux.bin.1
.. exec
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>> 
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

Reiniciar el router.

RedBoot> reset

Recuerda que todavía no estás en OpenWrt donde el comando si sería reboot.

Configuración inicial de OpenWrt

Cambia la contraseña

Te conectas por telnet al router (puerto 23, no 9000). La contraseña es admin.
Dentro ejecutas passwd y le cambias la contraseña a root. Reinicia y podrás conectarte por ssh a la fonera.

Configuración de la red

OpenWrt arranca un interfaz web muy chulo para su configuración a golpe de click.
Para familiarizarte con ella ponle una IP de tu red y reinicia usando la interfaz web.

Un primer contacto con OpenWrt

Capacidades

El problema de estas máquinas es que tienen una capacidad extremadamente limitada. No puedes ponerte a instalar paquetes sin parar porque solo tienes 5MB de sitio en disco. Si, 5.4MB, no me he equivocado al escribirlo.

root@pandora:/etc/config# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.5M      1.5M         0 100% /
/dev/root                 1.5M      1.5M         0 100% /rom
tmpfs                     6.7M     40.0k      6.6M   1% /tmp
tmpfs                   512.0k         0    512.0k   0% /dev
/dev/mtdblock3            5.4M      5.1M    308.0k  94% /jffs
mini_fo:/jffs             1.5M      1.5M         0 100% /
root@pandora:/etc/config#

Y la memoria, 16MB ¡más memoria que disco de datos!

root@pandora:/etc/config# free
              total         used         free       shared      buffers
  Mem:        13672        11960         1712            0         1088
 Swap:            0            0            0
Total:        13672        11960         1712
root@pandora:/etc/config#

Ten esto siempre en mente antes de instalar cualquier cosa.

Instalación y configuración del sistema

Siempre que arranques la fonera la lista de paquetes disponibles habrá desaparecido. Utiliza opkg update para bajártela cada vez que arranques. Sino te ocurrirá esto:

root@OpenWrt:~# opkg install luci-app-mmc_over_gpio
An error ocurred, return value: 716563936.
root@OpenWrt:~#

Si, como yo, eres un adicto al Ctrl-r, puedes instalarte la bash con un opkg install bash y luego, en el home de root crear un archivo .profile con el contenido /bin/bash.

root@OpenWrt:~# opkg install bash
Installing bash (3.2-2) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/bash_3.2-2_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
bash_3.2-2_mips.ipk  100% |*********************************************************************************************|   297k 00:00:00 ETA
Installing libncurses (5.6-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libncurses_5.6-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libncurses_5.6-1_mip 100% |*********************************************************************************************|   135k --:--:-- ETA
Configuring bash
Configuring libncurses
root@OpenWrt:~#

¡Ya tenemos history!

Prueba a configurar el hostname en /etc/config/system a ver que pasa.

Como ves, es otro linux.

Alimentación por USB

Como no me apetecía tener que llevar el transformador de un lado para el otro corté un cable usb por la mitad, le soldé un terminal con el positivo (rojo) en el centro y el negativo (negro) en el cuerpo.

Y ya tenemos fonera portable.

Si quisiéramos alimentación PoE, hubiera bastado con usar dos de los cables que no usa la fonera, por ejemplo los marrones, y conectarlos a las patas de alimentación.

Instalación del lector de tarjetas SD

Para quitarnos el problema del almacenamiento vamos poner una tarjeta SD en la máquina, la formateamos como ext3, la montamos en /mnt/sdcard y luego movemos las cosas que nos interesan a la tarjeta para dejar espacio libre y hacemos enlaces blandos.

Hay una guía bastante buena en la que se explica como hacer las conexiones pero se deja cosas sueltas así que la he intentado aclarar un poco

Extracción y localización del lector de tarjetas

Utilizamos un lector de tarjetas roto:

Normalmente la gente usa el soldador pero yo lo intento usar lo menos posible por eso de que al plástico no le gusta el calor y tal.
Aprovechando que las soldaduras son superficiales y que el estaño es blando, se corta con una navaja el estaño del lector:

Tras ponerlo en la parte de atrás, vemos que los cables coinciden exactamente con los agujeros ¿que mejor sitio que este para ponerlo?

Cables a utilizar

Recomiendo siempre utilizar cables de red rígidos para estas cosas. El estaño se agarra bien y son flexibles pero rígidos cuando nos interesa.

Eliminar condensadores

Elimina estos condensadores con el soldador. No se porqué hay que hacerlo pero si no se quitan no funciona:

Soldar cables a la tarjeta SD

El esquema de conexiones desde el punto de vista de la tarjeta SD en texto sería algo así:

SD Card      -----   Fonera
 CS  (pin 1)          SW6
 DI  (pin 2)          SW5
 Gnd (pin 3)          Gnd
 Vcc (pin 4)          Vcc
 CLK (pin 5)          SW2
 Gnd (pin 6)          Gnd
 DO  (pin 7)          SW1

El orden de los cables del 1 al 7 es azul, marrón claro, blanco-azul, naranja, verde, blanco-azul, marrón oscuro.
Fíjate en como están soldados el 3 y el 6 ya que en realidad son el mismo cable.

Alimentación del lector de tarjetas

El naranja y el blanco-azul son el positivo y el negativo y van a los conectores que se usan también para el puerto serie:

Soldar los cables a la fonera

El esquema de conexiones desde el punto de vista de la fonera en texto sería algo así:

SD Card      -----   Fonera
 DO  (pin 7)          SW1
 CLK (pin 5)          SW2
 DI  (pin 2)          SW5
 CS  (pin 1)          SW6
 Gnd (pin 3 and 6)    Gnd
 Vcc (pin 4)          Vcc

Donde el 1 está al lado del conector ethernet y el 6 es el que está más lejos.

Y el orden de los cables es marrón, verde, _ , _ , marrón claro, azul.
Como se puede ver los condensadores ya no están.

Conexiones terminadas

Aquí se puede ver una foto de todas las conexiones desde arriba:

Y aquí como queda la tarjeta SD pegada a la parte de abajo:

Instalación y configuración del lector de tarjetas

Instalar el software para la detección de tarjeta

Actualizamos con opkg update e instalamos el software necesario con opkg install luci-app-mmc_over_gpio:

root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/Packages.gz
Connecting to downloads.openwrt.org (78.24.191.177:80)
Packages.gz          100% |**********************************************************************|   142k 00:00:00 ETA
Inflating http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/snapshots
root@OpenWrt:~# opkg install luci-app-mmc_over_gpio
Installing luci-app-mmc_over_gpio (0.8.8-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/luci-app-mmc_over_gpio_0.8.8-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
luci-app-mmc_over_gp 100% |**********************************************************************|  2079  --:--:-- ETA
....

Y editamos la sección de start() en el archivo /etc/init.d/mmc_over_gpio. Donde pone add_device "default" 5 4 3 7 0 tenemos que comentarla y agregar unas líneas:

        #add_device "default" 5 4 3 7 0                                       
        add_device "default" 1 3 4 14 0                                       
        sleep 2                                                               
        remove_device "default"                                               
        sleep 2                                                               
        add_device "default" 1 3 4 7 0              

Si ejecutamos /etc/init.d/mmc_over_gpio start y ejecutamos dmesg deberíamos ver al final algo como esto:

mmc0: new SD card on SPI
mmcblk0: mmc0:0000 SD128 123008KiB 
 mmcblk0: p1

Si esto funciona, ya tienes la tarjeta funcionando.

Sistema de archivos de la tarjeta

Si intentas montar la partición donde está el sistema de archivos te dirá algo como file not found.

Eso es porque faltan los módulos del kernel para vfat, ext3 y casi todos los sistemas de archivos que se usan en otros sistemas operativos.

Vamos a instalarlos tanto para vfat como para ext3, que será el que usaremos:

root@OpenWrt:~# opkg install kmod-fs-vfat kmod-fs-ext3 kmod-nls-cp437 kmod-nls-cp850 kmod-nls-iso8859-15
Installing kmod-fs-vfat (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-fs-vfat_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-fs-vfat_2.6.26. 100% |*********************************************************************************************| 37598  --:--:-- ETA
Installing kmod-fs-ext3 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-fs-ext3_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-fs-ext3_2.6.26. 100% |************************************************************************************************************| 92529  --:--:-- ETA
Installing kmod-nls-base (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-base_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-base_2.6.26 100% |*********************************************************************************************|  3719  --:--:-- ETA
Installing kmod-nls-cp437 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-cp437_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-cp437_2.6.2 100% |*********************************************************************************************|  2968  --:--:-- ETA
Installing kmod-nls-cp850 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-cp850_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-cp850_2.6.2 100% |*********************************************************************************************|  2930  --:--:-- ETA
Installing kmod-nls-iso8859-15 (2.6.26.8-atheros-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/kmod-nls-iso8859-15_2.6.26.8-atheros-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
kmod-nls-iso8859-15_ 100% |*********************************************************************************************|  2722  --:--:-- ETA
Configuring kmod-fs-vfat
Configuring kmod-fs-ext3
Configuring kmod-nls-base
Configuring kmod-nls-cp437
Configuring kmod-nls-cp850
Configuring kmod-nls-iso8859-15
root@OpenWrt:~#

Ahora creamos el directorio en el que montar la tarjeta y la montamos ahí. Si es vfat tendremos que pasarle a mount la opción -t vfat y si es ext3 tendremos que pasarle -t ext3.

root@pandora:/jffs/usr/libexec/nagios# mkdir /mnt/sdcard/
root@pandora:/jffs/usr/libexec/nagios# mount /dev/mmcblk0p1 /mnt/sdcard/ -t ext3

Y ahora vamos a instalar algo sin tener espacio para hacerlo, como por ejemplo nagios. Tras instalar el nagios y el nagios-nrpe con un opkg install nagios nagios-plugins nrpe se instala todo menos nagios porque dice que no tiene espacio. Vamos a solucionarlo:

root@pandora:/jffs/usr/libexec/nagios# cd ..
root@pandora:/jffs/usr/libexec# mv  nagios/ /mnt/sdcard/;ln -s /mnt/sdcard/nagios/
root@pandora:/jffs/usr/libexec# opkg install nagios
Installing nagios (2.10-1) to root...
Collected errors:
 * Only have 3468 available blocks on filesystem /, pkg nagios needs 5112
root@pandora:/jffs/usr/libexec# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.5M      1.5M         0 100% /
/dev/root                 1.5M      1.5M         0 100% /rom
tmpfs                     6.7M    752.0k      5.9M  11% /tmp
tmpfs                   512.0k         0    512.0k   0% /dev
/dev/mtdblock3            5.4M      2.1M      3.3M  39% /jffs
mini_fo:/jffs             1.5M      1.5M         0 100% /
/dev/mmcblk0p1          116.2M      6.7M    103.5M   6% /mnt/sdcard
root@pandora:/jffs/usr/libexec#

El no sabe que en realidad si tiene espacio, pero en la tarjeta SD. Vamos a ver si se puede forzar a instalar:

root@pandora:/jffs/usr/libexec# opkg
opkg: opkg must have one sub-command argument
opkg version 0.1.5
usage: opkg [options...] sub-command [arguments...]
where sub-command is one of:

Package Manipulation:
	update  		Update list of available packages
	upgrade			Upgrade all installed packages to latest version
	install 		Download and install  (and dependencies)
	install 	Install package 
	configure []	Configure unpacked packages
	remove 	Remove package 
	flag  ...	Flag package(s) =hold|noprune|user|ok|installed|unpacked (one per invocation)	

Informational Commands:
	list    		List available packages and descriptions
	list_installed		List all and only the installed packages and description 
	files 		List all files belonging to 
	search 		Search for a package providing 
	info [pkg|regexp]		Display all info for 
	status [pkg|regexp]		Display all status for 
	download 		Download  to current directory.
	compare_versions 
	                          compare versions using  >= = >
	print_architecture      prints the architecture.
	print_installation_architecture
	whatdepends [-A] [pkgname|pat]+
	whatdependsrec [-A] [pkgname|pat]+
	whatprovides [-A] [pkgname|pat]+
	whatconflicts [-A] [pkgname|pat]+
	whatreplaces [-A] [pkgname|pat]+
	                        prints the installation architecture.

Options:
	-A                      Query all packages with whatdepends, whatprovides, whatreplaces, whatconflicts
	-V                Set verbosity level to . If no value is
	--verbosity       provided increase verbosity by one. Verbosity levels:
	                         0 errors only
	                         1 normal messages (default)
	                         2 informative messages
	                         3 debug output
	-f 		Use  as the opkg configuration file
	-conf 	Default configuration file location
				is /etc/opkg.conf
	-d 		Use  as the the root directory for
	-dest 	package installation, removal, upgrading.
				 should be a defined dest name from
				the configuration file, (but can also be a
				directory name in a pinch).
	-o 	Use  as the root directory for
	-offline 	offline installation of packages.
	Force Options (use when opkg is too smart for its own good):
	-force-depends		Make dependency checks warnings instead of errors
					Install/remove package in spite of failed dependences
	-force-defaults		Use default options for questions asked by opkg.
				(no prompts). Note that this will not prevent
				package installation scripts from prompting.
	-force-reinstall 	Allow opkg to reinstall a package.
	-force-overwrite 	Allow opkg to overwrite files from another package during an install.
	-force-downgrade 	Allow opkg to downgrade packages.
	-force_space            Install even if there does not seem to be enough space.
	-noaction               No action -- test only
	-nodeps                 Do not follow dependences
	-force-removal-of-dependent-packages
	-recursive	 	Allow opkg to remove package and all that depend on it.
	-autoremove	 	Allow opkg to remove packages that where installed automatically to satisfy dependencies.
	-test                   No action -- test only
	-t	 	        Specify tmp-dir.
	--tmp-dir 	        Specify tmp-dir.

	regexp could be something like 'pkgname*' '*file*' or similar
	eg: opkg info 'libstd*'  or opkg search '*libop*' or opkg remove 'libncur*'
root@pandora:/jffs/usr/libexec#

Eso de -force_space tiene buena pinta:

root@pandora:/jffs/usr/libexec# opkg install -force_space nagios
Installing nagios (2.10-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/nagios_2.10-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
nagios_2.10-1_mips.i 100% |*******************************|  2022k 00:00:00 ETA
Installing libpthread (0.9.29-14.3) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libpthread_0.9.29-14.3_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libpthread_0.9.29-14 100% |*******************************| 19212  --:--:-- ETA
Installing microperl (5.10.0-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/microperl_5.10.0-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
microperl_5.10.0-1_m 100% |*******************************|   434k 00:00:00 ETA
Installing libltdl (1.5.24-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/libltdl_1.5.24-1_mips.ipk
Connecting to downloads.openwrt.org (78.24.191.177:80)
libltdl_1.5.24-1_mip 100% |*******************************| 11443  00:00:00 ETA
Configuring libltdl
Configuring libpthread
Configuring microperl
Configuring nagios
root@pandora:/jffs/usr/libexec# 

Y ya tenemos nagios instalado en la fonera.

AdjuntoTamaño
Image icon 00_presentacion.320w.png85.94 KB