How-to ProAp



Compré un ProAp... ¿Y ahora qué?

A: Bueno, yo ya compre todo para armar un ProAp, pero enchufé todo y no pasa nada... ¿Qué hago? ¿Mando un 
    correo a la lista de "Voip" y me pongo a hablar de la 2da Ley de Newton?
B: ¿Eh? ¡Bancá! Tenés que instalarle un sistema operativo potente que se encargue de: hacer todo el enrutado de 
    paquetes, gestionar la seguridad de la red, que pueda informarte de eventos de seguridad, que se pueda 
    mantener actualizada en caso de fallas, que tenga buen soporte técnico y que te pueda ofrece soluciones 
    inmediatas etc.
A: ¡Ah! Ahora entiendo. ¡Ya sé! ¡Le meto el Windoze Equisé Service Pack 4.811 con el parche de seguridad y toda 
    la bola! Pero con Pentium 166 y 32 megas no va a correr che...
B: Vas a ver que no... Además creo no cumple con nada de lo que mencioné. Así que, no. Tenés que instalarte un Linux.
A: Ajá... Y eso... ¿Con qué se come? 


Este podría ser un típico intercambio de palabras entre 2 integrantes de la comunidad BAL de la cuál no hay por qué apenarse. Si estás en el caso del sujeto A, quizás este documento te pueda ayudar, o quizás simplemente alimente tu ira contra el shell, esa cosa en la que no tenes tu mouse, y que son todas cosas raras que se escriben :\

Éste documento está orientado a la instalación base para ProAP, ya que debido a sus características limitadas de hardware, vamos a instalar minidistros especialmente diseñadas para este tipo de equipos. ¡Sí, con Pentium 166 y 32 megas alcanza!

A: Ok... ahora, ¿Por dónde empiezo? 
B: ... por el principio 

¿Qué instalo?

Primero, aquí entra un tema de gustos y colores, ya que si bien se puede utilizar cualquier Linux para llevar a cabo ésta tarea, hay distros que están mejor preparadas para hacerlo.

Voyage Linux

Voyage Linux es una minidistro basada en Debian Sarge (la versión estable MAY, 2006), sucesora de Pebble Linux basada en Debian Woody (la versión estable anterior a Debian Sarge). Esta distro en particular se caracteriza por tener un sistema totalmente funcional en aproximadamente unos 15 minutos, con todo listo para activar aspectos avanzados como Túneles Cliente-Servidor (VPNs), seguridad WPA, WatchDog timer (implementado vía soft en caso de no detectar el hardware, muy útil ante mal funcionamiento del equipo Ver Definición, montaje de sólo lectura por defecto, lo que hace que no se pierda información al tirar del cable de corriente o ante un corte de luz, etc.

Ventajas de Voyage Linux

Además, al estar basada en Debian, posee las ventajas de la herramienta apt/aptitude, la cual brinda la posibilidad de instalar cualquier paquete con sólo hacer "apt-get install paquete". Actualmente los repositorios públicos oficiales de Debian poseen más de 12.000 paquetes en la rama Estable, y cerca de 18.000 en la rama Inestable.

Debian

Debian es una distribución que utiliza el kernel de Linux para formar un sistema operativo íntegro y sólido, fácil de administrar y el preferido para la instalación de mega servidores. Debian se hace llamar a si misma, "The Universal Operating System" (en español, "El Sistema Operativo Universal") y esto se debe a que es un todo terreno que combina perfectamente un pc escritorio con pc servidor, sin tener que hacer ningún tipo de cambio adicional (un dato, Debian es la distro más utilizada a la hora de crear distros, hoy en día han sobrepasado las 500 puras y más de 2800 basadas en Morphix, el cual a su vez está basada en Debian, ¿Qué tal? ;) )

Slackware

Slackware es la distribución de Linux más antigua de las que se siguen manteniendo. NO es una opción recomendada para novatos en el mundo de Linux pero, al mismo tiempo, es la opción ideal si se desea aprender mucho sobre Linux (a los porrazos limpios). En esta misma wiki se puede encontrar una guía paso a paso de como montar un ProAp sobre Slackware; lo cual es algo increible debido a que buscar ayuda o tutoriales en internet sobre Slackware no es tan fácil como buscar ayuda con distribuciones más populares como Ubuntu, Fedora, Debian, etc.

How-to ProAp sobre Slackware

¿Hay otras distros para usar?

Por supuesto! técnicamente cualquier distribución de Linux podría ser transformada en un ProAp (algunas con mayor o menor dificultad que otras)

Otra buena distro es M0n0wall, basada en FreeBSD, la cual tiene un muy bonito sistema de Traffic Shaping pero no disponemos de la flexibilidad que nos otorga el empaquetamiento de Debian, ni de las bondades del apt/aptitude.

¿De qué se trata este documento?

Este documento habla sobre cómo configurar un ProAp con Voyage Linux al famoso modo "Receta de cocina". -> (Nota: no estaría nada mal leer un tutorial rápido sobre el manejo de Linux para su futura administración)

"¡Dale gaaaaas!"

Hay varias formas de instalar Voyage Linux (en adelante sólo "Voyage").

Descargando Voyage Linux ...

Voyage nos provee de dos formas distintas de instalación:

Instalando desde un sistema Linux en ejecución con el paquete que puedes encontrar en: http://www.voyage.hk/download/voyage/

O bien descargando una ISO con un LiveCD dentro y Voyage incluido, con lo cual no es necesario tener un sistema Linux.

-> Nota: Como el proceso de instalación es un pesado para un Pentium 166 con 16 mb de ram, recomiendo hacer la instalación en otro pc un poco más veloz, respetando la unidad de destino (si es primary master, deberá ser primary master en el ProAp).

Instalando desde LiveCD que provee Voyage

Una de ellas es utilizar el LiveCD que Voyage provee http://voyage.hk/download/ISO/voyage-0.2.iso y grabarla con nuestro grabador de cds favorito (en este documento se usara la versión 0.2 para poder hacer uso de los módulos empaquetados por el que escribe). Luego setear el BIOS para que bootee desde la unidad de Cdroms e insertar el cd antes de aceptar los cambios y salir.

Luego de terminar el proceso de carga, nos mostrará algo como esto:

Debian GNU/Linux 3.1 voyage tt1


voyage login: 

Escribimos como login "root" y luego le damos al enter. Entonces ahora creamos el punto de montaje del dispositivo:

# mkdir -p /mnt/Voyage

Preparando el dispositivo físico

NOTA: Aquí los que usan Cardflash o dispositivos de memoria flash usb deberan usar "/dev/sdX" (sda, sdb, sdc, etc) en vez de "/dev/hdX" que usaré de aqui en adelante.

Ahora comenzaremos el particionado y la asignación del sistema de archivos que usaremos en nuestro ProAp.

Particionando el disco

Este es un buen momento para la ecología. Se supone que, como el ProAp cumplirá su función 24/7, su disco duro estará en constante funcionamiento y, aunque en realidad su desgaste sólo depende del acceso al disco, no sería una mala idea reciclar esos discos duros de 100 o 250 mbytes que están cumpliendo una tarea muy importante como apoya papeles.

Gracias a las herramientas casi estándares de Linux, podremos realizar esta tarea sin mayor esfuerzo, prosigamos...

# cfdisk /dev/hda 

                                            cfdisk 2.12p
                                         Disk Drive: /dev/hda
                                     Size: 252032000 bytes, 252 MB
                          Heads: 10   Sectors per Track: 55   Cylinders: 895

     Name           Flags          Part Type    FS Type               [Label]            Size (MB)
 -----------------------------------------------------------------------------------------------------
                                    Pri/Log     Free Space                                  252.04     
                                    



      [  Help  ]  [  New   ]  [ Print  ]  [  Quit  ]  [ Units  ]  [ Write  ]

En mi caso estoy utilizando un disco duro de 250 mbytes conectado como maestro primario que, literalmente, estaba abajo de la mesa, y sorprendentemente sigue funcionando :D Con el cursor vamos a "New" y creamos una partición primaria del total de la capacidad del disco (no sería mala idea crear una más pequeña para intercambio Swap), luego vamos a "Write" y aceptamos los cambios y salimos. Debería de quedarnos algo asi:

                                             cfdisk 2.12p
                                         Disk Drive: /dev/hda
                                     Size: 252032000 bytes, 252 MB
                          Heads: 10   Sectors per Track: 55   Cylinders: 895

     Name           Flags          Part Type    FS Type               [Label]            Size (MB)
 -----------------------------------------------------------------------------------------------------
     hda1                           Primary     Linux ext3            [/]                   251.91     





      [Bootable]  [ Delete ]  [  Help  ]  [Maximize]  [ Print  ]  [  Quit  ]  [  Type  ]

Creando los sistemas de archivos

A diferencia de lo que recomienda Voyage, yo preferí usar Ext3 a Ext2, ya que éste último no posee journalism. Así que, aquí decidís vos; creamos el sistema de archivos:

# mkfs.ext3 /dev/hda1
  # tune2fs -c 0 /dev/hda1 

Copiando los archivos al nuevo disco ProAp

Éste LiveCD ya contiene el archivo que deberíamos descargar en caso de usar una instalación sobre un sistema Linux, y se encuentra en la ruta "/KNOPPIX/voyage-0.2/", asi que proseguimos directo con la copia:

# /KNOPPIX/voyage-0.2/voyage.update

Nos hará un par de preguntas:

Welcome to the Voyage Linux installation script


Where is the Voyage Linux installer (this) directory? (default=/): 
/KNOPPIX/voyage-0.2/


Which device accesses the disk? (default=/dev/hde): 
/dev/hda


Which directory should the disk or flash card mount? (default=/mnt/cf): 
/mnt/Voyage


Which module to install? 
        1 - WRAP
        2 - 4501/4801
        3 - 4511/4521
        4 - Notebook (pcmcia)
        5 - Generic PC
        (default=1): 
5


Saving defaults to .voyage.config


Configuration completed:
-----------------------

Installer directory: /KNOPPIX/voyage-0.2/

Disk/Flash Device:   /dev/hda
Will be mounted on:  /mnt/Voyage

Installation mode:   5

If press RETURN to start installation, otherwise hit CTRL+C

Luego de presionar Enter, comenzará el proceso automatizado de copiado e instalación, el cual no debería tardar más de 20 minutos en un equipo Pentium 2 64 mbytes.

Hasta aquí la instalación. Si seguiste todos los pasos, tendrías que poder bootear con este disco (correctamente configurado en el bios).

Instalando desde un sistema Linux en ejectución

Otra forma de instalar Voyage es disponer de un sistema Linux corriendo actualmente, en donde te descargas el archivo que incluye todo el Voyage: http://www.voyage.hk/download/voyage/ (en este documento se usará la versión 0.2 pre4 para poder hacer uso de los módulos empaquetados por el que escribe).

Luego descomprimimos el archivo que hemos descargado (y que esta en nuestro "/home/usuario/":

# mkdir -p /tmp/Voyage
 # cd /tmp/Voyage
 # tar --numeric-owner -zxf /home/usuario/voyage-0.2pre4.tar.gz 

Luego desde aquí, el proceso es exactamente el mismo que en la instalación con el modo LiveCD, sólo que hay que tener MUCHO cuidado con el nombre de los dispositivos, no sea cosa que intentes escribir en otra unidad que no sea el del Voyage. Y en cuando el instalador "voyage.update" pregunte por la ruta de los archivos, en vez de dar la del LiveCD, daremos "/tmp/Voyage".

Configurando el ProAp

Si llegaste hasta acá, o bien te salteaste todo el resto :P , o bien has terminado la instalación correctamente. Sólo faltaría lo que respecta a la instalación del paquete del ZD1201, configuración del sistema y de las interfaces de red, optimización, y plus.

Instalando el controlador ZD1201

Por algún motivo extraño y si bien el controlador del ZD1201 está ya soportado en kernels >= 2.6.12, el equipo de Voyage no lo ha incluido dentro del kernel precompilado que viene de fábrica. Así que yo, como buen colaborador, me tomé el tiempo (créanme, no fueron unos minutos nada más) y lo he compilado, junto con 2 firmwares. Uno que soporta modo Infraestructura y AdHoc, y otro que soporta modo Master. Para mayor practicidad lo he empaquetado, pero OJO, sólo funciona con el kernel que viene incluido con el paquete (versión 2.6.15-486-voyage).

Así que, una vez que hayamos reiniciado con nuestro sistema Voyage YA funcionando, hacemos:

 # wget http://www.dererk.com.ar/voyage/zd1201/zd1201-2.6.15-486-voyage.deb 
 # dpkg -i zd1201-2.6.15-486-voyage.deb

Configuración del sistema

Voyage está prácticamente listo para funcionar, sólo vamos a tocar unos parámetros necesarios para que funcione correctamente.

/etc/modules

En éste archivo debes tener todos los módules que deberán ser cargados en el núcleo en el proceso de booteo, cabe aclarar que algunos módulos se cargan automáticamente cuando es detectado el hardware, pero, no es el caso de los dispositivos que no son plug-n-play, como las placas de red isa.

Forzosamente deberémos cargar el módulo del ZD1201 para pasarle cómo parámetro de activación el bit a modo Master, entonces hacemos:

# echo "zd1201 ap=1" >> /etc/modules

En caso de tener más de una interfaz con el mismo prefijo, EthX, deberás agregar todos los controladores de red en el archivo /etc/modules según el orden que esperas que tomen. Por ejemplo, si el ProAp, además de hacer de Punto de Acceso querés que haga de router (cosa que es bien común), basta con agregar otra interfaz de red. En mi caso yo tenía 2 placas de red ethernet, una isa 3c509 y otra pci 3c59x. Si quiero que la placa isa sea "Eth0", entonces deberé nombrarla antes que la pci en el archivo "/etc/modules". En mi caso quedaría algo asi:

natsemi
hostap_pci
zd1201 ap=1
3c509
3c59x
ip_tables
ip_nat

Configuración de interfaces de red

Para que nuestra configuración de red sea permanente, deberemos especificar números IPs, máscaras de red, puertas de enlace, y de que modo se comportaran para la obtención de la Resolución de IPs.

/etc/network/interfaces

Este archivo es el más importante en cuánto a la configuración de red respecta. Se encuentra dividido en bloques por interfaces de red, en mi ejemplo sería:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.11.125
        netmask 255.255.255.0
        gateway 192.168.11.254

auto eth1 
iface eth1 inet static
        address 192.168.8.125
        netmask 255.255.255.0

auto wlan0                                                                     
iface wlan0 inet static                                                        
        address 10.10.10.10                                                      
        netmask 255.255.255.0
        up iwconfig wlan0 essid NodoVI mode Master                             
        up nat.sh wlan0 eth0 "10.10.10.0/24"

En donde Eth0 es la interfaz que tiene conectividad hacia la internet, por medio de la puerta de enlace "192.168.11.254". Eth1 es una interfaz a la cual se conecta un switch, haciendo ésta pc de gateway para una red interna. Wlan0 es mi interfaz provista por el Dongle ZD1201, el cual tiene como essid "NodoVI".

-> Nota: Es MUY importante agregar esta última línea, sino no se activará el NAT.

¿Por qué Dhcpd?

Dhcp quiere decir "Dinamic Host Configuration Protocol" (Dynamic Host Configuration Protocol), y nos facilita el trabajo de configuración de los clientes que nos accederán. Por otro lado, a menos que nosotros le digamos a nuestros clientes "Mi IP es ésta, y la puerta de enlace es ésta", no tendrá forma (en una forma no-sniffing) de conectarse.

El Dhcp esta integrado en Voyage con un servicio que tambien hace que nuestro ProAp sea un DNS server. El paquete se llama Dnsmasq, y en verdad que está interesante.

Configurando el servicio de Dhcp

El archivo de configuración es *realmente* muy extenso, así que sólo vamos a agregar al final del archivo las líneas que nos interesan a nosotros. Estas son, en qué interfaz escuchar Dhcp requests (solicitudes) y qué rango asignarles. Entonces agregamos las siguientes lineas al archivo "/etc/dnsmasq.conf":

interface=wlan0
domain=nodovi.ar
dhcp-range=10.10.10.100,10.10.10.200,1h

Esto sencillamente dice "Escuchá en la interfaz de red Wlan0, mi nombre de dominio será NodoVI, y el rango que vas a asignar de IPs va desde el 10.10.10.100 hasta el 10.10.10.200 con 1 hora de renovación. También debemos comentar o borrar una línea (al agregar un "#" al principio de la línea, el parser la reconoce como un comentario y lo ignora, igual que como si no estuviera), asi que quedaría así:

#conf-file=/etc/dnsmasq.more.conf 

¿Por qué no Dhcpd?

Cómo se puede ver, la configuración de los clientes con Dhcp es muy fácil. El tema es que, al ser tan fácil para nuestros clientes, también se les simplifica el trabajo a los usuarios no permitidos, o a esos chiquillos con granos en la cara y que les encanta compartir con sus compañeros de 4to año la clásica frase "¡Uh! ¡No sabés, ayer entre a una red loco! ¡Soy re Hacker! ¡Próspero, tememe!" (cuac) Así que, si bien es muy práctico, es un arma de doble filo, y hay que tener en cuenta esto. Una posible solución es implementar algún tipo de seguridad a otra capa, como una VPN o túnel de red, o bien la autenticación del usuario conectado para brindarle servicios (ver NoCatAuth al pié).

-> Nota: MUY recomendable cerrar todos los puertos excepto los de los servicios que tenemos en mente brindar (comunmente Navegación y Correo, el resto ¡DROP!)

/etc/resolv.conf

En éste archivo se declaran las DNS. Es importante modificarlo para poder luego utilizar éste Voyage como DNS server a su vez (lo que hace es sólo un forward de solicitudes, pero, para el cliente, ésto es transparente). La sintaxis es:

search 
nameserver IP-primaria
nameserver IP-secundaria 

Optimización del Sistema

El sistema está practicamente ajustado para no perder recursos en paquetes o aplicaciones innecesarias corriendo en background. Ajustaremos unas cositas más, obviamente, si dejamos todo como está, el sistema va a seguir funcionando bien.

/etc/inittab

Al final del archivo hay una sección que dice:

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6 

Cada línea de estas repesenta un TTy, o sea, un terminal accesible físicamente desde el equipo en cuestión. El problema con tener 6 de éstas corriendo es que, además de muy difícilmente llegar a utilizarlas todas ALGUNA vez (y en cuyo casi, si las llegaras a necesitar, un Screen te serviría más), cada una consume cerca de 25kb de memoria con el sólo hecho de estar en stand-by esperando por alguien para ser accedida. Sería una MUY mala idea desactivarlas todas, pero no sería mala desactivar de la tercera a la sexta. Esto se logra comentando la línea (agregando un "#" al comienzo) o bien borrándola.

Instalación de servicios Out-Of-The-Box

Al tener unos equipitos de estos corriendo es altamente tentador instalar varias aplicaciones y servicios de red, como por ejemplo, un Webmin para administrarlo, un servidor Ftp o un Httpd liviano, una idea bastante inteligente sería forzar a estos servicios a correr bajo las ordenes de inetd. Inetd es una capa de abstracción, la cual algunos consideran mucho más segura que tener el servicio corriendo 24/7, en la que se declaran los servicios que se activaran al momento de recibir una solicitud. Inetd entonces activará el servicio, y una vez que la transacción se haya completado, la aplicación se cerrará hasta la proxima solicitud.

A: ¿Y para qué carajo me sirve esto? ¡Va estar abriéndose y cerrándose cada vez que lo abra!
 B: (anodadado por la pregunta, pone cara de poker)  
 C: ¡Viste, te dije, estos frikis están todo el día haciendo cosas al reverendo pedo! 

Bueno, la respuesta es casi intuitiva. Al no estar el servicio corriendo 24/7, no estará consumiendo nuestros presiados recursos, sólo se activarán en el momento en que se necesiten.

¿Y.. no hay un plus?

Las cosas que se le pueden hacer a este equipito esta limitadas por tu imaginación (¡Ouch! :P )

Yo con mis 0 conocimientos de electrónica hice un circuito muy chongo (léase, "simplón") que me muestra el estado del equipo en todo momento. Si alguien lo pinguea, si hay algun servicio que esté caído, si está en proceso de booteo, en que Runlevel está corriendo. Por supuesto que me llevo un poco (bastante) de tiempo tenerlo a punto, pero, ¡HEY! la gracia es aprender, ¿no?

Voyage tiene integrado un sistema de Autenticación de Usuario con portal cautivo, llamado NoCatAuth. El sistema está realmente interesante, y puede implementarse con solo cambiar tres parámetros es sus archivos de configuración. Más info: ver "Enlaces".

Enlaces

Tutorial sobre No Cat - http://www.pinedawireless.net/documentacion/nocatbox-howto-es.pdf

Voyage Linux - http://www.voyage.hk/


MarianoDererkVelez <dererk AT NOSPAM madap . com . ar>

Wiki: HowToProAp (last edited 2011-03-22 14:34:32 by MarianoDererkVelez)

USLA