Trace: hostapd

hostapd

Siempre he envidiado esos aparatitos que permiten convertir la señal de un celular para que funcione como router WiFi, se les conoce como MiFi. La cosa es que son caros, algunos valen de los 90 a los 150 dólares. Pensé que es un abuso que cobren tan caro y me he dado a la tarea de investigar como se puede hacer que mi laptop reparta internet inalámbrico con un modem usb, con el fin de copiar la configuración a mi raspberrypi y que me sirva de MiFi.

Mis utensilios son los siguientes:

  • Tengo un modem USB, en mi caso tengo un Huawei E3531, puede consultar las especificaciones acá
  • Tengo una tarjeta WiFi USB, en mi cao tengo un D-Link DWA-131, puede consultar las especificaciones acá
  • Una laptop, es un estornaco, una Lenovo x140e, puede consultar las especificaciones acá
  • Un Raspberry Pi 2, puede consultar las especificaciones acá
  • Poco dinero

Me voy a detener un poco en la maravilla del modem USB, éste al ser insertado en el sistema operativo crea una interfaz de red ethernet, la cual a su vez obtiene una IP de la subred 192.168.8.X, si usted ingresa con su navegador web a la IP 192.168.8.1 se le va a desplegar la página de bienvenida del modem, con datos muy interesantes. Generalmente estos dispositivos son muy tediosos porque crea un dispositivo modem y son algo mas complicados de configurar o por lo menos es menos amigable.

La laptop repartiendo internet

Primeramente voy a configurar la laptop para que reparta internet… ustedes preguntarán… ¿porque usar la tarjeta USB WiFi, si las laptops ya tienen una tarjeta WiFi? bueno les cuento que si están usando el driver de Broadcom, no van a poder hacerlo.

$ lspci | grep 802
01:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n

Cuadro 1

En el Cuadro 1 se muestra un detalle de la salida del comando lspci detallando a la Broadcom.

Para validar si tarjeta wireless soporta convertirse en un Access Point (AP) debe instalar una herramienta que se llama iw, para ello ejecute el comando contenido en el Cuadro 2:

# apt-get install iw

Cuadro 2

Una vez hecho esto ejecute el comando contenido en el Cuadro 3:

$ iw list | grep "Supported interface modes" -A 8

Cuadro 3

En el caso de mi escenario tengo conectado la tarjeta WiFi USB, entonces se puede apreciar en el Cuadro 4 ambas interfaces, una soporta el modo AP, mientras que la Broadcom NO, the bastard…

# iw list | grep "Supported interface modes" -A 8
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
        Band 1:
--
        Supported interface modes:
                 * IBSS
                 * managed
        Band 1:
                Bitrates (non-HT):
                        * 1.0 Mbps
                        * 2.0 Mbps (short preamble supported)
                        * 5.5 Mbps (short preamble supported)
                        * 11.0 Mbps (short preamble supported)

Cuadro 4

Entonces mi escenario es el siguiente:

  • Dos tarjetas ethernet:
    • eth0: la tarjeta integrada de la laptop
    • eth1: el modem USB
  • Dos tarjetas WiFi:
    • wlan0: la tarjeta integrada de la laptop
    • wlan1: la tarjeta WiFi USB

Instalación

Vamos necesitar el programa hostapd, que puede ser instalado con el comando contenido en el cuadro 5:

# apt-get install hostapd

Cuadro 5

Ahora edite el archivo /etc/default/hostapd y modifique el contenido para que sea igual al texto contenido en el Cuadro 6:

# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
DAEMON_OPTS="-d"

Cuadro 6

Cree el archivo /etc/hostapd/hostapd.conf para que luzca similar al texto contenido en el Cuadro 7:

interface=wlan1
bridge=br0
#Aquí debe indicar como desea que aparezca la red wireles
ssid=sofia_preciosa
hw_mode=g
wpa=2
#Aquí debe indicar un password convincent
wpa_passphrase=C4mb14m3*F4v0r
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Cuadro 7

Ahora, vamos a configurar un adaptador puente, el fin de este adaptador puente es transmitir la información que entra y sale por la interfaz eth1 para que entre y salga por la interfaz wlan1, es decir que reenvíe la información. Para ello edite el archivo /etc/network/interfaces y modifique el contenido para añadir el texto contenido en el Cuadro 8:

iface br0 inet static
    bridge_ports wlan1 eth1
    address 192.168.8.100
    netmask 255.255.255.0
    network 192.168.8.0
    ## ip del modem USB ##
    gateway 192.168.8.1
    dns-nameservers 192.168.8.1

Cuadro 8

Luego de esto instale el paquete bridge-utils con el comando contenido en el Cuadro 9:

# apt-get install bridge-utils

Cuadro 9

Una vez hechos los cambios es hora de activar el servicio, para ello ejecute el comando contenido en el Cuadro 10 si utiliza una versión de Debian anterior a 8:

# /etc/init.d/hostapd start

Cuadro 10

Si utiliza Debian 8 o posterior… podría hacer lo mismo, pero como ya tiene systemd el comando adecuado es el que contiene el Cuadro 11:

# systemctl start hostapd

Cuadro 11

¡Listo! Valide conectarse con su dispositivo inalámbrico y navegue por internet. Si no funcionó, revise de nuevo los pasos. Es necesario indicar que el DHCP que toma el dispositivo que desea conectar es el mismo que proporciona el modem USB, por lo que si su dispositivo no tiene esa función, no va a recibir la IP, me da mucha pereza y como no aplica en mi caso, documentar lo del servidor DHCP.

Raspberry Pi repartiendo internet

Para validar si tarjeta wireless soporta convertirse en un Access Point (AP) debe instalar una herramienta que se llama iw, para ello ejecute el comando contenido en el Cuadro 12:

# apt-get install iw

Cuadro 12

Una vez hecho esto ejecute el comando contenido en el Cuadro 13:

$ iw list | grep "Supported interface modes" -A 8

Cuadro 13

En el caso de mi escenario tengo conectado la tarjeta WiFi USB, entonces se puede apreciar en el Cuadro 14 que soporta el modo AP:

# iw list | grep "Supported interface modes" -A 8
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
        Band 1:

Cuadro 14

Entonces mi escenario es el siguiente:

  • Dos tarjetas ethernet:
    • eth0: la tarjeta integrada de la Pi
    • eth1: el modem USB
  • Dos tarjetas WiFi:
    • wlan0: la tarjeta WiFi USB

Instalación

Vamos necesitar el programa hostapd, que puede ser instalado con el comando contenido en el Cuadro 15:

# apt-get install hostapd

Cuadro 15

Ahora edite el archivo /etc/default/hostapd y modifique el contenido para que sea igual al texto contenido en el Cuadro 16:

# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
DAEMON_OPTS="-d"

Cuadro 16

Cree el archivo /etc/hostapd/hostapd.conf para que luzca similar al texto contenido en el Cuadro 17:

interface=wlan0
bridge=br0
#Aquí debe indicar como desea que aparezca la red wireles
ssid=sofia_preciosa
hw_mode=g
wpa=2
#Aquí debe indicar un password convincent
wpa_passphrase=C4mb14m3*F4v0r
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Cuadro 17

Ahora, vamos a configurar un adaptador puente, el fin de este adaptador puente es transmitir la información que entra y sale por la interfaz eth1 para que entre y salga por la interfaz wlan0, es decir que reenvíe la información. Para ello edite el archivo /etc/network/interfaces y modifique el contenido para añadir el texto contenido en el Cuadro 18:

iface br0 inet static
    bridge_ports wlan0 eth1
    address 192.168.8.100
    netmask 255.255.255.0
    network 192.168.8.0
    ## ip del modem USB ##
    gateway 192.168.8.1
    dns-nameservers 192.168.8.1

Cuadro 18

Luego de esto instale el paquete bridge-utils con el comando contenido en el Cuadro 19:

# apt-get install bridge-utils

Cuadro 19

Una vez hechos los cambios es hora de activar el servicio, para ello ejecute el comando contenido en el Cuadro 20 si utiliza una Raspbian 7:

# /etc/init.d/hostapd start

Cuadro 20

Si utiliza Raspbian 8 o posterior… podría hacer lo mismo, pero como ya tiene systemd el comando adecuado es el que contiene el Cuadro 21, al momento de escribir este documento aún no ha sido lanzado Raspbian 8, pero por si acaso:

# systemctl start hostapd

Cuadro 21

¡Listo! Valide conectarse con su dispositivo inalámbrico y navegue por internet. Si no funcionó, revise de nuevo los pasos. Es necesario indicar que el DHCP que toma el dispositivo que desea conectar es el mismo que proporciona el modem USB, por lo que si su dispositivo no tiene esa función, no va a recibir la IP, me da mucha pereza y como no aplica en mi caso, documentar lo del servidor DHCP.

Referencias

hostapd.txt · Last modified: 2015/04/28 23:01
Public Domain Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain