USR2450 con LinuxAP, configuración como PA+Router (Runlevel 4)
Nota: Este documento esta "inspirado" ;) en el trabajo de Querubain de www.zaragozawireless.org y Pere Espunya de www.olotwireless.net cuyos documentos me han sido de gran ayuda para iniciarme en el toqueteo de este querido bichito que es el USR2450 (Que quieres, tanto roce acaba en cariño ;)
Y gracias también a la gente de la lista de correo de LinuxAP en www.redlibre.net por el fantástico cable que me han echado, y a la lista de mi comunidad wireless aquí en Vitoria, www.anuestroaire.net que también han apoyado lo suyo, Saluditos y gracias a tos!
Intro:
Este documento es aplicable, al menos, a la versión Viernes 13-9-2002 de LinuxAP. Partimos de la base de que el Runlevel 4 no funciona correctamente aun... Según Keith E Smith, creador de LinuxAP, no esta testado, simplemente se ha "metido" ahí. Con algunos "retoques" se puede echar a andar. Eso es lo que vamos a describir aquí, además orientado a un ejemplo típico en una topología de red típicamente casera :)
Topología:
Supongamos que tenemos una LAN casera, que sale a Internet por un router mu majo :) y que de repente llega a nuestras vidas un PA USR2450 con LinuxAP y una tarjeta wireless para colocar en nuestro portátil o en ese equipo tan alejado del hub que no nos compensa tirar cable ;) La idea es crear una red wlan, con una rango de ips diferente al de nuestra lan, pero con conectividad a ella y al router adsl, para poder acceder a Internet desde la wlan. Un esquemita:

IPs de las máquinas:
Cada uno deberá ajustar, durante toda esta explicación, las direcciones ip que hemos elegido a las que tenga en su LAN. O puede cambiar las ips que tenga y poner estas, a gusto del consumidor ;)
Tenemos 2 redes diferentes, con dos rangos privados de ip diferentes:
LAN: 172.26.0.0/24, asignadas a mano o por un servidor DHCP en la LAN.
WLAN: 192.168.0.0/24, asignadas por DHCP por el USR2450 (conveniente)
En nuestro PA, una ip para cada interfaz:
Interfaz Ethernet: eth0: 172.26.0.10
Interfaz Wireless: wlan0: 192.168.0.10
Nuestro router adsl debe tener una ip del rango de
la LAN:
Interfaz Ethernet del router: 172.26.0.1
Y el cliente WLAN recogerá la IP del servidor DHCP del PA en
cuanto este arranque:
Interfaz wireless del cliente: 192.268.0.1
Las ip de los DNS necesarios para la resolución de nombres de
Internet: (pueden ser los de tu proveedor u otros DNS de carácter publico)
DNS Primario 195.235.113.3
DNS Secundario 195.235.96.90
Configuración del bichito desde la consola:
Con un cable null modem (Háztelo
tu mismo) conectado al puerto RS-232 del PA, conectamos
con un programa emulador de terminal (Linux: minicom, Windows: hyperterminal)
con la siguiente configuración: 4800 baudios, 8 bits, Paridad N, y 1 bit de
parada.
Ya dentro, iremos hasta /etc/rw que es donde encontraremos los
ficheros de configuración:
# cd /etc/rw
# ls
netcfg telnetd.hosts udhcpd.leases
runlevel udhcpd.conf wlan0
Cambiaremos el runlevel del PA al 4:
# echo "4" > runlevel
Crearemos un fichero para indicarle los servidores dns al PA (para
resolución propia, así que es opcional):
# echo "nameserver 195.235.113.3" > resolv.conf
# echo "nameserver 195.235.96.90" >> resolv.conf
Modificaremos el fichero de configuración del dhcpd, llamado udhcpd.conf, para habilitar el servidor, indicarle el rango de ips que tiene que servir, los dns para los clientes, y porque interfaz va a realizar la asignación: (lo que hay entre paréntesis son mis comentarios)
# vi udhcpd.conf
# udhcpd.conf enable
(poner enable para habilitar el dhcpd)
start 192.168.0.1
(Ip de comienzo del rango de ips para asignar)
end 192.168.0.9
(Ip final del rango de ips para asignar)
interface wlan0
(interfaz por el que hacer las asignaciones de ip)
lease_file /etc/rw/udhcpd.leases (fichero en el que guarda datos sobre
las asignaciones)
option dns 195.235.113.3
(DNS primario que va a asignar al cliente)
option dns 195.235.96.90 (DNS
secundario que va a asignar al cliente)
option subnet 255.255.255.0 (Mascara)
option router 192.168.0.10 (Puerta
de enlace predeterminada para los clientes)
option domain test
(Nombre de dominio, he puesto test como podía haber puesto prueba :)
option lease 86400
(Tiempo durante el que se va a ceder la ip, viene así por defecto)
Modificaremos el fichero wlan0 (interfaz inalámbrico) a nuestro gusto:
# vi wlan0
#
# wlan0
#
SSID=test
(Cada uno lo que quiera, para los nodos cada comunidad tiene un SSID)
# S/B one of 1,6,11
CHANNEL=11 (Algunos PA están
capados a usar solo este canal, pero se puede
descapar)
wep=
(Clave de encriptacion wep... Mejor no poner nada... pa lo que vale... XDDD
Algoritmo crackeado)
# Only for RL/3
NWDS=0
(No aplicable en Runlevel 4)
Modificaremos el fichero telnetd.hosts para indicarle desde que ips se podrá hacer telnet al PA:
# vi telnetd.hosts
172.26.0. (Yo lo
he limitado a maquinas dentro de mi LAN)
Ahora revisaremos el fichero netcfg, de donde se deberían leer todos los parámetros de red de ambos interfaces del PA y algún que otro dato mas, pero que por un bug, en el runlevel 4 no funciona correctamente. Lo rellenaremos de todos modos por si acaso la compilación que tiene nuestro PA si lo usa...
# vi netcfg
#
# netcfg
#
# Primary Interface (RL2/wlan0, RL3/br0, RL4/eth0)
(Este bloque corresponde a los datos del interfaz eth0)
# Need first 3 if not dhcp
# p_dhcp should be either enabled or disabled
p_dhcp=disabled
(No queremos que nos asignen por dhcp la ip de este interfaz)
p_address=172.26.0.10
(IP que asignamos al interfaz)
p_netmask=255.255.255.0
(Mascara)
p_broadcast=172.26.0.255
(Direccion de broadcast)
# Secondary Interface (RL2/eth0, RL4/wlan0)
(Este bloque corresponde a los datos del interfaz wlan0)
# Ignored at RL3
s_dhcp=disabled
(No queremos que nos asignen por dhcp la ip de este interfaz)
s_address=192.168.0.10
(IP que asignamos al interfaz)
s_netmask=255.255.255.0
(Mascara)
s_broadcast=192.168.0.255
(Direccion de broadcast)
# These should pull from dhcp ...
(este bloque no nos hace falta, además da errores al arrancar si rellenas el
router con una ip)
router=
tftphost=
logaddr=
# Network Swapping
(De este bloque dejar todo como esta)
swaphost=
swapport=4401
# Masqerading support ... Masquerade this network
(Para hacer Enmascaramiento/NAT)
# ex: 10.1.0.0/27
# Will Masquerade 10.1.0.0-10.1.0.31
# This assumes you've set up eth0 appropriately
# elsewhere
masq_net=192.168.0.0/24
(Rango de red a enmascarar, la wlan)
Despues de visto todo esto, vamos a crear un fichero que se va a ejecutar al arranque, y que configurará todo lo que no configura automáticamente el runlevel 4 desde el netcfg. El fichero debe llamarse rc.tweak, y deberemos meterle lo siguiente:
#vi rc.tweak
#!/bin/ash
ifconfig eth0 172.26.0.10 netmask 255.255.255.0 broadcast 172.26.0.255 up
(Datos de red del interfaz eth0)
ifconfig wlan0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255 up
(Datos de red del interfaz
wlan0)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
(NAT y enmascaramiento)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQUERADE
(NAT y enmascaramiento)
route add default gw 172.26.0.1
(Se le indica el gateway por defecto al PA)
udhcpd /etc/rw/udhcpd.conf
(Le decimos al udhcpd donde esta el fichero de configuración)
Le damos los permisos necesarios al fichero, salvamos la
configuración y rebotamos:
#chmod 755 rc.tweak
#save_config
Committing : netcfg
rc.tweak
resolv.conf
runlevel
telnetd.hosts
udhcpd.conf
udhcpd.leases
wlan0
MTD start erase.......
bla bla bla bla bla 1 huevo de lineas ;)....
MTD finish erase
1+1 records in
1+1 records out
Done.
#reboot
The system is gHangup
tcsetpgrp failed, errno=25
Please stand by while rebooting the system.
Restarting system.
Si todo ha salido bien, veremos el arranque ya en runlevel 4 en
la consola (esta resumido):
Welcome to Linux Instant802
re-mounting root filesystem in rw mode
mounting proc filesystem
mounting var filesystem
20.configfs:
2+0 records in
2+0 records out
netcfg
rc.tweak
resolv.conf
runlevel
telnetd.hosts
udhcpd.conf
udhcpd.leases
wlan0
loaded saved config.
Done.
Entering runlevel 4 (Que mono y que majooo!
;)
10.1.wlan0:
Starting wlan0: Using /lib/modules/2.4.17/pcmcia/pcmcia_core.o
Linux PCMCIA Card Services 3.1.28
kernel build: 2.4.17 #1 Fri Sep 13 01:05:42 MST 2002
options: none
Using /lib/modules/2.4.17/pcmcia/i82365.o
Intel PCIC probe:
Intel i82365sl A step ISA-to-PCMCIA at port 0x3e0 ofs 0x00
host opts [0]: none
ISA irqs (default) = 3,5,7,9,10,11,12,15 polling interval = 1000 ms
Using /lib/modules/2.4.17/pcmcia/ds.o
Using /lib/modules/2.4.17/pcmcia/hostap_cs.o
hostap_cs: hostap_cs.c 0.0.0 2002-05-19 (SSH Communications Security Corp, Jouni
Malinen)
hostap_cs: (c) SSH Communications Security Corp <jkm@ssh.com>
Jan 1 00:00:11 cardmgr[58]: starting, version is 3.1.28
Jan 1 00:00:11 cardmgr[58]: watching 1 sockets
Jan 1 00:00:12 cs: memory probe 0x0d0000-0x0dffff:cardmgr[58]: ini clean.
tializing socket 0
Jan 1 00:00:12 cardmgr[58]: socket 0: PRISM2 IEEE 802.11 PC-CARD
cs: IO port probe 0x0100-0x04ff: clean.
cs: IO port probe 0x0800-0x08ff: clean.
cs: IO port probe 0x0c00-0x0cff: clean.
hostap_cs: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f
hostap_cs: Registered netdevice wlan0
wlan0: NIC: id=0x8002 v1.0.0
wlan0: PRI: id=0x15 v0.3.0
wlan0: STA: id=0x1f v0.7.5
Jan 1 00:00:13 cardmgr[58]: executing: './network start wlan0'
Jan 1 00:00:13 cardmgr[58]: + ./network: No such file or directory
Jan 1 00:00:13 cardmgr[58]: start cmd exited with status 127
Jan 1 00:00:13 cardmgr[58]: exiting
Done.
10.2.primary:
10.3.tftpcfg:
10.5.cipe:
10.8.secondary:
10.9.route:
11.0.netswap:
15.0.tcpsrv:
16.0.dhcpd:
17.0.httpd:
18.0.telnetd:
21.0.iptables:
98.tweak:
udhcp server (v0.9.7) started
99.done:
Startup Complete!
Please press Enter to activate this console.
Como podéis ver, las ultimas líneas son los scripts que son
llamados desde el runlevel 4, pero no se ejecuta nada por cada script, tan solo
se arranca el servidor udhcp gracias a nuestro fichero rc.tweak:
10.2.primary:
10.3.tftpcfg:
10.5.cipe:
10.8.secondary:
10.9.route:
11.0.netswap:
15.0.tcpsrv:
16.0.dhcpd:
17.0.httpd:
18.0.telnetd:
21.0.iptables:
98.tweak:
udhcp server (v0.9.7) started
99.done:
Esto no se si es estrictamente necesario, pero en el router adsl
creé una ruta estática hacia la Wlan, poniéndole como gateway la ip del interfaz
eth0 del PA (172.26.0.10) A mi me funciona!
Sobra decir que los clientes Wlan deberán estar configurados
para obtener automáticamente tanto una dirección ip como la dirección del
servidor DNS, todo ello por DHCP.
Y eso es todo lo que nos hace falta por el momento para echar a
andar! Habria que pulirlo un poco mas pero es una buena base para empezar a
funcionar. ¡¡No dejes de leer el siguiente punto, son consideraciones importantes!!
Seguridad del PA en este estado que lo hemos dejado:
En esta
configuración, damos por sentado que manejaremos el PA siempre por RS-232, si
quisiéramos controlar el PA por telnet o con el interfaz web que incluye,
deberíamos levantar los servicios correspondientes (telnetd y httpd) desde el
rc.tweak. En mi caso, por seguridad y hasta que estudie mejor como securizar los
accesos telnet y http al "bicho", lo dejare tal como esta, con los servicios
telnet y http parados.
Tampoco hemos entrado en canción con la configuración del
firewall (iptables), las reglas por defecto en el PA son las de aceptar todo
trafico desde y hacia cualquier destino!! Tenlo MUY en cuenta antes de poner el
PA como nodo de una red wireless urbana, y pon unas reglas a ese firewall
echando virutillas, si no quieres que te entren hasta la cocina, que luego no
haya sorpresas...
Y creo que no se me ha escapado nada! Con todo esto deberíamos ser capaces de hacer ping entre todas las maquinas de ambas redes (Lan y Wlan) y navegar por Internet desde la Wlan (Si antes tenias acceso a Internet desde la Lan, pues también, eso sigue igual ;)
Nota 1: En mi LAN tengo un Edimax Dual Speed Switch/Hub de 8
puertos. Si el Hub/Switch de tu LAN tiene un interruptor para seleccionar entre
algo así como "Dual speed" y "Extension Port", asegúrate de que este en "Dual
speed". A todos los clientes de mi LAN les es indiferente la posición de dicho
switch, pero el "bichito", que es mu rarito, solo "habla" con la LAN en esa
posición. El latiguillo de conexión entre el PA y el HUB es un latiguillo
normal, mientras que si lo conectas directamente a la tarjeta de red de otro
equipo necesitaras un latiguillo cruzado (Háztelo
tu mismo)
Nota 2: Si los clientes LAN/WLAN son Windows igual no se ven en el entorno de red (no se porque aun...) pero siempre podrás acceder a los recursos que tengan compartidos ejecutando: \\ip_maquina\recurso_compartido. También he probado control remoto por VNC http://www.uk.research.att.com/vnc/ y va ok!
Autor: Oscar G Tropic:
www.anuestroaire.net
http://tropic.portalvasco.com