Tutorial Raspberry Pi - Cómo crear un punto de acceso WiFi

Iniciado por Stiuvert, Diciembre 27, 2016, 09:56:39 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.



Bienvenidos a un nuevo tutorial de Raspberry Pi, en el cual aprenderemos a crear un punto de acceso WiFi a través del cual tendremos acceso a Internet. Muchas veces he estado en sitios que tenían toma Ethernet pero no señal WiFi, por lo que conectar por ejemplo un teléfono o tablet era imposible. Sin embargo, con este tutorial tendremos una red WiFi para nosotros solos gracias a la Raspberry Pi.

Material necesario:

  • Raspberry Pi.
  • Cable Ethernet.
  • Adaptador WiFi.
  • Tarjeta de memoria compatible (mínimo 4GB).

    Instalación de Raspbian

    Este tutorial lo he realizado tras instalar Raspbian en la Raspberry Pi. Puedes ver cómo hacerlo desde este tutorial. Una vez hecho esto, podemos seguir con los pasos siguientes.

    Instalar los programas necesarios

    Antes de nada, como siempre hay que hacer al instalar un nuevo sistema operativo, actualizamos los programas instalados con estos comandos:

    Código: bash
    sudo apt-get update
    sudo apt-get upgrade


    Tras esto, instalaremos dos programas que nos permitirán crear el punto de acceso WiFi: hostapd y isc-dhcp-server.

    Código: bash
    sudo apt-get install hostapd isc-dhcp-server


    Configurar el servidor DHCP DHCP es el protocolo que hace que automáticamente se nos asigne una dirección IP al conectarnos a una red. Para configurarlo, abre su fichero de configuración:

    Código: bash
    sudo nano /etc/dhcp/dhcpd.conf


    Busca las siguientes líneas:

    Código: php
    option domain-name "example.org";
    option domain-name-servers ns1.example.org, ns2.example.org;


    Cuando las hayas encontrado, coméntalas con un caracter almohadilla '#' delante:

    Código: php
    #option domain-name "example.org";
    #option domain-name-servers ns1.example.org, ns2.example.org;


    Ahora busca las siguientes líneas:

    Código: php
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    #authoritative;


    Descomenta la tercera línea para que quede así:

    Código: php
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    authoritative;


    Por último, añade las siguientes líneas al final del archivo:

    Código: php
    subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.10 192.168.100.50;
        option broadcast-address 192.168.100.255;
        option routers 192.168.100.1;
        default-lease-time 600;
        max-lease-time 7200;
        option domain-name "local";
        option domain-name-servers 8.8.8.8, 8.8.4.4;
    }


    Ya hemos terminado de modificar este archivo, así que ciérralo con las teclas CTRL+X y luego Y. A continuación, abriremos otro archivo de configuración:

    Código: bash
    sudo nano /etc/default/isc-dhcp-server


    Busca la línea INTERFACES="" y entre las comillas añade "wlan0": INTERFACES="wlan0". Una vez hecho esto, cierra y guarda el archivo. Configurar una IP estática en wlan0 A continuación, configuraremos una dirección IP estática para wlan0. De esta manera, siempre será la misma. Para ello, desactivamos la interfaz wlan0 con el siguiente comando:

    Código: bash
    sudo ifdown wlan0


    Una vez desactivada la interfaz, hay que modificar su configuración:

    Código: bash
    sudo nano /etc/network/interfaces


    Después de la línea allow-hotplug wlan0, añade lo siguiente:

    Código: php
    iface wlan0 inet static
      address 192.168.100.1
      netmask 255.255.255.0


    Y comenta con un '#' las tres líneas siguientes. El archivo completo debe quedar así:

    Código: php
    auto lo

    iface lo inet loopback
    iface eth0 inet dhcp

    allow-hotplug wlan0

    iface wlan0 inet static
      address 192.168.100.1
      netmask 255.255.255.0

    #iface wlan0 inet manual
    #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    #iface default inet dhcp


    Cierra el archivo y guárdalo. Tras esto, asigna la IP a la interfaz wlan0 y habilítala con el siguiente comando:

    Código: bash
    sudo ifconfig wlan0 192.168.100.1


    Configurar el punto de acceso

    Ahora toca configurar el punto de acceso (SSID, contraseña, tipo de seguridad, etc.). Para ello, vamos a crear un nuevo archivo con el siguiente comando:

    Código: bash
    sudo nano /etc/hostapd/hostapd.conf


    Debido a que acabamos de crearlo, no tiene ningún contenido, por lo que hay que pegar lo siguiente:

    Código: php
    interface=wlan0
    driver=rtl871xdrv
    ssid=RPi_PA
    hw_mode=g
    channel=6
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=contrasena
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP


    Podéis cambiar el SSID de RPi_PA (Raspberry Pi Punto de Acceso) al que queráis, así como la contraseña (wpa_passphrase). Asegúrate de que el archivo no tiene líneas extra ni espacios al final de cada línea. A continuación, debemos decirle a la Raspberry Pi dónde encontrar el archivo de configuración que acabamos de crear. Para ello, modificamos la línea #DAEMON_CONF del siguiente archivo:

    Código: bash
    sudo nano /etc/default/hostapd


    La vamos a dejar así: DAEMON_CONF="/etc/hostapd/hostapd.conf". Acuérdate de quitar la almohadilla para descomentar la línea. Guarda y cierra el archivo. Configuración de NAT NAT (Network Address Translation) es el protocolo que permite que muchos clientes puedan conectarse a Internet a través de una única conexión IP "tunelando" la conexión. Debes hacer esto incluso si sólo vas a tener un cliente conectado. Abre el siguiente archivo de configuración:

    Código: bash
    sudo nano /etc/sysctl.conf


    Añade la siguiente línea al final:

    Código: php
    net.ipv4.ip_forward=1


    Estos cambios se aplicarán cuando reiniciemos el sistema, pero para hacerlo inmediatamente puedes introducir lo siguiente en consola, que tiene el mismo objetivo que lo anterior:

    Código: bash
    sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"


    Ahora hay que configurar las iptables para hacer la "traducción" entre la interfaz Ethernet (Eth0) y la WiFi (wlan0):

    Código: php
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT


    El problema de esto es que habría que ejecutar los comandos anteriores cada vez que encendamos la Raspberry Pi, pero para que sea automático introducimos lo siguiente:

    Código: bash
    sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"


    A continuación volvemos al archivo de configuración de las interfaces de red que hemos modificado con anterioridad:

    Código: bash
    sudo nano /etc/network/interfaces


    Al final del todo, hay que añadir la línea siguiente:

    Código: php
    up iptables-restore < /etc/iptables.ipv4.nat


    Actualizar hostapd

    Dependiendo de dónde hayáis comprado vuestro adaptador WiFi, este tutorial funcionará o no. Para intentar arreglarlo, actualizaremos a una versión nueva de hostapd que proporcionan desde AdaFruit:

    Código: dos
    wget http://adafruit-download.s3.amazonaws.com/adafruit_hostapd_14128.zip
    unzip adafruit_hostapd_14128.zip


    Ahora toca intercambiar la versión antigua por la nueva:

    Código: bash
    sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG
    sudo mv hostapd /usr/sbin
    sudo chmod 755 /usr/sbin/hostapd


    ¿Funcionará?

    Para ver si todo funciona correctamente, ejecuta este comando e intenta conectarte a la red WiFi que verás desde tu ordenador y que acabamos de crear:

    Código: bash
    sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf




    Puedes dejar de ejecutar el comando anterior y tener acceso a la terminal pulsando Control+C.
    Últimos detalles

    Ahora que ya sabemos que funciona, vamos a crear un daemon que se ejecutará cada vez que la Raspberry Pi se encienda:

    Código: bash
    sudo service hostapd start
    sudo service isc-dhcp-server start


    Es posible conocer el estado de los daemon con los siguientes comandos:

    Código: bash
    sudo service hostapd status
    sudo service isc-dhcp-server status


    Finalmente, para habilitar los daemon:

    Código: bash
    sudo update-rc.d hostapd enable
    sudo update-rc.d isc-dhcp-server enable


    Una vez hecho esto, ya tendremos nuestro punto de acceso WiFi configurado para que podamos acceder a Internet a través de nuestra Raspberry Pi conectada a un puerto Ethernet. Este tutorial ha quedado bastante largo y es un poco tedioso, pero merece la pena hacerlo porque es la primera parte de otro que publicaré pronto. ¡Un saludo!

    Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Grande Stiu, cuando me desocupe de las notebooks y vuelva a la Raspi, lo pruebo.
GRACIAS :D
Pikaa~


Casi pasa un año de que dije que lo iba a hacer, y auno no lo hice.
Siempre tengo otras cosas para hacer, pero ya que me estableci en un lugar fijo, con conexion 100% propia, decente y un modem totalmente configurable, puedo empezar a divertirme en el barrio.
Pikaa~


El punto de acceso que se puede crear con las Rapberry es aceptable, pero no es apropiado para usarlo como punto de acceso para tareas importantes o prolongadas como puede ser en el trabajo, en unas oficinas o en tu casa durante un largo tiempo.

Un saludo