Admin Libre - Administración de sistemas y redes

Repetidor wifi con OpenWrt sin doble NAT
Por Francisco Gaitán el 1 de Abril de 2022

Con esta configuración los clientes que se conecten al router repetidor seguirán en la misma red del router wifi principal, evitando doble NAT. Esta configuración hace un puente de red (bridge) entre la conexión wifi ya existente, una nueva red wifi y los puertos LAN del nuevo router.

Parto del documento oficial Wi-Fi extender / repeater / bridge configuration y usaré un TP-Link TL-WR1043ND como router wifi principal configurado como punto de acceso tonto conectado a un router OpenBSD como uplink proveedor de DHCP y DNS y un Huawei HG556a como repetidor, ambos con la última versión estable de OpenWrt (21.02.2). Todas estas configuraciones se realizan en el router repetidor; en el router wifi principal no hay que instalar ni tocar nada.

Actualización: El tutorial ha sido probado con éxito en la versión 22.03.5.

Parto de esta configuración

  • Router wifi ya configurado como punto de acceso tonto en la red 192.168.2.0/24 con IP 192.168.2.1 y puerta de enlace 192.168.2.2
  • El nuevo router que hará de repetidor con OpenWrt recién instalado con IP 192.168.1.1 al que se cambiará la IP a 192.168.2.3 posteriormente
  • Un ordenador con tarjeta de red e IP 192.168.1.100 conectado por cable al nuevo router para la configuración inicial

Qué hacer si necesitas volver a la configuración inicial

Configurar OpenWrt puede ser bastante lioso y es normal acabar sin conectividad y sin poder acceder al router cuando se comete un error de configuración, lo cual no es ningún problema ya que OpenWrt tiene un modo de recuperación sin necesidad de volver a flashear el firmware. La forma en la que sí lo puedes averiar de forma que requiera grabar una nueva imagen accediendo al puerto serie es tocando las particiones o grabando una imagen incorrecta.

Esto se explica en la documentación Failsafe mode, factory reset, and recovery mode. El siguiente procedimiento devuelve a OpenWrt al estado que estaba justo después de flashearlo:

  1. Apago el router y vuelvo a encenderlo desde el botón de encendido
  2. Pulso continuamente el botón WPS hasta que vea la luz parpadear muy rápido
  3. Con el ordenador con IP 192.168.1.100 hago ssh root@192.168.1.1
  4. Una vez dentro ejecuto # firstboot && reboot y respondo con la 'y' para aceptar.

Instalación del software necesario

Accediendo por SSH al router (puedes usar OpenSSH o Putty) instala estos dos paquetes:

# opkg update
# opkg install relayd luci-proto-relay

Para esto necesitas conectividad en el router.

Método más sencillo de dar conectividad

Voy a Network / Wireless y pulso Scan. Me conecto a la red wifi primaria poniendo la contraseña y sin cambiar nada más. Una vez estoy conectado instalo los paquetes del paso anterior. Si no los puedo descargar y da el error wget returned 5 significa que la fecha es incorrecta, en ese caso la cambio mediante date, por ejemplo, para el día 19 de Septiembre de 2023 a las 12:45AM sería:

# rdate 202309191245

Una vez instalados los paquetes voy de nuevo a Network / Wireless y elimino la conexión que he creado. Esto es de vital importancia para poder continuar, ya que si no al cambiar la IP de la LAN en el siguiente paso habrá un conflicto de IPs.

Método alternativo haciendo que el ordenador al que está conectado haga de router

El ordenador desde el que hago la configuración con IP 192.168.1.100 tiene conectividad a internet y hará NAT como si fuera un router; en OpenBSD esto se hace con esta línea en Packet Filter:

match out on egress inet from !(egress:network) to any nat-to (egress:0)

Activo reenvío de IP:

# sysctl net.inet.ip.forwarding=1
Y en el OpenWrt lo pongo como puerta de enlace:

# route add default gw 192.168.1.100

Y para DNS añado el servidor de DNS (el servidor DNS de la red o uno público) al archivo /etc/resolv.conf

En caso de que, teniendo conectividad, no se puedan descargar los archivos desde el router dando el error wget returned 5 esto se debe a que la hora del sistema es errónea, en este caso se cambia mediante date:

# rdate 202309191245

Configuración de la interfaz LAN

Cambiaré la dirección de la red LAN a 192.168.2.3 a través del menú Network / Interfaces pulsando Edit para la interfaz LAN y además:

  • Desactivo DCHP para esta interfaz a través del menú DHCP Server / General Setup activando la opción Disable DHCP for this interface.
  • En General settings pongo como IPv4 gateway la dirección 192.168.2.2.
  • En Advanced settings para Use custom DNS servers pongo el servidor DNS de mi router principal que es 192.168.2.2 o uno público.

Al salvar y guardar le doy a que mantenga los cambios. El router estará ahora en la red 192.168.2.0/24 por lo que para acceder habrá que cambiar la IP del ordenador que hay conectado por cable a una IP de la misma red que el router, por ejemplo, 192.168.2.100.

Configuración de la interfaz WWAN

Voy a Network / Wireless y pulso Scan. Cuando aparece la red a la que quiero conectarme dejo el campo wwan seleccionado tal y como está, introduzco la contraseña del wifi, selecciono 'lan' en Firewall zone y guardo.

Ten en cuenta que para la conexión en modo cliente a la wifi principal deben coincidir los valores Mode (N o Legacy para wifi G) y Width para el campo Operating frequency.

Configuración del puente entre LAN y WWAN

Voy a Network / Interfaces y añado una nueva interfaz de nombre repeater_bridge y protocolo Relay bridge. En la página de configuración de esta interfaz selecciono tanto lan como wwan en Relay between networks:

Como crear un puente entre LAN y WWAN en el router repetidor OpenWrt

Ahora voy a la sección Firewall settings y elijo lan:, wwan::

Configuración de firewall en el puente entre lan y wwan del router repetidor OpenWrt

Ahora salvando y aplicando ya debe de estar listo. Según la documentación oficial, en algunos casos es posible que sea necesario reiniciar.

Configuración del nuevo punto de acceso

Ya tan sólo queda configurar un nuevo punto de acceso de la forma habitual desde Network / Wireless en modo Master y los clientes que se conecten a esta nueva red obtendrán su IP mediante DHCP del servidor principal.

Para terminar la instalación desactivo el login por contraseña para OpenSSH y paro y deshabilito los servicios odhcpd, uhttpd y dnsmasq tal y como explico en el tutorial Punto de acceso tonto con OpenWrt.

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org