Redes Wireless con Linux


Las redes Wireless 802.11b, de 11 Mbps están convirtiéndose
en una opción muy válida y popular en los últimos
meses. Además que los precios han bajado notablemente, dan una
enorme comodidad si tenemos varios ordenadores en casa y el soporte
que hay en Linux es muy potente y variado. En éste artículo
explico las diferentes opciones y como instalarlo y configurarlo en
Linux. Aunque sin duda la estrella es, al menos para mí, como
montar un punto de acceso (access point) wireless en Linux con una tarjeta PCMCIA
normal y corriente, y barata
(en página 4).

[gallir@ponti gallir]$ /sbin/iwconfig wlan0
wlan0 IEEE 802.11-DS ESSID:”Antoli” Nickname:”ponti”
Mode:Master Frequency:2.422GHz Access Point: 00:50:C2:01:96:14
Bit Rate:2Mb/s Tx-Power=20 dBm Sensitivity=1/3
Retry min limit:8 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:3167 Invalid misc:2038 Missed beacon:0

Así que al final he logrado lo que quería, la tarjeta
PCI que había instalado en mi Linux de mesa funcionó en
modo Master y pude interconectar ordenadores con Linux en PC e iBook,
Mac OS X y del innombrable, con encriptación WEP de 128
bits.
Como la tarjeta PCI es sólo una PCMCIA con un adaptador, la
saqué del adaptador y terminé instalándola en un
portátil muy antiguo (P133, 32 MB RAM) para que me hiciese de
servidor de acceso para toda la red de casa, con bridging,
servidor DHCP y control de direcciones MAC:

[gallir@ponti gallir]$ ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:03 init [3]
2 ? SW 0:00 [keventd]
3 ? SW 0:00 [kapmd]
4 ? RWN 0:00 [ksoftirqd_CPU0]
5 ? SW 0:06 [kswapd]
6 ? SW 0:00 [bdflush]
7 ? SW 0:00 [kupdated]
8 ? SW 0:01 [kjournald]
228 ? S 0:02 /sbin/cardmgr
694 ? S 0:05 syslogd -m 0
699 ? S 0:03 klogd -2
831 ? S 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P…
851 ? SL 0:00 ntpd -U ntp
933 ? S 0:33 /usr/sbin/sshd
984 ? S 0:00 gpm -t ps/2 -m /dev/mouse
1002 ? S 0:00 crond
1038 ? S 0:00 /usr/sbin/atd
1045 tty1 S 0:00 login — root
1046 tty2 S 0:00 login — root
1047 tty3 S 0:00 /sbin/mingetty tty3
5636 ? S 0:04 /usr/sbin/dhcpd
5835 tty1 S 0:00 -bash
6734 tty2 S 0:00 -bash
7691 ? S 0:03 /usr/sbin/sshd
7692 pts/0 S 0:00 -bash
7905 pts/0 R 0:00 ps ax
[gallir@ponti gallir]$ /sbin/lsmod
Module Size Used by
hostap_cs 82496 1
3c574_cs 8400 1
ds 6384 2 [hostap_cs 3c574_cs]
yenta_socket 8368 2
pcmcia_core 38016 0 [hostap_cs 3c574_cs ds yenta_socket]

También he probado el mismo portátil con la otras
tarjetas Conceptronic que compré (la PCMCIA de la segunda
foto) y funciona perfectamente, aunque su alcance es levemente
inferior debido a la antena pequeña incluida, pero aún
así la redfunciona a 11 mbps en todo el piso a pesar de que el
portátil está en una mala ubicación.
Instalación del módulo Host AP
En la página web del Host AP y en el README del software
(un tgz) está bien explicado como instalar el módulo
hostap en sus distintas variantes, especialmente PCMCIA y PCI.
Básicamente hace falta los fuentes del kernel que se está
usando (se pone el path en el Makefile), luego sólo hay
que compilarlo y hacer un make install para que instale los módulos
en el directorio correspondiente (/lib/modules/2.4.18/pcmcia/ en mi
caso) y el fichero de configuración de la PCMCIA
(hostap_cs.conf) en el directorio /etc/pcmcia .
Una vez instalado, si usamos la opción PCMCIA (seguramente
sí, aunque tengamos el adaptador PCI) debemos indicar a los
módulos del PCMCIA que cuando detecte esa tarjeta cargue el
módulo hostap_cs.

Para ello editamos el fichero /etc/pcmcia/config.opts y
ponemos la siguientes líneas:
card “Conceptronic Wireless”
version “802.11”, “11Mbps Wireless LAN Card”
bind “hostap_cs”

wavemon sobre un Linux
en el Apple iBook con Airport conectado el Access Point

Este es el Windows de mi hija,
en su habitación, también con una tarjeta Conceptronic
conectado a la red wireless a traves del Linux AP

Con eso ya tenemos casi todo lo referente a drivers, ahora hay que
configurar la red.
Bridging
Como comenté anteriormente, no basta con poner la tarjeta en
modo Master para tener un access point, sino que hay además
interconectar la red Ethernet y la inalámbrica. Yo opté
por hacer bridging entre ambas redes, así trato toda la red de
mi casa como si fuese una sola, sin preocuparme en dar direcciones IP
de distintas redes si estoy conectado por Ethernet o Wireless.
Para hacer bridging en Linux hay que habilitar dicha opción
en el kernel:

Luego hay que instalar el paquete bridge-utils que está
disponible en Debian (en Red Hat hay que buscarlo en rpmfind.net(10),
cuando yo lo hice sólo estaba disponible en la versión
RawHide pero me funcionó perfectamente sobre una RedHat 7.2).
El programa principal de dicho paquete, brctl, permite
crear y configurar interfaces virtuales que incluyen las
interfaces sobre las que se aplicará el bridging.

En la imágen de arriba se puede observar primero la
configuración del bridge definido (br0), que
incluye a las interfaces eth0 y wlan0 (en el módulo
hostap las interfaces wireless se denominan wlanX).
Veréis que he deshabilitado el spanning tree protocol
ya que en mi red estoy seguro que no hay bucles (es muy simple), pero
si tú no lo estás, déjalo habilitado.
A continuación se puede observar (con el argumento
showmacs) los ordenadores conectados a cada red, la 1 es la
ethernet y la 2 es la wlan0. Las marcadas como local
son las interfaces del servidor, las demás son las remotas.
ATENCIÓN: las interfaces que forman parte de un
bridge no deben tener ninguna dirección asignada, en
los ficheros de configuración de la tarjeta hay que ponerle
una IP 0.0.0.0 en vez de una IP real, ya que deben trabajar en
modo promiscuo.
Definición del br0 en Debian
En Debian es muy fácil configurarlo, ya que el
/etc/network/interfaces es muy flexible y potente, en mi caso
sólo tuve que poner

auto br0
iface br0 inet static
address 192.168.0.10
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.1
bridge_ports eth0 wlan0
bridge_stp off
bridge_maxwait 5
Os recomiendo leer además lo de RedHat para entender mejor el
procedimiento completo.
Definición del br0 en Red
Hat

En Red Hat es un poco más complicado por dos razones, no
hay un ficheros interfaces como en Debian y además las
tarjetas de red PCMCIA se configuran siempre desde el
/etc/sysconfig/network-scripts/ifcfg-xxx. Pero yo le hice un
truco bastante sucio, tengo un ifcfg-eth0, ifcfg-wlan0
y ifcfg-zbr0 (el z lo pongo para que se llame después
de llamar a los de las interfaces). El contenido de cada fichero es:

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=0.0.0.0
BOOTPROTO=static
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-wlan0
DEVICE=wlan0
MODE=Master
ESSID=Antoli
RATE=auto
TXPOWER=auto
KEY=”s:mi_clave”
BOOTPROTO=static
ONBOOT=yes
/usr/bin/prism2_param wlan0 host_decrypt 1

NOTA: Con la ejecución de “/usr/bin/prism2_param wlan0
host_decrypt 1” estoy obligando a hacer el desencriptado WEP de
las tramas en el propio driver, por software, en vez de hacerlo en la
tarjeta. La conveniencia o no de usarlo depende de la tarjeta que
uséis y la versión del driver. O sea, probadlo, quizás
vuestra tarjeta no funcione con encriptación de 128/104 bits
sin esa opción. El comando prism2_param es un script incluido
en el paquete hostap y sirve para simplificar las llamadas al iwpriv para
cambiar parámetros de la tarjeta.

/etc/sysconfig/network-scripts/ifcfg-zbr0
/usr/sbin/brctl delif br0 eth0
/usr/sbin/brctl delif br0 wlan0
/usr/sbin/brctl delbr br0
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 wlan0
/usr/sbin/brctl stp br0 off
DEVICE=br0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.3
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes

Creo que os comenté al menos lo más importante, si me
he dejado algo en el tintero, disculpas, son muchas cosas en un sólo
artículo… pero quería que tengáis al menos una
guía para demostrar la potencia de Linux en el área
de wireless
.

Nota final: El artículo está orientado para los que quieran montarse
una red casera, sin embargo, como me ha recalcado Jordi Murgó (uno de los
desarrolladores del módulo hostap), el módulo permite muchas más cosas a
nivel profesional y montar redes muy sofisticadas con roaming transparente:

  • Sistema de distribución.
  • Delegación de autentificación.
  • Notificación a procesos de usuario, lo que permite cosas más complejas como
    cambios de firewalls, enrutados, notificación de eventos, etc.

Ricardo Galli

Comentarios en la siguiente página…

Comentarios…Lista de enlaces de este artículo:

  • http://ozlabs.org/people/dgibson/dldwd/
  • http://www.linux-wlan.org/
  • http://hostap.epitest.fi/
  • http://bulma.net/body.phtml?nIdNoticia=1891
  • http://www.sjdjweis.com/linux/proxyarp/
  • http://www.tldp.org/HOWTO/Adv-Routing-HOWTO-16.html#ss16.2
  • http://www.conceptronic.net/products.asp?p=C11iDT&Aktie=5&mt=C11iDT&
  • http://www.conceptronic.net/products.asp?p=CON11C&Aktie=5&mt=C
    ON11C&am
  • http://www.polakilandia.org/gwlan/
  • http://rpmfind.net/
  • Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1309 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.