El router que instalan los ISP suele dejar un poco que desear. Bien porque no da suficiente cobertura WiFi, o le faltan características o está capado. Por ejemplo el que me han instalado a mí no permite cambiar las DNS.

Por suerte tiene remedio, puedes encontrar routers mucho mejores en el mercado, incluso a precios muy económicos. Algunos con soporte para OpenWRT, un sistema operativo especialmente diseñado para routers que además es Software Libre.

Puedes poner el router OpenWRT junto al que te ha instalado tu operador o puedes incluso reemplazarlo, como he hecho yo. En mi caso el proceso ha sido sencillo ya que Simyo instala router y ONT por separado.

A continuación os explico cómo usar un router Xiaomi AX3000T, instalarle OpenWRT y configurar la VLAN para conectarlo directamente a la ONT y así deshacerme del router del ISP.

Instalar OpenWRT en Xiaomi AX3000T

El AX3000T ronda los 30€ y está soportado por OpenWRT así que es una buena opción. La versión que envía la tienda de Xiaomi España está soportada, al menos al tiempo de escribir estas líneas.

Voy a detallar los pasos que he seguido, no obstante aconsejo revisar detenidamente la guía oficial de OpenWRT en el Xiaomi AX3000T por si hay cambios, especialmente si lees esto meses después de publicarlo.

Vamos a hacer dos cosas, primero conseguir acceso SSH al router y segundo flashear el nuevo firmware es decir OpenWRT.

Conseguir acceso SSH

Para conseguir acceso SSH se aprovecha una vulnerabilidad en el firmware de Xiaomi. Afecta a varias versiones pero por si acaso mejor instalar la v1.0.49 (es probable que tu router venga con una versión más reciente que quizá ya no sea vulnerable y por tanto no nos sirva).
Descarga el firmware oficial de Xiaomi v1.0.49 (si el link no funciona revisa la guía oficial). Y para instalarlo simplemente entra en el router (192.168.1.1 si te conectas por cable directamente al router) y desde la interfaz encontrarás la forma de subir el archivo, no tiene misterio.

Una vez metido el firmware vulnerable copiamos este script en un archivo por ejemplo xiaomi.sh.
Revisa que la IP sea correcta en la línea 17.

#!/bin/sh

# Please read the docs: https://openwrt.org/inbox/toh/xiaomi/ax3000t


if [ $# -ne 2 ]; then
cat <<EOF
Usage: $0 [misystem | xqsystem] [stok]
e.g. $0 xqsystem e6ea114ba2cddb0c70fbbc417bb2706c
Copy the stok-string from a browser's URL-line, while logged to the router
EOF
exit 1
fi

[ -z "$2" ] && echo "error: bad stok" && exit 1

url="http://192.168.1.1/cgi-bin/luci/;stok=${2}/api"

case "$1" in
    misystem)
        url="$url/misystem/arn_switch"
        pre="open=1&model=1&level="
        suf=""
        ;;
    xqsystem)
        url="$url/xqsystem/start_binding"
        pre="uid=1234&key=1234'"
        suf="'"
        ;;
    *)
        echo "error: unknown api" && exit 1
        ;;
esac

curl -X POST "$url" -d "${pre}%0Anvram%20set%20ssh_en%3D1%0A${suf}"
sleep 1
curl -X POST "$url" -d "${pre}%0Anvram%20commit%0A${suf}"
sleep 1
curl -X POST "$url" -d "${pre}%0Ased%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%22debug%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%0A${suf}"
sleep 1
curl -X POST "$url" -d "${pre}%0A%2Fetc%2Finit.d%2Fdropbear%20start%0A${suf}"
sleep 1
curl -X POST "$url" -d "${pre}%0Apasswd%20-d%20root%0A${suf}"

Y para ejecutarlo vamos a necesitar una cosa más, un token. Entra en la interfaz del router, 192.168.1.1, con el usuario y contraseña que hayas puesto y una vez dentro busca en la URL un trozo tal que así /luci/;stok=1231231231231213123/web/. Eso que pone stok=123.... es el token que necesitamos, cópialo y ya podemos ejecutar el script:

./xiaomi.sh xqsystem 1231231231231213123

Tarda un par de segundos y listo, ahora ya puedes acceder por SSH:

ssh -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -v root@192.168.1.1

Flashear OpenWRT

Tenemos que descargar dos archivos desde el OpenWRT Firmware Selector para Xiaomi AX3000T:

  1. Factory Image, con la que haremos la instalación inicial
  2. Sysupgrade, que se usa después para actualizar a la última versión

Con los dos archivos listos podemos conectarnos al router por cable y empezar el proceso. De nuevo te recomiendo contrastar estos pasos con la guía oficial, por si acaso hay discrepancias.

  1. Copiamos la Factory Image al router:
    scp -O -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa ./openwrt-24.10.0-mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi root@192.168.1.1:/tmp
  2. Entramos por SSH al router:
    ssh -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -v root@192.168.1.1
  3. Instalamos el firmware:
    ubiformat /dev/mtd8 -y -f /tmp/openwrt-24.10.0-mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi
  4. Aplicamos algunas configuraciones y reiniciamos el router:
    nvram set boot_wait=on
    nvram set uart_en=1
    nvram set flag_boot_rootfs=0
    nvram set flag_last_success=0
    nvram set flag_boot_success=1
    nvram set flag_try_sys1_failed=0
    nvram set flag_try_sys2_failed=0
    nvram commit
    reboot
  5. Desconectamos cualquier otro cable del router que no sea el que va a nuestro ordenador. Importante usar uno de los puertos del medio, para evitar usar el puerto WAN que es uno de los extremos.
  6. Copiamos la System Upgrade Image al router:
    scp -O -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa ./openwrt-24.10.0-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin root@192.168.1.1:/tmp
  7. Entramos por SSH una vez más:
    ssh -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -v root@192.168.1.1
  8. Y hacemos el sysupgrade:
    sysupgrade -n /tmp/openwrt-24.10.0-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin
  9. Listo, entramos en 192.168.1.1 y le damos a login, sin contraseña, por defecto está vacía y te pedirá que pongas una.

Ya tienes OpenWRT en tu router, actualizado a la última versión.

Configurar VLAN en OpenWRT

En mi caso voy a reemplazar el router de la operadora por el mío con OpenWRT, pero voy a dejar la ONT. Si no tienes una ONT por separado tendrás que poner el router en modo puente (bridge), también llamado «modo ONT». Puedes buscar, según tu router, cómo hacer esto.

Solucionado el tema de la ONT tenemos un pequeño problema que solventar antes de conectar nuestro router al ONT (o equivalente): la VLAN.

Por simplificar, resulta que por el cable ethernet que sale de la ONT circulan distintos tipos de paquetes, dependiendo si son para el servicio de TV, para el teléfono fijo o para el internet. Incluso aunque no hayas contratado nada de eso.
Así que necesitamos decirle a nuestro router cómo filtrar esos paquetes para quedarse con los que interesan, los de internet. Básicamente necesitamos el ID de esos paquetes, un simple número. A esto se le llama VLAN ID.

En BandaAncha han recopilado esos IDs, dependiendo del operador y de si usan su fibra o fibra indirecta (NEBA). Consulta la tabla para obtener tu ID.
En mi caso, siendo Simyo una marca de Orange, y con fibra indirecta el numerito mágico que necesito es el 20.

Añadir la VLAN

Entramos al router y vamos a Network -> Interfaces y dentro seleccionamos la pestaña Devices. Hacemos click en «Add device configuration…», especificamos que se trata de una VLAN 802.1q, para el puerto wan y ponemos el ID, en mi caso el 20.

Aplicar la VLAN al puerto WAN

No sé por qué si en el anterior paso ya especificamos como Base device la wan ahora hay que hacer esto pero funciona así que al lío.

Entramos en Network -> Interfaces otra vez, ahora seleccionamos la pestaña Interfaces y le damos a Edit para la interfaz wan.

Cambiamos el Device y seleccionamos la wan.20 que creamos hace un momento.

Guardamos y aplicamos cambios.

Asignación de IP

Si la IP no se asigna automáticamente (revisa la tabla de BandaAncha), puede que necesites el usuario y contraseña para configurar PPPoE también. No es mi caso, pero que sepas que el ISP está obligado a proporcionarte esos datos si los pides.

En la pantalla anterior donde configuramos la wan.20 justo encima está el protocolo, en mi caso DHCP. Si en tu caso necesitas usar PPPoE ahí es donde creo que deberías cambiarlo. No sabría darte las instrucciones exactas pero tampoco debería ser demasiado complicado.

Conectarse a la ONT

Ya podemos conectar el ethernet de la ONT a nuestro router.
Importante: en el caso del Xiaomi AX3000T el puerto WAN es el que está junto a la entrada de corriente, es decir mirando al router por detrás el de más a la izquierda.

If you think my content is worth it you can Buy me a Coffee at ko-fi.com Buy me a Ko-fi