Router Xiaomi MiWiFi 3G

Enlaces

Configuración desde cero

  1. Instalar Luci:

    1
    2
    3
    4
    5
    # opkg update
    # opkg install luci
    # opkg install luci-ssl
    # /etc/init.d/uhttpd start
    # /etc/init.d/uhttpd enable
    
  2. Descarga de paquetes por HTTPS:

    1. Instalar:

      1
      2
      # opkg update
      # opkg install ca-certificates
      
    2. Editar el fichero /etc/opkg/distfeeds.conf y cambiar http por https.

  3. Crear usuario normal y permitirle usar sudo:

    1. Ejecutar:

      1
      2
      3
      4
      5
      6
      7
      8
      # opkg update
      # opkg install shadow-useradd
      # useradd miusuario
      # passwd miusuario
      # mkdir /home
      # mkdir /home/miusuario
      # chown miusuario:miusuario /home/miusuario
      # opkg install sudo
      
    2. Editar el fichero /etc/passwd y poner shell al usuario nuevo:

      1
      miusuario:x:1000:1000::/home/miusuario:/bin/ash
      
    3. Ejecutar el comando visudo y añadir la siguiente línea bajo la correspondiente a root:

      1
      miusuario ALL=(ALL) ALL
      
  4. Desactivar ping:

    1. En Luci ir a la ruta Network > Firewall
    2. Abrir la solapa Traffic Rules
    3. Desactivar las reglas (desmarcando el check) Allow-Ping, Allow-ICMPv6-Input y Allow-ICMPv6-Forward
    4. Pulsar el botón Save & Apply abajo a la derecha
  5. Bloquear la publicidad desde el fichero hosts:

    1. Iniciar sesión SSH.
    2. Hacer backup de fichero hosts:

      1
      $ sudo cp /etc/hosts /etc/hosts.bkp
      
    3. Editar crontab de root con comando sudo crontab -e y añadir la siguiente línea:

      1
      0 */12 * * * wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts; cat /etc/hosts.bkp >> /etc/hosts
      
    4. Hay varias configuraciones posibles para el fichero hosts descritas aquí.

Configuración de ProtonVPN

Siguiendo esta guía.

Antes de empezar es recomendable hacer un backup de la configuración del router por si es necesario volver a empezar.

  1. Instalación de paquetes (el comando siguiente instala además los siguientes paquetes dependientes kmod-tun liblzo zlib libopenssl):

    1
    $ sudo opkg install luci-app-openvpn openvpn-openssl
    
  2. Creamos un nuevo interface para lo que en Luci vamos a Network > Interfaces.

  3. Pulsamos el botón Add new interface....
  4. En el formulario que aparece rellenamos los siguientes campos:

    • Name of the new interface: openvpn
    • Protocol of the new interface: Unmanaged
    • Cover the following interface: Custom Interface: "tun0"
  5. Pulsar el botón Submit.

  6. Seleccionar la pestaña Advanced Settings.
  7. Marcar la opción Bring up on boot.
  8. Seleccionar la pestaña Firewall Settings.
  9. En el desplegable Create / Assign firewall-zone crear una zona con nombre vpn.
  10. Pulsar el botón Save & Apply.
  11. Ir a la sección Network > Firewall.
  12. Los siguientes cambios son muy sensibles, por lo que muestro un pantallazo del estado de las zonas antes de los cambios:

    firewall-zones

  13. En la zona wan cambiar Input y Forward a drop y desmarcar los checks Masquerading y MSS clamping.

  14. En la zona vpn cambiar Input y Forward a drop y marcar los checks Masquerading y MSS clamping.
  15. Pulsar el botón Save & Apply.
  16. Pulsar el botón Edit de la zona lan.
  17. En la sección Inter-Zone Forwarding abrir el desplegable Allow forward to destination zones y marcar la sección vpn y desmarcar wan.

    forward-to-destination

  18. Pulsar el botón Save & Apply

  19. Pantallazo de cómo deberían de quedar las zonas:

    firewall-zones

  20. Descargar el perfil .ovpn deseado de la sección "Downloads" de nuestro perfil en ProtonVPN seleccionando como plataforma Router y protocolo UDP. Vamos a suponer que el fichero se llama is-es-01.protonvpn.com.udp.ovpn.

  21. Editar el fichero y modificar la línea que contiene el parámetro auth-user-pass dejándola como sigue:

    1
    auth-user-pass '/etc/openvpn/protonvpn/auth'
    
  22. Transferir el fichero descargado al router y situarlo en la ruta /etc/openvpn/protonvpn (habrá que crear el directorio protonvpn).

  23. Ir a la sección "Account" de nuestro perfil en ProtonVPN y tomar nota de los valores de "OpenVPN/IKEv2 Username" y "OpenVPN/IKEv2 Password".
  24. Crear en el router el fichero /etc/openvpn/protonvpn/auth, editarlo y escribir en la primera línea el username anterior y en la segunda el password.
  25. Editar en el router el fichero /etc/config/openvpn y añadir las siguientes líneas:

    1
    2
    3
    config openvpn 'protonvpn'
        option config '/etc/openvpn/protonvpn/is-es-01.protonvpn.com.udp.ovpn'
        option enabled '1'
    
  26. Reiniciar el servicio openvpn en el router:

    1
    $ sudo /etc/init.d/openvpn restart
    
  27. Ir a Network > Interfaces > LAN y en el parámetro Use custom DNS servers dejar únicamente la IP 10.8.8.1 (en caso de utilizar OpenVPN por protocolo TCP usar 10.7.7.1 en su lugar).

  28. Pulsar el botón Save & Apply.

Para mantener acceso desde el exterior de la red, estudiar este artículo.

Actualización firmware

Siguiendo este artículo:

  1. Bajar el paquete pinchando uno de los enlaces siguientes según si se desea la versión de desarrollo o la estable de la página de soporte del router en OpenWRT:
    • Estable: Firmware OpenWrt Upgrade URL
    • Desarrollo: Firmware OpenWrt snapshot Upgrade URL
  2. En el interfaz web (Luci) acudir a la ruta System > Backup / Flash Firmware.
  3. En la sección Flash new firmware image pulsar el botón Examinar... y seleccionar el fichero .tar bajado en el punto anterior.
  4. Pulsar el botón Flash image....
  5. En la siguiente página confirmar el flasheo comprobando si se quiere los checksums.
  6. Cuando termine el proceso habremos perdido los paquetes adicionales. También los ajustes hechos al usuario adicional (como el directorio home) por lo que seguramente habrá que repasar la mayoría de los ajustes hechos durante la configuración desde cero.

Desactivación VPN

Para poder salir directamente a través de la conexión WAN sin atravesar el VPN:

  1. Apagar Raspis.
  2. Ir a Network > Interfaces y detener el interfaz OPENVPN pulsando el botón Stop:

    interfaces-stop

  3. Ir a Network > Interfaces > LAN y en el parámetro Use custom DNS servers poner las IPs de OpenDNS: 208.67.222.222 y 208.67.220.220.

  4. Ir a Network > Firewall y editar la zona lan para que haga forward a la zona wan y no a la vpn:

    forward-lan

  5. En el listado de zonas firewall activar Masquerading y MSS clamping en la zona wan de manera que quede así:

    firewall-zones

  6. Reiniciar router.

Para volver a utilizar el VPN

  1. Ir a Network > Interfaces y conectar el interfaz OPENVPN pulsando el botón Connect:

    interfaces-stop

  2. Ir a Network > Interfaces > LAN y en el parámetro Use custom DNS servers dejar únicamente la IP: 10.8.8.1.

  3. Ir a Network > Firewall y editar la zona lan para que haga forward a la zona vpn y no a la wan:

    forward-lan

  4. En el listado de zonas firewall desactivar Masquerading y MSS clamping en la zona wan de manera que quede así:

    firewall-zones

  5. Reiniciar router.

Cambio de perfil ProtonVPN

En el router hay instalados un par de perfiles (se descargan de aquí), los correspondientes a Suiza (ch) y a Islandia (is). Los perfiles están aquí:

edumoreno@OpenWrt:~$ cd /etc/openvpn/protonvpn
edumoreno@OpenWrt:/etc/openvpn/protonvpn$ ls -l
-rw-r--r--    1 root     root            24 Nov 24  2018 auth
-rw-r--r--    1 edumoren edumoren      4479 Jan 25 15:16 ch-es-01.protonvpn.com.udp.ovpn
-rw-r--r--    1 root     root          4609 Nov 24  2018 is-es-01.protonvpn.com.udp.ovpn

Y se configuran al principio del fichero /etc/config/openvpn:

config openvpn 'protonvpn'
        option config '/etc/openvpn/protonvpn/ch-es-01.protonvpn.com.udp.ovpn'
        option enabled '1'