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 disabledp_dhcp=enabledp_address=10.0.1.1p_netmask=255.255.255.0p_broadcast=10.0.1.255# Secondary Interface (RL2/eth0, RL4/wlan0)# Ignored at RL3s_dhcp=disableds_address=192.168.0.1s_netmask=255.255.255.0s_broadcast=192.168.0.255# These should pull from dhcp ...router=tftphost=logaddr=# Network Swappingswaphost=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# elsewheremasq_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 disabledp_dhcp=enabledp_address=10.0.1.1p_netmask=255.255.255.0p_broadcast=10.0.1.255# Secondary Interface (RL2/eth0, RL4/wlan0)# Ignored at RL3s_dhcp=disableds_address=s_netmask=s_broadcast=# These should pull from dhcp ...router=tftphost=logaddr=# Network Swappingswaphost=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# elsewheremasq_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 kernelLinux version 2.4.17 (root@benchbox.ksmith.com) (gcclease)) #1 Fri Sep 13 01:05:42 MST 2002BIOS-provided physical RAM map:BIOS-88: 0000000000000000 - 000000000009f000 (usable)BIOS-88:0000000000100000 - 0000000000460000 (usable)On node 0 totalpages: 1120zone(0): 1120 pages.zone(1): 0 pages.zone(2): 0 pages.Kernel command line: console=ttyS0,4800n8Initializing CPU#0Calibrating delay loop... 16.48 BogoMIPSMemory: 2884k/4480k available (735k kernel code, 1208k reserved, 148k data, 48kinit, 0k highmem)Checkingif this processor honours the WP bit even inkmem_create: Forcing size word alignment - names_cacheDentry-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 04Checking 'hlt' instruction... OK.POSIX conformance testing by UNIFIXLinux NET4.0 for Linux 2.4Based upon Swansea University ComputerInitializing RT netlink socketStarting kswapdregister_swap_method:method blkdevregister_swap_method:method blkdev fileSerial driver version 5.05c (2001-07-08) with no serial options enabledttyS00 at 0x03f8 (irq = 4) is a 16550Ablock: 64 slots per queue, batch=16ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)Last modified Nov 1, 2000 by Paul GortmakerNE*000 ethercard probe at 0x200: 02 02 02 02 05 02eth0: NE2000 found at 0x200, using IRQ 14.physmap flash device: 0x100000 at 0x10000002nd physmap flash device: 0x200000 at 0x2000000Found: Macronix MX29F800T - 8bit accessnumber of JEDEC chips: 1NET4: Linux TCP/IP 1.0 for NET4.0IP Protocols: ICMP, UDP, TCPIP: routing cache hash table of 512 buckets, 4KbytesTCP:Hash tables configured (established 512 bind 512)ip_conntrack (35 buckets, 280 max)ip_tables: (c)2000 Netfilter core teamNET4: Unix domain sockets 1.0/SMP for Linux NET4.0.NET4: Ethernet Bridge 008 for NET4.0VFS: Mounted root (cramfs filesystem) readonly.Freeing unused kernel mserial console detected. Disabling virtual terminals.console=/dev/consoleinit started: BusyBox v0.60.3-pre (2002.09.13-08:10+0000) multi-call binaryEntering runlevel S10.sysinit:Welcome to Linux Instant802re-mounting root filesystem in rw modemounting proc filesystemmounting var filesystem20.configfs:2+0 records in2+0 records outnetcfgrc.tweakresolv.confrunleveltelnetd.hostsudhcpd.confudhcpd.leaseswlan0loaded saved config.Done.Entering runlevel 310.wlan:Starting wlan0: Using /lib/modules/2.4.17/pcmcia/pcmcia_core.oLinux PCMCIA Card Services 3.1.28kernel build: 2.4.17 #1 Fri Sep 13 01:05:42 MST 2002options: noneUsing /lib/modules/2.4.17/pcmcia/i82365.oIntel PCIC probe:Intel i82365sl A step ISA-to-PCMCIA at port 0x3e0 ofs 0x00host opts [0]: noneISA irqs (default) = 3,5,7,9,10,11,12,15 polling interval = 1000 msUsing /lib/modules/2.4.17/pcmcia/ds.oUsing /lib/modules/2.4.17/pcmcia/hostap_cs.ohostap_cs: hostap_cs.c 0.0.0 2002-05-19 (SSH CommMalinen)hostap_cs: (c) SSH Communications Security Corp <jkm@ssh.com>Jan 1 00:00:11 cardmgr[58]: starting, version is 3.1.28Jan 1 00:00:11 cardmgr[58]: watching 1 socketsJan 1 00:00:12 cs: memory probe 0x0d0000-0x0dffff:cardmgr[58]: ini clean.tializing socket 0Jan 1 00:00:12 cardmgr[58]: socket 0: PRISM2 IEEE 802.11 PC-CARDcs: 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-0x013fhostap_cs: Registered netdevice wlan0wlan0: NIC: id=0x8002 v1.0.0wlan0: PRI: id=0x15 v0.3.0wlan0: STA: id=0x1f v0.7.5Jan 1 00:00:13 cardmgr[58]: executing: './network start wlan0'Jan 1 00:00:13 cardmgr[58]: + ./network: No such file or directoryJan 1 00:00:13 cardmgr[58]: start cmd exited with status 127Jan 1 00:00:13 cardmgr[58]: exitingDone.20.secondary:30.br0:Starting BRIDGING services:device wlan0 entered promiscuous modedevice eth0 entered promiscuous modebr0: port 2(eth0) entering listeningbr0: port 1(wlan0) entering listening statebr0: port 2(eth0) entering learning statebr0: port 1(wlan0) entering learning statebr0: port 2(eth0) entering forwarding statebr0: topology change detected, propagatingbr0: port 1(wlan0) entering forwarding statebr0: topology change detected, propagating40.primary:Starting bridge interface.udhcp client (v0.9.7) startedSending 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 stophacemos “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