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

ars28

  • Usuario
  • 26
  • Usuario

La Raspberry (Rpi) puede usarse como un punto de acceso inalámbrico, creando una segunda red wifi en casa. El resultado es una nueva red wifi manejada completamente por la RPI. Con esto podríamos lograr que los equipos que se conectan en la red creada por la RPI estén en una red distinta a la que la RPI está conectada.

La topología que se propone en este caso es la siguiente:
 

El punto de acceso ruteado lo vamos a crear usando la placa de red que trae embebida la RPI. Y para conectarnos a otra red usando wifi vamos a usar un usb dongle wifi (en mi caso es una antena alpha con un chip realtek). Posiblemente con algunos dongles sea necesario realizar alguna configuración extra. En mi caso solamente bastó con conectarlo.

Antes de arrancar:

-Lo que hice acá esta probado en una Raspberry Pi 4 de 2gb ram, usando Raspbian Buster.
-Asegúrate de tener acceso administrativo de la RPI.
-Bootea la RPi.
-asegúrate de que la RPI este actualizada. Para eso:
Código: [Seleccionar]
sudo apt-get update
sudo apt-get upgrade
-tene una compu, un celu, con el que te puedas conectar para probar el nuevo punto de acceso

INSTALAR EL SOFTWARE PARA MANEJAR LAS REDES Y PARA EL PUNTO DE ACCESO:

Para trabajar con el access point, necesitamos tener instalado el paquete HOSTAPD:

Código: [Seleccionar]
sudo apt install hostapd
Para poder proveer los servicios de gestion de red (DNS, DHCP), a los clientes que se conecten, la raspberry necesita tener instalado el paquete DNSMASQ:

Código: [Seleccionar]
sudo apt install dnsmasq   
Finalmente, instalamos netfilter-persistent y su plugin iptables-persistent. Esta utilidad ayuda a guardar las reglas del firewall y restaurarlas cuando la Rpi bootea.

Código: [Seleccionar]
sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent
Con esto ya tenemos instalados todos los softwares que necesitamos.

CONFIGURACIONES


CONECTARSE A UNA RED CON INTERNET CON UNA DE LAS TARJETAS

Lo primero que vamos a hacer es crear el archivo desde el que leeremos la configuración para conectarnos a internet. Para chequear las interfaces inalabricas que tenemos lo hacemos con:
 
Código: [Seleccionar]
iwconfig   
En mi caso me detecta la wlan0 (placa de red integrada), y wlan1(dongle usb wifi). Yo me voy a conectar al router con wlan1. Para eso creamos el archivo wpa_supplicant-wlan1.conf en la ubicacion /etc/wpa_supplicant/

Código: [Seleccionar]
/etc/wpa_supplicant/wpa_supplicant-wlan1.conf
Y le ponemos lo siguiente:

Código: [Seleccionar]
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=AR
network={
        ssid="SSID"
        psk="CONTRASEÑA"
}

Ustedes reemplacen SSID con el nombre de su red y en CONTRASEÑA  con la clave de la misma.

Citar
NOTA: Si a esta configuración la ponemos en wpa_supplicant.conf todas las interfaces se van a configurar igual.

CONFIGURAR EL ENRUTADOR DE REDES

La Rpi, va a gestionar una nueva red wifi. También va a routear desde la red que crea, a la red que esta conectada a internet (De la Wlan0 a la Wlan1), para proveerle internet a los clientes que se conecten.

DEFINIR LA CONFIGURACIÓN IP DE WLANO (interface que crea el AP).
La RPI correará un server DHCP para la red que crea. Entonces, necesitamos una IP estática para la interfaz inalámbrica de la rpi que crea el AP (wlan0). La RPI también actúa como router en la red que crea, y por eso le vamos a dar la primera ip de esa red: 192.168.4.1

Para configurar la IP estática, editamos el archivo dhcp con:

Código: [Seleccionar]
sudo nano /etc/dhcpcd.conf
Vamos al final del archivo y agregamos lo siguiente:

Código: [Seleccionar]
interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

HABILITAR EL ENRUTAMIENTO Y ENMASCARAMIENTO.

En esta sección configuramos la RPI para permitirles a los clientes que se conecten a la red tener acceso a internet.
Para habilitar el ruteo, creamos el siguiente archivo:

Código: [Seleccionar]
sudo nano /etc/sysctl.d/routed-ap.conf
Con el contenido:

   
Código: [Seleccionar]
# https://www.raspberrypi.org/documentation/configuration/wireless/access-point-routed.md
    # Enable IPv4 routing
    net.ipv4.ip_forward=1

Habilitar el ruteo permitira a los clientes de la red 192.168.4.0/24 alcanzar la wlan1, y tener acceso a internet. Para permitir el tráfico entre los clientes del AP e internet, sin cambiar la configuración del router principal, la RPI puede sustituir la ip de los clientes con su propia ip de wlan1. Para ello usamos una regla de firewall "masquerade"

  • El Router principal vera todo de el trafico generado por los clientes como saliente de la Rpi, permitinedo la conexion a internet
  • La Rpi va a recibir todo el trafico entrante, y va a sustituir la ip de vuelta, para mandársela al cliente que corresponda
   
Esto se configura haciendo lo siguietne:

Código: [Seleccionar]
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE   
Ahora guardamos las reglas del firewall para IPV4 e IPV6 para que sean cargadas en el booteo por el servicio netfilter-persistent

Código: [Seleccionar]
sudo netfilter-persistent save   
Estas reglas quedan guardadas en /etc/iptables. Si cambian algo, acuérdense de cambiarlo con el comando de arriba

CONFIGURAR DHCP Y DNS PARA LA RED WLAN0

Estos servicios son provistos por dnsmasq. La configuración default sirve como template de una posible configuración. A pesar de eso vamos a arrancar con un archivo en blanco..

Vamos a renombrar el archivo original guardarlo, y crear uno nuevo:

Código: [Seleccionar]
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
   
Y le agregamos lo suiguiente al archivo:

    interface=wlan0
    dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
                    # Pool de direcciones IP servidas via DHCP
    domain=wlan     # Local wireless DNS domain
    address=/gw.wlan/192.168.4.1
                    # Alias para el ruter
                   
La Rpi va a entregar las direcciones ip entre 192.168.4.2 y 192.168.4.20, con una duración de 24 horas. Es posible encontrar la Rpi con el nombre gw.wlan desde los clientes

En este archivo se pueden poner muchas más configuraciones. Les dejo el enlace: http://www.thekelleys.org.uk/dnsmasq/doc.html

ASEGURAR LA OPERACION INALAMBRICA:

Algunos paises regulan el uso de las banda de frecuencia de las telecomunicaciones para asegurarse que no haya interferencias.  Linux nos ayuda a cumplir con esas reglas, permitiendo a las aplicaciones ser configuradas con "el codigo wifi de paises en dos letras". El de argentina es AR.

En Raspbian las redes inalambricas estan deshabilitadas hasta que seteemos el codigo de un pais, que por lo general es lo que se hace cuando terminamos de instalar el sistema operativo. Si no lo tienen hehco,

Código: [Seleccionar]
sudo raspi-config
y buscan la opcion que corresponde.

PAra asegurarnos que el WiFi no está bloqueado en la RPI:
Código: [Seleccionar]
sudo rfkill unblock wlan
CONFIGURAR EL SOFTWARE DE PUNTO DE ACCESO

Creamos el arhcivo de configuracion hostapd en /etc/hostapd/hostapd.conf para agregar los parámetros de la redes

Código: [Seleccionar]
sudo nano /etc/hostapd/hostapd.conf   
Agregar la siguiente informacion

Código: [Seleccionar]
    country_code=AR
    interface=wlan0
    ssid=Nombre-de-la-red
    hw_mode=g
    channel=7
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=contraseña-de-la-red
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
   
En esta configuracion asumimos que vamos a usar el canal 7 , la red se va a llamar Nombre-de-la-red y la contraseña será: contraaseña-de-la-red.
Fiejnse que country_code=AR lo que configura para usar las bandas de frecuencias correctas de Argentina. PAra usar la banda de frecuencia de 5Ghz hay que cambiar hw_mode=g por hw_mode=a.

PONE A CORRER TU NUEVO ACCESS POINT

Ahora sólo queda resetear la rpi y verificar que el punto de acceso funciona correctamente.

Código: [Seleccionar]
sudo systemctl reboot   
Una vez que reseteamos, buscamos el la red con algun dispositivo que tenga wifi y tendría que estar disponible.
Una vez aeu nos conectamos a la red, si habilitamos ssh en la rpi podemos conectarnos con ssh pi@192.168.4.1 o ssh pi@gw.wlan.

Y eso fue todo queridos amigos.

Citar
NOTA: Luego de hacer esta configuracion note que el chip que trae integrado la rpi es lento. Para subsanar este inconveniente existen dos alternativas. Poner otro dongle wifi y crear el AP en esa interface; o salir por el puerte ethernet a algún router viejo que tengamos tirado.

Espero que les sirva!!!
Última modificación: 25 de Julio de 2020, 04:59:24 am por h4x0r

notmebug

  • Usuario
  • 63
  • Usuario

¡Buen tutorial! Pero a menos que quieras aislar deliberadamente lo que está conectado a la Pi del resto de la red, ¿hay algún motivo para crear un AP haciendo NAT en vez de puentearlo a la interfaz cableada? (O bien usar ARP-NAT/ebtables si la conexión con el router "madre" también es inalámbrica)

ars28

  • Usuario
  • 26
  • Usuario

No se me ocurre, en mi caso lo que quería hacer era extender la señal de la red principal creando una nueva red aislada. Y era medio complicado tirar un cable ethernet a través de la casa. Podría servirte si tenes que hacer algo así y pones la rpi en un lugar dificil de acceder.

notmebug

  • Usuario
  • 63
  • Usuario

Tirar un cable y hacer un AP cableado siempre es la mejor opción, en materia de rendimiento. Es una lástima cuando no se puede.

El tema con hacer doble NAT es que terminás con dos segmentos de red diferentes, entonces todo lo que trabaje con broadcasts no va a pasar entre ellos, y lo que esté conectado a la Pi no va a ser accesible desde afuera a menos que abras puertos. Pero para un uso normal de Internet esto no causa mayores problemas (y es más fácil de configurar).

MaD_MaX

  • Usuario
  • 104
  • Usuario

A mi me gusto tener el docker que es bastante mas simple de configuracion y lo podes clonar a otro RPI.
https://pifi.imti.co/