Tecnología WiFi con Linux

Hardware
 
En Linux toda tarjeta de red inalámbrica puede tener teóricamente hasta 7 modos de operación:

Ad-hoc: El equipo actúa como parte de una red ad-hoc.
Managed: El equipo actúa como cliente de una red de infraestructura.
Master: El equipo actúa como un Access Point.
Repetear: El equipo solo reenvía los paquetes recibidos de otros nodos inalámbricos.
Secondary: El equipo actúa como un backup de un Master o Repetear.
Monitor: El equipo solo recibe paquetes en modo de monitoreo.
Auto: Configuración automática empezando por Ad-hoc y siguiendo en Managed.

Los drivers no necesariamente soportan todos los modos de trabajo, pero al menos deben dar soporte a los modos Ad-hoc y Managed, siendo el modo Master una opción interesante, sin embargo también está limitado al tipo de tarjeta inalámbrica que usemos. En particular la tarjeta inalámbrica que viene en las notebooks con procesador Intel Centrino no permiten este modo.

Para el desarrollo del presente artículo usaremos la tarjeta inalámbrica PCI D-Link modelo DWL-G520 el cual se basa en el chip de la empresa Atheros, así como la distribución Fedora 6.0, sin embargo básicamente haremos uso de comandos del sistema así que podemos tomarlo de referencia para otras distribuciones. El driver no es proporcionado por Fedora ni por la compañía D-Link pero existe un driver creado por el proyecto Madwifi que puede ser descargado de la página http://madwifi.org/

El driver madwifi es muy interesante, permite crear varias extensiones virtuales asociadas a la tarjeta inalámbrica y soporta los modos de trabajo Ad-hoc, Manager y Master, siendo éste último el que nos va a permitir crear un Access Point, una característica que no encuentro disponible en Windows y que una vez mas comprueba el poder de flexibilidad del software libre.


1. Instalación del driver madwifi

El driver puede ser descargado de la página http://www.atrpms.net/dist/fc6/madwifi para la última versión del kernel. Verificar la versión de su kernel con el comando uname –a, si su sistema tiene una versión antigua del kernel intente actualizarlo y reinicie el sistema.

Por ejemplo, para el kernel 2.6.18-1.2869 los paquetes madwifi asociados son:

madwifi-hal-kmdl-2.6.18-1.2869.fc6-0.9.3-31_r1865.fc6.at.i686.rpm
madwifi-kmdl-2.6.18-1.2869.fc6-0.9.3-31_r1865.fc6.at.i686.rpm
madwifi-0.9.2.1-2.fc6.i386.rpm

Además es posible que necesite de algunos paquetes adicionales como el kernel-devel.i686 y el gcc que se pueden instalar utilizando yum. Ubique los rpm en un directorio, ingrese a dicho directorio desde un terminal de consola como root e instalelos de la siguiente manera:

rpm –ivh madwifi*.rpm

Diversos módulos serán instalados en la ruta /lib/modules/$(uname –r)/updates/net siendo ath_pci el módulo principal. Reiniciamos el sistema y una vez iniciado este verificar que haya sido cargado los driver con el comando lsmod | grep ath_pci .


2. Configuración del Wi-Fi mediante comandos del sistema

Una vez instalados los drivers de la tarjeta, el principal comando de configuración es el iwconfig, que permite cambiar los parámetros específicos de las redes inalámbricas, por ejemplo:

essid: Identificador de celda
freq/channel : Frecuencia o canal
mode : Modo (Master, Managed, Ad-Hoc)
rate : velocidad
key/enc : clave de cifrado
txpower : potencia de transmisión

Con el comando ifconfig podemos configurar los parámetros normales de la red IP.

2.1. Configuración modo Ad-Hoc.

Detenemos el servicio de red:

service network stop
ifconfig ath0 down
ifconfig eth0 down

Desactivamos la interfase inalámbrica y extensiones: wlanconfig ath0 destroy

Creamos la extensión wifi0 de ath0 pero en modo Ad-Hoc:
wlanconfig ath0 create wlandev wifi0 wlanmode adhoc

Activamos la interface inalámbrica: ifconfig ath0 up

Podemos definir el modo de trabajo en a, b o g:
iwpriv ath0 mode 3 --> modo 802.11g

Escogemos un canal de trabajo, en éste caso el 6:
iwconfig ath0 channel 6

Averiguamos el número de canales disponibles:
iwlist channel

Nos enlazamos indicando el ESSID (por ejemplo miwifi):
iwconfig ath0 essid "miwifi"

Si no conoce el ESSID puede usar la opción automática:
iwconfig ath0 ap any

Si dispone de un servidor DHCP configure el servicio de red:
dhclient ath0

Si configura manualmente la red utilice:
ifconfig ath0 netmask up
route add default gw

Verificar la configuración de la tarjeta con los comandos ifconfig y haciendo ping hacia otros equipos en la red. Con el comando iwconfig podemos observar los parámetros inalámbricos de la conexión así como el ESSID, niveles de ruido y la calidad de la señal.

2.2 Configuración modo Managed.

Detenemos el servicio de red:

service network stop
ifconfig ath0 down
ifconfig eth0 down

Desactivamos la interfase inalámbrica y extensiones:
wlanconfig ath0 destroy

Creamos la extensión wifi0 de ath0 pero en modo Managed:
wlanconfig ath0 create wlandev wifi0 wlanmode managed

Activamos la interface inalámbrica:
ifconfig ath0 up

Podemos definir el modo de trabajo en a, b o g:
iwpriv ath0 mode 0 --> modo automático
iwpriv ath0 mode 1 --> modo 802.11a
iwpriv ath0 mode 2 --> modo 802.11b
iwpriv ath0 mode 3 --> modo 802.11g

Averiguamos el número de canales disponibles:
iwlist channel
Escogemos un canal de trabajo, en éste caso el 6:
iwconfig ath0 channel 6

Averiguamos los ESSID disponibles:
iwlist scanning
Nos enlazamos a un AP indicando el ESSID (por ejemplo miwifi):
iwconfig ath0 essid "miwifi"

Si no conoce el ESSID puede usar la opción automática:
iwconfig ath0 ap any

Para activar el cifrado WEP indicamos la frase secreta de la siguiente forma:
iwconfig ath0 key “s:”

Donde passphrase es la contraseña en modo ASCII, con 5 caracteres para cifrado de 40 bits y de 13 para 128 bits (en realidad de 104 bits). Si la contraseña se indica en modo hexadecimal no se debe indicar el “s:” inicial, se introduce directamente la clave con 5 o 13 caracteres especificado en hexadecimal.

Si dispone de un servidor DHCP configure el servicio de red:
dhclient ath0

Si configura manualmente la red utilice:
ifconfig ath0 netmask up
route add default gw

Verificar la configuración de la tarjeta con los comandos ifconfig y haciendo ping hacia otros equipos en la red. Con el comando iwconfig.


2.3 Configuración modo Master.

La tarjeta PCI D-Link modelo DWL-G520 y su driver madwifi en Linux permiten el modo de operación Master en el cual el equipo se comportará como un AP (Access Point).

La PC en modo Master debe crear un puente entre el puerto ethernet y el puerto inalámbrico, para ello debemos activar la funcionalidad bridge del kernel instalando el paquete bridge-utils con el comando yum install bridge-utils.

Los clientes de éste AP pueden obtener automáticamente una IP si existe un servidor DHCP hacia el puerto ethernet del AP.

Desactivamos el servicio de red:
service network stop

Creamos la interface inalámbrica en modo Access Point (ap):
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode ap

Activamos la interface Ethernet y la inalámbrica, en este caso sin definir IP:
ifconfig ath0 0.0.0.0 up
ifconfig eth0 0.0.0.0 up

Escogemos el modo 802.11b (para una señal mas estable) y canal 6 de operación:
iwpriv ath0 mode 2
iwconfig ath0 essid cursowifi channel 6

Creamos el Puente:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 ath0

Activamos el Puente, en este caso sin definir IP:
ifconfig br0 0.0.0.0 up

A partir de ahora la computadora se comporta como un puente inalámbrico o AP, sólo basta que desde otro equipo WiFi en modo Managed observemos el ESSID irradiado y nos conectemos al mismo para tener acceso a la red cableada. Si se quiere lograr mayor cobertura conviene el uso de una antena de mayor ganancia, D-Link ofrece diversidad de antenas en su página web


3. Configuración del Wi-Fi mediante archivos del sistema

Un problema con los rpm del driver de madwifi es que al momento de instalarse no configura adecuadamente el archivo de configuración /etc/sysconfig/network-scripts/ifcfg-ath0, para ello sugiero añadir las líneas siguientes:

DEVICE=ath0
ONBOOT=yes
TYPE=Wireless
MODE=Managed
EESID=mi_eesid
CHANNEL=canal
RATE=auto
TXPOWER=auto
BOOTPROTO=static
IPADDR=dirección_IP
BROADCAST=dirección_broadcast
NETMASK=máscara
NETWORK=dirección_red

Para el caso de cifrado WEP se puede añadir la entrada KEY=”s:passphrase”, sin embargo en el caso de Fedora y Red Hat se emplea el archivo adicional :

/etc/sysconfig/network-scripts/keys-ath0

Cuyo contenido es KEY=”s:passphrase”

Para el campo MODE existen las opciones Managed, Ad-Hoc y Master.

La configuración correcta de los archivos del sistema permitirá que la funcionalidad gráfica neat reconozca la tarjeta inalámbrica.