Compartir Internet con tarjeta wifi Ralink rt25xx en Hardy

+1
0
-1

He estado muchos meses intentando compartir acceso a internet con un PPC, a través de una conexión ad-hoc mediante una tarjeta inalámbrica con chip RaLink rt61 y usando Ubuntu Gutsy. Pero me resultó imposible porque, al parecer, dicha versión de Ubuntu viene con algún bug que impide utilizar correctamente esa tarjeta.

Al parecer ese bug ha sido corregido en la nueva versión 8.04, pues ahora lo he conseguido siguiendo estos pasos:

  1. Ubuntu trae un driver instalado por defecto pero no funciona bien, cuelga el PC a veces sí a veces no. Para deshabilitarlo lo metemos en la lista negra. Añadimos la siguiente línea al fichero /etc/modprobe.d/blacklist:
    blacklist rt61pci
    
  2. Bajarse los drivers que ofrece el fabricante RaLink desde su web oficial. Buscamos el modelo de tarjeta que tengamos, si no sabes cual es lo puedes conocer con el comando lspci en un terminal (en mi caso es el rt61). Tenemos que compilar el módulo a partir del código fuente, de manera que necesitaremos tener instalados los siguientes paquetes:
    $ sudo aptitude install build-essential linux-headers-$(uname -r)
    

    Asimismo habría que desinstalar el paquete network-manager, aunque en Hardy no es necesario porque no existe.

  3. Descomprimir el archivo de drivers en el directorio donde se haya descargado:
    $ tar -xjvf 2008_0723_RT61_Linux_STA_v1.1.2.2.tar.bz2
    

    Y luego compilar el módulo:

    $ cd 2008_0723_RT61_Linux_STA_v1.1.2.2/Module
    ~/2008_0723_RT61_Linux_STA_v1.1.2.2/Module$ make all
    
  4. Crear el directorio /etc/Wireless/RT61STA donde se copiarán una serie de ficheros generados tras la compilación:
    ~/2008_0723_RT61_Linux_STA_v1.1.2.2/Module$ sudo mkdir /etc/Wireless
    ~/2008_0723_RT61_Linux_STA_v1.1.2.2/Module$ sudo mkdir /etc/Wireless/RT61STA
    ~/2008_0723_RT61_Linux_STA_v1.1.2.2/Module$ sudo cp *.bin rt61sta.dat /etc/Wireless/RT61STA
    ~/2008_0723_RT61_Linux_STA_v1.1.2.2/Module$ sudo cp rt61.ko /lib/modules/$(uname -r)/kernel/drivers/net
    
  5. Ya está instalado, el resto del trabajo es pura configuración. Levantamos el driver y terminamos de configurar:
    $ sudo depmod
    $ sudo modprobe rt61
    

    Para que levante el módulo al arrancar el sistema añadimos la línea rt61 al archivo /etc/modules.

  6. Reiniciamos el sistema para aplicar los cambios. Tras lo cual comprobaremos que la tarjeta es detectada ejecutando iwconfig.
  7. Ahora vamos a configurar la tarjeta y la conexión ad-hoc. Para ello modificar el fichero /etc/network/interfaces añadiendo lo siguiente (si este fichero ya contenía alguna referencia a la tarjeta wifi sería necesario borrarla antes de iniciar todo este proceso):
    ## tarjeta inalámbrica de red local
    auto ra0
    iface ra0 inet static
        address 192.168.25.1
        netmask 255.255.255.0
        network 192.168.25.0
        wireless_mode ad-hoc
        wireless_essid nombre_de_la_conexión
    

    Las direcciones IP pueden ser distintas, pero han de comenzar por 192.168.

  8. Crear el script /etc/init.d/iptablesconf con este código:
    #### Script que configura iptables ####
    
    #!/bin/bash
    echo "Borrando reglas de redireccionamiento preexistentes....."
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    echo "Aplicando nuevas reglas de redireccionamiento....."
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.25.0/25 -d 0.0.0.0/0 -j MASQUERADE
    iptables -A INPUT -p TCP -m state --state RELATED -j ACCEPT
    echo "....Done"
    
  9. Guardar ambos ficheros, luego le damos permisos de ejecución al script y lo añadimos a los servicios de inicio del sistema, después se reinicia el nuevo servicio creado y la red:
    $ sudo chmod -v 755 /etc/init.d/iptablesconf
    $ sudo update-rc.d iptablesconf start 20 2 .
    $ sudo /etc/init.d/iptablesconf start
    $ sudo /etc/init.d/networking restart
    
  10. En el ordenador cliente (en mi caso, un pocket PC con WM5) habrá que configurar la conexión con los siguientes datos:
    IP: 192.168.25.10
    Mascara: 255.255.255.0
    Enlace: 192.168.25.1
    

    Y los servidores DNS que tengamos puesto en el fichero /etc/resolv.conf (u otros distintos, si se desea).

EDITO
Se puede mejorar la velocidad de acceso en la máquina cliente montando un servidor DNS en Ubuntu, de tal forma que aquel no necesite acceder a Internet para resolver nombres de dominios. Para ello hágase lo siguiente:

  • Instalar el servidor bind
    $ sudo aptitude install bind9
    
  • Editar el fichero /etc/bind/named.conf.local y añadir lo siguiente:
     // Aquí definimos la zona de resolución inversa
    zone "25.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.25";
    };
    
  • Editar el fichero /etc/bind/named.conf.options y modificarlo para que quede así:
    options {
    	directory "/var/cache/bind";
    	forwarders {
    	 	xxx.xxx.xxx.xxx;
    		yyy.yyy.yyy.yyy;
    	};
    	auth-nxdomain no;    # conform to RFC1035
    	listen-on-v6 { any; };
    };
    

    Donde xxx.xxx.xxx.xxx e yyy.yyy.yyy.yyy son las IP's de dos servidores DNS distintos.

  • Si se quiere hacer una comprobación sintáctica del archivo de configuración named.conf hay que ejecutar:
    $ named-checkconf
    

    Si no genera salida es que todo está correcto.

  • Reiniciar el servicio Bind
    $ sudo /etc/init.d/bind9 restart
    
  • En el ordenador cliente configurar la DNS con esta IP: 192.168.25.1

Y ya está. Me faltaría por saber si es posible ponerle una contraseña (siendo una conexión ad-hoc no sé si es necesario) y cómo asignar un ancho de banda dedicado a la tarjeta wifi, para compartir el ancho de banda de manera equitativa.


Fuentes de información:
http://www.fentlinux.com/foros/viewtopic.php?f=7&t=10109#
http://www.cofradia.org/modules.php?name=News&file=article&sid=15025
http://www.alejandrox.com/2007/11/configurar-un-servidor-dns-con-bind/

Comentarios

Imagen de novato_XD

Tu utilizaste esa tarjeta porque sabías que tenia soporte linux por el fabricante? y como buscaste el soporte de tu tarjeta wifi, para linux o alguna distro en especial?
Pero si el dispositivo no tiene soporte como se busca el driver para linux?...

XD Novato aprendiendo Linux

Imagen de pepitux

Antes de comprar la tarjeta me aseguré de comprobar que su chipset tenía soporte en GNU/linux, el problema es que ninguno de los drivers que probé funcionaban en Ubuntu Gutsy.

Si te refieres a como encontré la web con los controladores para mi tarjeta, lo hice en este enlace donde me he basado para escribir el tutorial.

Es posible que algún dispositivo no tenga soporte del fabricante para Ubuntu, pero puede que existan drivers no oficiales. Busca en google, seguro que encuentras algo.

EDITO
en esta web puedes averiguar qué tarjetas inalámbricas están soportadas en linux: http://linux-wless.passys.nl/

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P: Tengo problemas con mi máquina en windows, ¿me puede ayudar?
R: claro, tira esa basura de M$ e instala Ubuntu

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P: Tengo problemas con mi máquina en windows, ¿me puede ayudar?
R: claro, tira esa basura de M$ e instala Ubuntu

Imagen de Diegstroyer

Una preguntilla, el ordenador servidor se conecta a Internet mediante la rt61 o mediante cable y una tarjeta ethernet normal? La iface que pones (ra0) es la que te sale por defecto en iwconfig y la configuras tu o la pones a tu bola y la llamas ra0?

Acias...

Live as if you were to die tomorrow, learn as if you were to live forever... Ghandi.

Página de descarga de software Ubuntu: http://www.getdeb.net/

Imagen de pepitux

No, el ordenador servidor se conecta a internet mediante una tarjeta ethernet de cable, el dispositivo 'ra0' se refiere a la tarjeta inalámbrica. El nombre de dicho dispositivo lo proporciona el sistema, se obtiene al ejecutar 'iwconfig'.

Este mensaje lo estoy escribiendo precisamente desde el PPC :-D

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P: Tengo problemas con mi máquina en windows, ¿me puede ayudar?
R: claro, tira esa basura de M$ e instala Ubuntu

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P: Tengo problemas con mi máquina en windows, ¿me puede ayudar?
R: claro, tira esa basura de M$ e instala Ubuntu