Configuración del LinuxAP como AP/Bridge


Bien, una vez ya tenemos claro como configurar nuestro LinuxAP como “clientes” y como “AP/Router” ahora ya solo nos falta configurarlo como AP/Bridge. Esta es la mas compleja, y como no, la mas practica, ya que en un futuro nos permitirá enlazar 2 o mas AP configurando una red capaz de intercambiar datos entre los propios  AP y, como no, entre los clientes de cada AP.
Vamos pues a ponernos manos a la obra.
Lo primero que haremos será borrar la configuración que hemos incluido en el rc.tweak para poder analizar como hemos hecho las veces anteriores el boot de arranque del “runlevel3” o, dicho de otra forma, el modo “Master”. Así pues nos conectamos con el programa terminal a través del RS232 y tecleamos:
# cd etc/rw
# vi rc.tweak
Y borramos las líneas que habíamos insertado. Para borrar esas líneas hacemos:
dd
delante de cada línea. Una vez borradas, guardamos y salimos del modo edición haciendo:
:wq
#
hacemos:
# save_config
ahora vamos a editar el “runlevel” y cambiamos el 4 por el 3
# vi runlevel
Borramos el 4 marcando una “x” encima del numero y, seguidamente pulsamos “i” y tecleamos el numero 3.
Guardamos y salimos con:
:wq
hacemos un:
#save_config
Ahora vamos a cambiar los parámetros de “netcfg”, ya que , si recordamos, para cada configuración los parámetros son distintos.
# vi netcfg
#
# netcfg
#
# Primary Interface (RL2/wlan0, RL3/br0, RL4/eth0)
# Need first 3 if not dhcp
# p_dhcp should be either enabled or disabled
p_dhcp=enabled
p_address=10.0.1.1
p_netmask=255.255.255.0
p_broadcast=10.0.1.255
# Secondary Interface (RL2/eth0, RL4/wlan0)
# Ignored at RL3
s_dhcp=disabled
s_address=192.168.0.1
s_netmask=255.255.255.0
s_broadcast=192.168.0.255
# These should pull from dhcp ...
router=
tftphost=
logaddr=
# Network Swapping
swaphost=
swapport=4401
# Masqerading support ... Masquerade this network
# 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=10.0.1.0/27
Ahora podemos editar los parámetros de forma que nos sean útiles.
Anexo a este tutorial tenéis una pequeña chuleta con los comandos de “VI”, editor de Linux, mas frecuentes para poder cambiar los parámetros con más comodidad.
En lo primero en lo que debemos fijarnos  es en que, en la configuración de “runlevel 4” el p_address, p_netmask y p_broadcast corresponden al interface “bridge” o si lo preferiis, “puente” , es decir,  br0. Y los  s_address, el s_netmask y el s_broadcast , en teoría, en este modo son ignorados.
Así pues vamos a acometer la configuración básica, el LinuxAP como AP transparente.
Para hacerlo vamos a editar primero nuestro “netcfg” dejando solamente la IP del  rango de nuestra ethernet, en nuestro caso y siguiendo nuestros anteriores ejemplos dejamos 10.0.1.1 ya que, como hemos visto en la configuración anterior, tenemos un servidor conectado vía ethernet con la IP de red asignada 10.0.1.25. Podría ser también  un router o lo que hiciera falta, pero de momento así nos sirve perfectamente para ver si nos funciona o no. Así que , de momento, podemos dejarlo así:
#
# netcfg       
#
# Primary Interface (RL2/wlan0, RL3/br0, RL4/eth0)                                                 
# Need first 3 if not dhcp                          
# p_dhcp should be either enabled or disabled                                            
p_dhcp=enabled             
p_address=10.0.1.1                 
p_netmask=255.255.255.0                      
p_broadcast=10.0.1.255                     
# Secondary Interface (RL2/eth0, RL4/wlan0)
# Ignored at RL3
s_dhcp=disabled
s_address=
s_netmask=
s_broadcast=
# These should pull from dhcp ...
router=
tftphost=
logaddr=
# Network Swapping
swaphost=
swapport=4401
# Masqerading support ... Masquerade this network
# 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=10.0.1.0/27
#
Fijaros que hemos dejado activado el cliente DHCP. Aunque en nuestro ejemplo no tenemos un servidor DHCP activo, en el caso de que tuvierais un router, este asignaría al LinuxAP una IP libre de la propia red, y como en nuestro ejemplo actual tampoco nos afecta para nada (salvo los 3 segundos de mas que tardara el programa en arrancar) lo hemos dejado activado.
Una vez tengamos ya los datos modificados a nuestro gusto...
:wq
# save_config
Y ,finalmente, como que, de momento no hablamos de WDS, y, en este caso tampoco vamos a usar el servidor DHCP lo dejamos tal cual esta:
# reboot
Y esto es el resultado:

alios biosless Linux bootloader V2                                 
- Bank 0: 2048K organized as 1024K (10 rows by 10 columns) by 16 bits, EDO                                                                         
- Bank 1: 2048K organized as 1024K (10 rows by 10 columns) by 16 bits, EDO                                                                         
-Bank 2: no DRAM detected                         
- Bank 3: no DRAM detected                         
- Total DRAM detected: 4096 kbytes                                  
- loading configuration 1                        
-kernel args: console=ttyS0,4800n8                                  
- scanning bootsect.o                    
- scanning setup.o                 
- updating setup values                      
- copying compressed kernel into RAM.......                                          
- starting kernel                
Linux version 2.4.17 (root@benchbox.ksmith.com) (gcc                                                    
lease)) #1 Fri Sep 13 01:05:42 MST 2002                                      
BIOS-provided physical RAM map:                              
 BIOS-88: 0000000000000000 - 000000000009f000 (usable)                                                     
 BIOS-88:0000000000100000 - 0000000000460000 (usable)                                                     
On node 0 totalpages: 1120                         
zone(0): 1120 pages.                   
zone(1): 0 pages.                
zone(2): 0 pages.                 
Kernel command line: console=ttyS0,4800n8                                        
Initializing CPU#0                 
Calibrating delay loop... 16.48 BogoMIPS                                       
Memory: 2884k/4480k available (735k kernel code, 1208k reserved, 148k data, 48k                                                                              
init, 0k highmem)                
Checkingif this processor honours the WP bit even in                                                  
kmem_create: Forcing size word alignment - names_cache                                                     
Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes)                                                           
Inode-cache hash table entries: 512 (order: 0, 4096 bytes)                                                         
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)                                                         
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)                                                           
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)                                                         
CPU: AMD 02/0a stepping 04                         
Checking 'hlt' instruction... OK.                                
POSIX conformance testing by UNIFIX                                  
Linux NET4.0 for Linux 2.4                         
Based upon Swansea University Computer                                      
Initializing RT netlink socket                             
Starting kswapd              
register_swap_method:method blkdev                                  
register_swap_method:method blkdev file                                       
Serial driver version 5.05c (2001-07-08) with no serial options enabled                                                                      
ttyS00 at 0x03f8 (irq = 4) is a 16550A                                     
block: 64 slots per queue, batch=16                                   
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)                                                  
Last modified Nov 1, 2000 by Paul Gortmaker                                          
NE*000 ethercard probe at 0x200: 02 02 02 02 05 02                                                 
eth0: NE2000 found at 0x200, using IRQ 14.                                         
physmap flash device: 0x100000 at 0x1000000                                          
2nd physmap flash device: 0x200000 at 0x2000000                                              
Found: Macronix MX29F800T - 8bit access                                      
number of JEDEC chips: 1                       
NET4: Linux TCP/IP 1.0 for NET4.0                                 
IP Protocols: ICMP, UDP, TCP                           
IP: routing cache hash table of 512 buckets, 4Kbytes                                                   
TCP:Hash tables configured (established 512 bind 512)                                                      
ip_conntrack (35 buckets, 280 max)                                 
ip_tables: (c)2000 Netfilter core team                                     
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.                                                   
NET4: Ethernet Bridge 008 for NET4.0                                   
VFS: Mounted root (cramfs filesystem) readonly.                                              
Freeing unused kernel m                     
serial console detectedDisabling virtual terminals.                                                     
console=/dev/console                   
init startedBusyBox v0.60.3-pre (2002.09.13-08:10+0000) multi-call binary                                                                            
Entering runlevel S                  
10.sysinit:          
                        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 3                  
10.wlan:       
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                                                     
  optionsnone               
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 Comm                                              
 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.    
20.secondary:            
30.br0:      
Starting BRIDGING services:                          
device wlan0 entered promiscuous mode                                    
device eth0 entered promiscuous mode                                   
br0: port 2(eth0) entering listening                                  
br0: port 1(wlan0) entering listening state                                           
br0: port 2(eth0) entering learning state                                        
br0: port 1(wlan0) entering learning state                                         
br0: port 2(eth0) entering forwarding state                                           
br0: topology change detected, propagating                                         
br0: port 1(wlan0) entering forwarding state                                           
br0: topology change detected, propagating                                      
40.primary:
Starting bridge interface.
udhcp client (v0.9.7) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing.
42.route:
45.netswap:
50.tcpsrv:
Set date && start logging.
60.telnetd:
Starting telnetd daemon.
70.httpd:
Starting httpd daemon.
98.tweak:
Please press Enter to activate this console.
BusyBox v0.60.3-pre (2002.09.13-08:10+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
#

Bien, como podemos ver, efectivamente nos ha arrancado con “runlevel3” y, aparentemente parece que funcionara... pero OJO, fijaros  que en las ultimas líneas del boot nos ha activado los servidores de http i telnet!!!...y esto es peligroso!!!
42.route:
45.netswap:
50.tcpsrv:
Set date && start logging.
60.telnetd:
Starting telnetd daemon.
70.httpd:
Starting httpd daemon.
98.tweak:
porque cualquiera que descubra la  IP de nuestro LinuxAP nos podría modificar sin ningún problema nuestra configuración!!. Bien, pero lo que nos interesa ahora es saber si nuestro  LinuxAP trabaja en modo transparente.... así que, manos a la obra...
Vamos a otro PC con tarjeta wi-fi y le configuramos el TCP/IP del adaptador de la tarjeta, USB o lo que sea con una IP del “rango” de nuestra red IP (a menos que tengamos un router o servidor de DHCP, entonces, al ser “transparente” ya lo haría automáticamente con “Obtener…”). En nuestro caso le pondríamos 10.0.1.20 con la máscara 255.255.255.0.
Lo primero que haremos será comprobar si lo encuentra:

Efectivamente, ya lo ve!!...Vamos bien... ahora se trata de comprobar si realmente nos hace el túnel hacia nuestra red ethernet, así que abrimos el navegador, y le entramos la IP de nuestro servidor, en este caso http://10.0.1.25 y vemos que pasa....
Hemos triunfado de nuevo!!!!!!!

Efectivamente ya vemos nuestra página de inicio. Es decir, nuestro  LinuxAP deja pasar en modo “transparente” las llamadas hacia nuestra red ethernet, y, como hemos dicho antes, en el caso de tener un Router o servidor DHCP nos asignaría automáticamente una IP libre de nuestra red ehernet.

Vamos ahora a ver si nuestras sospechas sobre el servidor http eran ciertas.... probamos ahora de conectar directamente a la IP de nuestro LinuxAP, así que tecleamos http://10.0.1.1 desde nuestro navegador....

 


Eppp... estábamos en lo cierto!...Esto quiere decir que cualquiera que intente conectar con la  IP de nuestro LinuxAP podría toquetearlo a placer... esto, que seria muy practico a la hora de poder configurar a distancia nuestro LinuxAP, ahora mismo es un peligro!!!  Así que, hasta que no encontremos un sistema desde el propio servidor http para poder implementar un sistema password para acceder debemos encontrar la forma de deshabilitarlo.
Si tenemos en cuenta que esta configuración nos viene  “por defecto” implementada en el boot de arranque del “runlevel3” parece difícil que podamos evitarlo.... pero... ¿os acordáis del rc.tweak???.... Eso si que es una herramienta útil!!!... vamos pues a editarlo para que nos desactive el servidor http.
Así pues:
# cd etc/rw
# vi rc.tweak

Y ahora tecleamos “i” y tecleamos una línea con:

/etc/rc.d/init.d/httpd stop

hacemos “Esc
:wq
#save_config
# reboot
Ahora probamos nuevamente desde  el navegador si contesta... y, efectivamente, ya lo tenemos deshabilitado y ya no contesta!!
Así pues....la configuración básica del AP/Bridge ya funciona como es debido. A partir de aquí iremos añadiendo configuraciones a medida que vayamos experimentando con este maravilloso  Punto de Acceso.

Si consideras que este tutorial te ha sido útil y te ha ahorrado tiempo, problemas y dolores de cabeza, cualquier donación será bienvenida y destinada a la expansión del Wireless en general  y al mantenimiento de la red Wireless de OlotWireless. Puedes hacer efectiva tu colaboración  haciendo una transferencia a la cuenta 2030 0091 11 3300004824. Gracias.
©Pere Espunya. EA3CUU  para Unión de Radioaficionados Españoles