Raspberry Pi como Repetidor Wifi

Con Ethernet bridge y OpenVPN opcionales

En esta guía explico cómo utilizar una Raspberry Pi como repetidor Wifi utilizando sólo la interfaz integrada. Además, compartiremos la red mediante Ethernet y nos conectaremos a nuestra VPN.

65

Seguimos con la configuración de nuestra red privada virtual  con Raspberry Pi. Si recordáis, en un artículo anterior hablé de sobre cómo convertir una Raspberry Pi 2B en un servidor OpenVPN con Pi-Hole cómo servidor DNS. En esta ocasión, vamos a utilizar nuestra Raspberry Pi como repetidor wifi utilizando solamente el adaptador integrado. Además, y opcionalmente, crearemos un bridge entre este punto de acceso y la interfaz eth0., es decir, algo como esto:

Raspberry pi punto de acceso y bridge ethernet

Así que, sin más dilación, comencemos.

Configurando Raspberry Pi como repetidor Wifi

Para esta configuración se asume lo siguiente:

  • Tenemos una Raspberry Pi 3B
  • Con Raspbian Strectch instalado
  • Y la configuración inicial hecha (Acceso a internet, locales, etc..)

En primer lugar, y antes de empezar, actualizaremos el SO:

1. Cambiando de networking a systemd-networkd

En primer lugar desactivaremos el sistema de red por defecto y pasaremos a usar systemd-networkd. Este servicio, pensado para redes virtuales nos permitirá crear interfaces virtuales, bridges, etc… sin software adicional.

Además, nos permitirá controlar el orden de arranque de interfaces y servicios, que, en esta configuración, es crítico. Debe ser como sigue:

  1. Crear la interfaz virtual para el punto de acceso
  2. Iniciar el daemon hostapd del punto de acceso
  3. Iniciar wpa_supplicant para la conexión wifi en wlan0
  4. Iniciar openVPN para establecer el tunel tun0

Para hacerlo, en una consola con privilegios elevados, sudo -sE ,introducimos los siguientes comandos:

Al crear el archivo journal veremos algunas adevertencias en la consola. Podemos ignorarlas puesto que no son importantes.

2. Configuración Hostapd para punto de acceso

Para confiugrar el punto de acceso editamos el archivo hostapd.conf,  nano /etc/hostapd/hostapd.conf  y añadimos lo siguiente:

Modificaremos los ssid , country_code  y wpa_passphrase  según nuestras preferencias.  Es importante además, establecer el channel al canal que tendrá la wifi a la que nos conectaremos en wlan0.

A continuación, editaremos el archivo  nano /etc/default/hostapd  y modifcaremos las siguientes líneas:

La línea Should-Start  ha de tener dos almohadillas (##) delante. Además, indicaremos dónde está el archivo de configuración de hostapd.

Finalmente, añadiremos la interfaz del punto de acceso, ap0, al hostapd.service. Para ello ejecutamos el comando  systemctl edit hostapd.service  y en el editor introducimos lo siguiente:

3. Configuración de wpa_supplicant para la conexión Wifi

Para ello abriremos un editor nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf  y, configuramos la interfaz.

NOTA: si ya teníamos configurado el wpa_supplicant en  /etc/wpa_supplicant/wpa_supplicant.conf podemos, simplemente, copiar ese archivo.

Una vez creado el archivo, le damos los permisos pertinentes. A continuación desactivamos wpa_supplicant par proceder a reactivarlo en la interfaz wlan0:

Una vez hecho extendemos el servicio wpa_supplicant,enlazándolo al servicio hostapd. Ademas, haremos masquerading en dicha interfaz.

Ejecutamos systemctl edit wpa_supplicant@wlan0.service  y en el editor que se abrirá ponemos:

3.1 Configurando las interfaz wlan0

Configuramos la interfaz wlan0 creando el siguiente archivo:  nano /etc/systemd/network/08-wlan0.network :

3.2 Configurando Raspberry Pi como repetidor wifi

En caso de que queráis configurar también un bridge en eth0 omitid este paso y continuad
Si simplemente queremos que nuestra Raspberry Pi actúe cómo repetidor Wifi, crearemos el siguiente archivo:   sudo /etc/systemd/network/12-ap0.network

Reiniciamos la Raspberry Pi y ya la tendríamos funcionando cómo repetidor wifi.

Configurando el bridge ap0-eth0

Si habéis llegado hasta aquí es que queréis que vuestra Raspberry se conecte a un punto de acceso mediante la interfaz wlan0 y que “comparta” esa conexión en las interfaces ap0 y eth0 en la misma red.

Pues vamos a ello. Al igual que antes, comenzamos elevando privilegios con sudo -sE .

4. Configurar hostapd para bridge

Este paso es muy sencillo. Simplemente añadimos la línea  bridge=br0  al final del archivo  /etc/hostapd/hostapd.conf  creado anteriormente con el siguiente comando:

5. Configurar wpa_supplicant para bridge

Vamos a extender el servicio wpa_supplicant,  systemctl edit wpa_supplicant@wlan0.service , que creamos anteriormente para que quede como se ve a continuación:

Como se puede obserbar, requerimos que el punto de acceso está activado antes de iniciar el servicio hostapd. Este es el orden requerido, cómo hemos visto anteriormente.

6. Servicio del punto de acceso en la interfaz virtual

En el punto anterior se hace referencia al servicio ap-bring-up.service, pasaremos a crearlo con  systemctl --force edit ap-bring-up.service :

Si no se consigue establecer el punto de acceso, estableced el parámetro --timeout  a un valor más alto.

7. Configurando las interfaces estáticas br0 y eth0

Por último pasamos a crear la interfaz bridge br0. Crearemos también la redeth0 y la añadiremos al bridge. No es necesario crear la interfaz ap0 puesto que se crea automáticamente y se vincula al bridge mediante hostapd.

Creamos la interfaz br0 con el comando  nano /etc/systemd/network/02-br0.netdev :

Configuramos la red eth0 con  nano /etc/systemd/network/04-eth0.network :

Por último, configuramos la red br0 mediante el comando  /etc/systemd/network/16-br0_up.network :

Reiniciamos y ya tenemos nuestra Raspberry Pi como punto de acceso para compartir una conexión wifi con sólo el adaptador integrado. Además, esta conexión se comparte también mediante Ethernet gracias al bridge que hemos creado.

Conexión a servidor OpenVPN

Por último, vamos a conectarnos a nuestro servidor VPN mediante OpenVPN, de este modo, estableceríamos un tunel privado entre la Wifi a la que nos conectemos y el servidor OpenVPN que hayamos configurado.

Raspberry pi como repetidor wifi con bridge eth0 y openVPN

Comenzamos instalando OpenVPN

8. Configuración de la conexión

La configuración es de lo mas sencilla. Comenzamos obteniendo un archivo .ovpn con PiVPN cómo se explicó en el artículo anterior.  Una vez lo tengamos, lo copiamos en la carpeta  /etc/openvpn  y lo renombramos:

En caso de que hayamos establecido una contraseña para la clave privada deberemos crear un archivo  /etc/openvpn/XXXXX.pass en el que escribiremos la contraseña en una sola línea. Además, editaremos el archivo de configuración nano /etc/openvpn/XXXXX.conf  para añadir lo siguiente antes de la definición de certificados:

9. Conexión automática al arracar

Para que la conexión a nuestra VPN se establezca automáticamente al arrancar la Raspberry Pi necesitamos descomentar la siguiente línea en /etc/default/openvpn :

Está opción intentará establecer una conexión por cada archivo .conf en /etc/openvpn .

10. Redirigiendo el tráfico a través de la VPN

Para redirigir el tráfico a través de nuestra VPN (cuando esté disponible) vamos a extender el servicio openVPN del siguiente modo systemctl edit openvpn.service :

 

Problemas encontrados

Uno de los problemas con esta configuración, Raspberry pi como repetidor Wifi utilizando sólo la interfaz integrada, es que el comportamiento de systemd.networkd con un AP virtual tiene ciertos errores. El principal es que no va a propagar los servidores DNS a los clientes conectados mediante DHCP.

Si utilizamos OpenVPN para la conexión esto no supone un problema puesto que la resolución DNS se hará en el servidor VPN al final del tunel. Sin embargo, si sólo utilizamos el punto de acceso podemos encontrarnos con conexión sin internet al no tener servidor DNS para resolver los nombres.

Si no, es necesario sustituir el servidor DHCP integrado por dnsmasq. Para ello comenzamos instalando el susodicho paquete y una vez instalado, detenemos el servicio.

A continuación, lo configuraremos creando el siguiente archivo de configuración  nano /etc/dnsmasq.conf y añadiendo:

Debemos desactivar tambien resolvconf, puesto que usamos systemd-resolved para obtener los servidores DNS. Para ello modificamos la siguiente línea (quitando el comentario):  nano /etc/default/dnsmasq

Por último, comentaremos la línea  DHCPServer=yes  en el archivo  /etc/systemd/network/16-br0_up.network

Ahora sólo queda iniciar de nuevo el servicio  systemctl start dnsmasq que a partir de ahora se encargá de repatir las IPs.

Dicho esto ponemos fin a esta guía. Espero que os haya servido de ayuda, y recordad que no está escrita en piedra y puede no funcionar para vosotros. Sea cómo sea creo que os servirá como punto de partida para vuestras propias configuraciones.

Fuente Stackexchange 1 Stackexchange 2 Stackexchange 3
También podría gustarte
Comentarios

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More