Repetidor Activo con 2 LinuxAP

Este documento esta basado en las recopilaciones y  experiencias propias del autor. Están hechas para la distribución de LinuxAP del 13-09-2002 que es la versión estable que se esta utilizando actualmente. El autor declina cualquier responsabilidad derivada de la aplicación de este tutorial. La distribución total o parcial con fines comerciales  de este documento esta expresamente prohibida en cualquier medio o soporte sin la autorización por escrito del autor.

 

Si recordáis, en el ejemplo de configuración WDS con 2 LinuxAP, el principal problema con el que nos encontrábamos era que, pese a que el sistema funcionaba de maravilla, la velocidad de transferencia de datos caía en picado debido a que ambos AP estaban en la misma frecuencia y, debido al ruido generado entre ellos no conseguíamos pasar de los 2Mbps en nuestras transferencias. Para paliar este problema a la hora de configurar nuestras redes basadas en LinuxAP (y en cualquier otra red inalámbrica) la única solución es hacer trabajar los nodos en frecuencias distintas. Es cierto que, económicamente, nos supondrá una mayor inversión, pero también es cierto que el rendimiento de la red se multiplicara por 5 fácilmente. Es decir, mas o menos esto:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vamos pues a ver una forma sencilla de hacerlo.

Para empezar deberemos de configurar un LinuxAP en modo “cliente” para enlazar con un AP “corresponsal”. Para ello recurriremos a nuestro anterior ejemplo de configuración de Linux AP como "cliente".

Uno de los problemas con el que hemos topado ha sido que, a diferencia de algunos AP comerciales, no hemos podido asignar una MAC fija (la del AP corresponsal) a nuestro LinuxAP en modo “cliente”, y dado que nuestro cliente ejecuta perfectamente el “roaming” o búsqueda de AP disponibles, si encuentra otro AP del mismo “Grupo de trabajo” con mejor señal que el que deseamos enlazar, nos cambiará la configuración de nuestra idea original, aunque este en otro canal. Sin embargo este “pequeño” problema nos ha permitido “descubrir” algunas opciones hasta ahora desconocidas y que nos permitirán experimentar y conocer un poco mas a nuestro LinuxAP.


Así pues, lo primero que haremos será desactivar en el “netcfg” el modo “p_dhcp ” para que, desde aquí no nos pida una posible configuración a nuestro AP corresponsal:

(Nota: Si no deseáis añadir parámetros y experimentar dejadlo habilitado y pasad directamente a la configuración DHCP de la ethernet)

#
# 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=disabled
p_address=10.34.121.4
p_netmask=255.255.255.0
p_broadcast=10.34.121.255

# Secondary Interface (RL2/eth0, RL4/wlan0)
# Ignored at RL3
s_dhcp=disabled
s_address=10.0.1.1
s_netmask=255.255.255.0
s_broadcast=10.0.1.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


En lugar de llamarlo desde el “netcfg” lo que vamos a hacer va a ser llamarlo desde el “rc.tweak” (¿os acordáis de el?).

Pero antes de llamarlo vamos a ver las opciones que tenemos. Para verlas hacemos:

# udhcpc –help

y la respuesta es:

Usage: udhcpcd [OPTIONS]

-c, --clientid=CLIENTID Client identifier
-H, --hostname=HOSTNAME Client hostname
-f, --foreground Do not fork after getting lease
-i, --interface=INTERFACE Interface to use (default: eth0)
-n, --now Exit with failure if lease cannot be
immediately negotiated.
-p, --pidfile=file Store process ID of daemon in file
-q, --quit Quit after obtaining lease
-r, --request=IP IP address to request (default: none)
-s, --script=file Run file at dhcp events (default:
/usr/share/udhcpc/default.script)
-v, --version Display version
#

Es decir, podemos configurar una serie de opciones desde el “rc.tweak” que , de otra forma no podríamos activar. En nuestro ejemplo solo vamos a usar algunas de ellas, el resto quedaran a vuestro criterio el utilizarlas o no.

Editamos nuestro “rc.tweak” con:

# vi rc.tweak

y añadimos:

#!/bin/ash
udhcpc -c Yomismo -H Pingui1 -i wlan0 -n –q

Es decir, activamos el cliente udhcp, le damos un nombre de cliente, un “Hostname”, le decimos que los datos que obtenga los aplique al interface wlan0, que si no obtiene los datos a la tercera llamada aborte la orden, y una vez obtenidos los datos finalice la ejecución.

Guardamos con:

:wq
# save_config

Como podéis ver nuestro LinuxAP es bastante mas “configurable” de lo que pudiera parecer en un principio.

Configuramos el resto de nuestra wlan0 según nuestras necesidades:

#
# wlan0
#
SSID=www.olotwireless.net
# S/B one of 1,6,11
CHANNEL=6
wep=
# Only for RL/3
NWDS=0

Con esto ya tenemos resuelta la configuración de la wlan en nuestro cliente. Vamos ahora a configurar la ethernet.

Para hacerlo fácil vamos a activar el Servidor DHCP, de tal manera que, los datos obtenidos por el “cliente” dhcp sean transmitidos posteriormente a nuestro AP “transparente” a través del Servidor.

Si reiniciáramos ahora mismo nuestro “cliente” (caso de no haberlo hecho antes), nos crearía un nuevo documento llamado “resolv.conf” que, si lo editáis, podréis ver que contiene algunos datos “necesarios” que ha capturado automáticamente del AP con el que deseamos enlazar. Lo editamos y, en nuestro caso, aparece:

domain webdolot.net
nameserver 10.34.121.1
#

Es decir, el dominio al que pertenece y la IP del servidor, en este caso coincidente con el del servidor DNS.

Vamos ahora a configurar nuestro Servidor DHCP.

Lo editamos:

# vi udhcpd.conf

y debemos dejarlo asi:

# udhcpd.conf enable
start 10.0.1.2
end 10.0.1.27
interface eth0
lease_file /etc/rw/udhcpd.leases
option dns 10.34.121.1
option subnet 255.255.255.0
option router 10.0.1.1
option domain olotwireless.net
option lease 86400
#

Así pues, activamos el servidor DHCP en la ethernet, de modo que “asigne” la IP y demás datos a cualquier maquina conectada a nuestra ethernet.

Podemos comprobarlo desde nuestro PC para verificar que funciona, o desde el propio terminal haciendo:

# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11-DS ESSID:"www.olotwireless.net”
Mode:Managed Frequency:2.437GHz Access Point: 00:30:BD:61:CE:94
Bit Rate=11Mb/s Tx-Power=20 dBm Sensitivity=1/3
Retry min limit:8 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:76/92 Signal level:-53 dBm Noise level:-100 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:179 Missed beacon:0

#

Efectivamente vemos que en nuestra configuración aparece la MAC del AP corresponsal y los datos de señal , ruido etc... de nuestro enlace.

Una vez verificado que funciona podemos pasar ya a configurar nuestro LinuxAP en modo “transparente”, es decir, como AP/Bridge (runlevel 3).

Teniendo en cuenta que hemos configurado nuestro “cliente” como Servidor DHCP en la ethernet, lo primero que haremos en nuestro AP será configurar la ethernet como “cliente” DHCP para que obtenga los datos necesarios del Servidor del “cliente”. Así pues editamos el “netcfg” de nuestro LinuxAP en modo AP/Bridge y, en nuestro caso lo dejamos 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=


Es decir, si recordáis, en modo AP/Bridge no hace falta configurar la ethernet puesto que la IP será “común” al puerto “radio” (wlan) que a la ethernet, es decir, un "puente", habitualmente señalado como br0. ¿y cual será esa IP?... Pues la que nos asigne el servidor DHCP de la ethernet de nuestro LinuxAP en modo “cliente”, así pues “solo” deberemos habilitar el “cliente” DHCP ya que el resto de datos nos lo asignara el Servidor.

Vamos ahora a modificar nuestra “wlan0”, editamos:

# vi wlan0

SSID=PinguiAP
CHANNEL=11
wep=
NWDS=0

#

Aquí si que es importante tener en cuenta que el SSID debe de ser NECESARIAMENTE (al menos de momento) distinto al SSID del AP “corresponsal”. De no hacerlo así, al cabo de unos minutos de inactividad, vuestro cliente cambiaria de AP, dado que la calidad de la señal del AP mas cercano seria más fuerte y de mejor calidad que el “corresponsal” en virtud del “roaming” de nuestro cliente, provocando un “loop” y haciendo que el sistema dejara de funcionar correctamente.
El otro dato a cambiar, lógicamente, es el canal de trabajo, es decir, si en el enlace del “cliente” con el AP corresponsal usábamos el 6 , aquí utilizaremos el 11.

Una vez modificado, guardamos con:

:wq
# save_config

y ya estamos en condiciones de probar nuestro invento.

Con el “cliente” arrancado previamente, unimos los puertos RJ-45, es decir, los puertos ethernet con un cable cruzado y reiniciamos nuestro LinuxAP

# reboot

Al arrancar, si nos fijamos, podremos ir viendo la secuencia paso a paso y veremos que, al activarse nuestro cliente dhcp, el servidor del cliente nos asignará una IP y demás datos relativos al enlace con el AP corresponsal:

primary:
Starting bridge interface.
udhcp client (v0.9.7) started
Sending discover...
Sending select for 10.0.1.3...
Lease of 10.0.1.3 obtained, lease time 86400
deleting routers
SIOCDELRT: No such process
adding dns 10.34.121.1

42.route:

Vamos ahora a probar si realmente podemos conectar a traves de nuestro LinuxAP al AP corresponsal.

Habilitamos nuestro cliente y buscamos a nuestro LinuxAP (PinguiAP):

Efectivamente, ahí están los dos. Establecemos conexion con PinguiAP

Y comprobamos desde nuestro adaptador en modo “obtener IP automáticamente” si nos ha asignado alguna IP.

Vamos bien... ahi tenemos nuestra IP asignada por el servidor DHCP de la ethernet de nuestro LinuxAP en modo “cliente”...

Vamos ahora a conectar y veremos si realmente funciona. Abrimos nuestro navegador y le introducimos una dirección, por ejemplo http://www.olotwireles.net y....

Efectivamente... FUNCIONA.

Ahora, si probamos la transferencia de datos entre ambos lados de nuestra Red, es decir, entre un cliente conectado a nuestro AP corresponsal y otro a nuestro LinuxAP en modo AP/Bridge, podremos comprobar como, efectivamente, los ratios de transferencia se mantienen en los 11 Mbps, con lo cual nuestra Red no pierde ancho de banda.
Evidentemente, si pudiéramos “fijar” mediante MAC, o deshabilitando el “roaming” a nuestro LinuxAP en modo cliente, posiblemente podríamos trabajar en WDS sin mayor problema.... pero eso ya será en un próximo tutorial.


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