Configurar OpenWrt con NordVPN

¿NordVPN es compatible con OpenWrt?

Los informes indican que los routers con firmware OpenWRT son compatibles con las VPN como NordVPN. Sin embargo, ten en cuenta que el personal de NordVPN no ha probado la siguiente configuración, sino que ha sido compartida y probada por nuestros maravillosos clientes. En particular, NordVPN quiere dar las gracias a Unwind, miembro activo de la comunidad OpenWRT, por ayudarnos siempre a la hora de proporcionarnos instrucciones actualizadas de OpenWRT.

Instrucciones para GUI

Esta guía te explica cómo configurar una conexión NordVPN en routers con firmware OpenWrt a través de la interfaz web LuCI.

  1. Para acceder a la interfaz LuCI de tu router OpenWrt, introduce su dirección IP local en tu navegador de internet e inicia sesión. Por defecto, la dirección IP es 192.168.1.1 y el nombre de usuario es root.



    NOTA: El Sistema no establece una contraseña por defecto, por lo que puede dejar esta ranura vacía. Sin embargo, cuando te conectes, el sistema mostrará un mensaje pidiéndote que establezcas una.


    Para establecer una contraseña, haz clic en Sistema (system) > Administración (administration).
  2. Después de iniciar sesión, selecciona la pestaña Sistema (system) y elige Software.



  3. Pulsa el botón Actualizar listas (update lists), espera a que termine el proceso y luego haz clic en Rechazar (dismiss).
  4. Instala los siguientes paquetes escribiendo su nombre en el campo Filtro (filter) y haciendo clic en Instalar…
    1. openvpn-openssl
    2. ip-full
    3. luci-app-openvpn



  5. Haz clic en Guardar y aplicar (save & apply) y actualiza la página del router. Ahora deberías ver una nueva pestaña con el nombre VPN. Haz clic en ella y en el menú desplegable elige OpenVPN.
  6. Ahora necesitas descargar los archivos de configuración del cliente OpenVPN. A continuación, puedes conectarte a un servidor recomendado a través de tu NordAccount. Sigue los pasos a continuación para encontrar las credenciales del servicio para la configuración manual de la conexión:
      1. Inicia sesión en tu Nord Account, haz clic en NordVPN, y, en Configuración manual, haz clic en Credenciales del servicio (service credentials). Aquí encontrarás el nombre de usuario y contraseña necesarios para conectarte manualmente.



      2. Ahora debes descargar los archivos de configuración del cliente OpenVPN. Sigue los pasos a continuación para encontrar el mejor servidor para tu conexión:
        1. Inicia sesión en tu Nord Account y haz clic en NordVPN.



        2. Desplázate hasta Configuración avanzada (advanced settings) y haz clic en Configurar NordVPN manualmente (set up NordVPN manually).



        3. Selecciona la pestaña Servidores recomendados (Server recommendation). Nuestro algoritmo te recomendará el mejor servidor en función de tu ubicación.



        4. Si pulsas en Filtros avanzados (advanced filters) puedes personalizar los servidores recomendados al seleccionar el Tipo de servidor (server type) y el Protocolo de seguridad (security protocol).






           Si quieres seleccionar un servidor específico, sigue estos pasos:
          1. En Configurar NordVPN manualmente, selecciona Archivos de configuración de OpenVPN (OpenVPN configuration files).



          2. Usa la barra de búsqueda o desplázate hacia abajo para encontrar el servidor al que deseas conectarte. Para descargarlo, haz clic en Descargar UDP (download UDP) o Descargar TCP (download TCP).



            En esta guía usaremos como ejemplo el servidor us5104.nordvpn.com.
  7. En la sección Carga del archivo de configuración OVPN (OVPN configuration file upload), da un nombre a la conexión VPN en el campo Nombre de la instancia (instance name) (nosotros la hemos llamado «nordvpn_us»). A continuación, haz clic en el botón Seleccionar archivo (choose file), localiza el archivo del servidor descargado y haz clic en Cargar (upload).



  8. En la sección Instancias OpenVPN (OpenVPN instances), haz clic en el botón Editar (edit) situado junto a la instancia que acabas de crear.



  9. Introduce tus credenciales del servicio NordVPN, nombre de usuario y contraseña en el campo inferior en líneas separadas. nombre de usuario
    contraseña



    Encontrarás las credenciales del servicio NordVPN (el nombre de usuario y la contraseña) en el panel de control de tu Nord Account.
  10. Ahora, copia la ruta al archivo de credenciales que aparece justo encima del campo que contiene las credenciales y pégalo junto a la línea «auth-user-pass» en la sección Archivo de configuración (config file) anterior. Debería quedar así: auth-user-pass /etc/openvpn/nordvpn_us.auth


  11. Para conectarte al servidor VPN, haz clic en la casilla Habilitado (enabled) y luego en el botón Iniciar (start) junto a la instancia de NordVPN creada.



  12. Haz clic en el botón Guardar y aplicar (save & apply) en la parte inferior.
  13. En la parte superior del menú de navegación, sitúate sobre Sistema (system) y haz clic en Reiniciar (reboot). Se abrirá otra página. Haz clic en el botón Reiniciar (perform reboot) y, a continuación, deberás volver a iniciar sesión.
  14. Ve a la pestaña Red (network) en la parte superior de la página y elige Interfaces:
     
    1. Haz clic en Añadir nueva interfaz (add new interface).
    2. En la sección Nombre (name), escribe nordvpntun.
    3. Haz clic en Protocolo (protocol) y elige No gestionado (unmanaged).
    4. En el menú desplegable Interfaz (interface), introduce el nombre «tun0» en el campo inferior -- custom -- y pulsa la tecla Intro.



     
    
  15. Haz clic en Crear interfaz (create interface) y en Guardar (save).
  16. Elige la pestaña Red (network) en la parte superior y dirígete a la sección Firewall.
  17. Haz clic en Añadir (add) y lleva a cabo los siguientes ajustes:
    1. Nómbralo como «vpnfirewall».
    2. Configura la opción «Entrada (input)» como «Rechazar (reject)».
    3. Deja «Salida (output)» como «Aceptar (accept)» y «Reenviar (forward)» como «Rechazar (reject)».
    4. Marca la opción «Enmascaramiento (masquerading)».
    5. Marca la opción «Fijación de MSS (MSS clamping)».
    6. En el menú desplegable «Redes cubiertas (covered networks)», selecciona «nordvpntun».
    7. En el menú desplegable «Permitir el reenvío desde zonas de origen (allow forward from source zones)», elige «plan».
    8. Haz clic en el botón «Guardar (save)».



  18. En la sección Zonas (zones), busca la zona denominada lan y pulsa el botón Editar (edit).



     
  19. En el menú desplegable Permitir reenvío a zonas de destino (allow forward to destination zones) marca la entrada NordVPN.



     
  20. Vuelve a hacer clic en Red (network) en la parte superior de la página y, a continuación, elige DHCP y DNS en la lista desplegable.
  21. En la pestaña Ajustes generales (general settings), busca la opción Reenvío de DNS (DNS forwardings) e introduce allí las direcciones DNS de NordVPN. Estas son las direcciones: 103.86.96.100 y 103.86.99.100


     
  22. Ve a la pestaña Archivos de resolución y hosts (resolv and hosts files), marca la casilla Ignorar archivo de resolución (ignore resolve file) y haz clic en el botón Guardar y aplicar (save and apply).



     
  23. Vuelve a la pestaña VPN > OpenVPN.
  24. En la sección Instancias OpenVPN (OpenVPN instances), marca la opción Habilitar (enable) junto a la opción NordVPN de la lista y haz clic en el botón Guardar y aplicar (save and apply).



  25. Vuelve a hacer clic en el botón Iniciar (start) para conectarte al servidor VPN.

Instrucciones para CLI

Sigue esta guía si buscas un tutorial más avanzado. Para disfrutar de las ventajas que ofrece una VPN en OpenWrt, necesitas un router con firmware OpenWrt y un cliente OpenVPN habilitado. La página principal del firmware es https://openwrt.org/.

  1. En primer lugar, debes poder acceder a tu router mediante SSH usando su dirección IP LAN. Por defecto, la dirección IP está configurada a 192.168.1.1 y el nombre de usuario es root. Sin embargo, la dirección IP puede ser distinta si has cambiado alguno de los valores predeterminados.
  2. El router no tiene el paquete OpenVPN en la imagen de firmware por defecto. Para instalarlo, ejecuta los siguientes comandos:
    opkg update  
    opkg install openvpn-openssl  
    opkg install ip-full
    
    Además, puedes instalar el componente LuCI de la configuración de OpenVPN, aunque es opcional. Para ello, ejecuta este comando:
    opkg install luci-app-openvpn
    
  3. Después de instalar el paquete OpenVPN, ejecuta este comando si quieres que se inicie automáticamente cada vez que se inicie el router:
    /etc/init.d/openvpn enable
    
  4. A continuación, descarga los archivos de configuración del servidor. Sigue estos pasos:
    1. Inicia sesión en tu Nord Account y haz clic en NordVPN.



    2. Desplázate hasta Configuración avanzada (advanced settings) y haz clic en Configurar NordVPN manualmente (set up NordVPN manually).



    3. Selecciona la pestaña Servidores recomendados (server recommendation). Nuestro algoritmo te recomendará el mejor servidor en función de tu ubicación.



    4. Si pulsas en Filtros avanzados (advanced filters) puedes personalizar los servidores recomendados al seleccionar el Tipo de servidor (server type) y el Protocolo de seguridad (security protocol).






       Si quieres seleccionar un servidor específico, sigue estos pasos:
      1. En Configurar NordVPN manualmente, selecciona Archivos de configuración de OpenVPN (OpenVPN configuration files).



      2. Usa la barra de búsqueda o desplázate hacia abajo para encontrar el servidor al que deseas conectarte. Para descargarlo, haz clic en Descargar UDP (download UDP) o Descargar TCP (download TCP).



  5. Para esta guía, hemos utilizado el servidor uk2054.nordvpn.com, sin embargo, deberías utilizar el servidor que el sitio web te sugiera. Para descargar un archivo de servidor, selecciona el país donde quieres conectarte, haz clic en «Mostrar protocolos disponibles (show available protocols)», haz clic con el botón derecho del ratón en «Descargar configuración (download config)» para «OpenVPN TCP» u «OpenVPN UDP» y selecciona «Copiar dirección de enlace (copy link address)». Después, vuelve a tu sesión SSH y ejecuta el siguiente comando:
    wget -P /etc/openvpn https://downloads.nordcdn.com/configs/files/ovpn\_udp/servers/uk2054.nordvpn.com.udp.ovpn
    
    No obstante, usa el enlace que has copiado para el archivo específico de tu servidor. Este comando descargará el archivo de configuración al directorio /etc/openvpn para facilitar el acceso. También puedes descargar el archivo de configuración del servidor en un dispositivo diferente y transferirlo al router OpenWrt con métodos alternativos, como los protocolos SCP o SFTP. Para versiones anteriores de OpenWrt:
    Puedes descargar un archivo aquí https://downloads.nordcdn.com/configs/archives/certificates/servers.zip. En el archivo descargado encontrarás los ficheros correspondientes con extensiones .crt y .key. Los archivos son específicos para cada servidor VPN.
  6. La configuración de OpenVPN para NordVPN requiere que introduzcas tus credenciales del servicio de NordVPN (tu nombre de usuario y contraseña) cada vez que se inicia OpenVPN. Sin embargo, realizaremos algunos ajustes para que las credenciales se proporcionen de forma automática. En primer lugar, para facilitar el proceso, instalaremos el editor de texto nano ejecutando este comando:
    opkg install nano
    
    También puedes utilizar el editor de texto integrado vi. Para más información sobre editores de texto, consulta este artículo. Ahora abre el archivo de configuración del servidor descargado con el editor de texto nano. En nuestro caso, el comando sería:
    nano /etc/openvpn/uk2054.nordvpn.com.udp.ovpn
    
    A continuación, añade la palabra «secret» (sin comillas) a la cadena «auth-user-pass». La línea resultante debería ser:
    auth-user-pass secret
    
    Tienes que crear un nuevo archivo secreto para almacenar las credenciales del servicio NordVPN. Para ello, ejecuta el siguiente comando:
    nano /etc/openvpn/secret
    
    Creará el nuevo archivo y lo abrirá utilizando el editor de texto nano. En la primera línea del archivo, introduce tu nombre de usuario del servicio de NordVPN y, en la segunda, tu contraseña. Encontrarás las credenciales del servicio NordVPN (el nombre de usuario y la contraseña) en el panel de control de tu Nord Account.
  7. Configura OpenVPN con el archivo de configuración descargado de una de las dos maneras siguientes:
    1. Cambia la extensión del archivo de .ovpn a .conf, lo que permitirá a OpenVPN encontrarlo automáticamente por su extensión. Para ello puedes usar el comando mv:
      mv /etc/openvpn/uk2054.nordvpn.com.udp.ovpn /etc/openvpn/uk2054.nordvpn.com.udp.conf
      
    2. Especifica el nombre del archivo en «/etc/config/openvpn» utilizando los siguientes comandos «uci»:
      uci set openvpn.nordvpn=openvpn  
      uci set openvpn.nordvpn.enabled='1'  
      uci set openvpn.nordvpn.config='/etc/openvpn/uk2054.nordvpn.com.udp.ovpn'  
      uci commit openvpn
      
      Después de eso, el archivo «/etc/config/openvpn» debe contener las siguientes cadenas de comandos:
      config openvpn 'nordvpn'  
      option enabled '1'  
      option config '/etc/openvpn/uk2054.nordvpn.com.udp.ovpn'
      
      Compruébalo ejecutando este comando:
      tail /etc/config/openvpn
      
      También puedes cambiar la extensión del archivo de .ovpn a .conf y especificarlo en el archivo «/etc/config/openvpn». Sin embargo, en ese caso OpenVPN se iniciará con este archivo de configuración solo una vez.
  8. Crea una nueva interfaz de red ejecutando los siguientes comandos:
    uci set network.nordvpntun=interface  
    uci set network.nordvpntun.proto='none'  
    uci set network.nordvpntun.ifname='tun0'  
    uci commit network
    
    El archivo «/etc/config/network» contendrá ahora las siguientes cadenas añadidas:
    config interface 'nordvpntun'  
    option proto 'none'  
    option ifname 'tun0'
    
    Compruébalo ejecutando este comando:
     tail /etc/config/network 
    
  9. Ejecuta los siguientes comandos para crear una nueva zona de cortafuegos y añadir una regla de reenvío de LAN a la VPN:
    uci add firewall zone  
    uci set firewall.@zone\[-1\].name='vpnfirewall'  
    uci set firewall.@zone\[-1\].input='REJECT'  
    uci set firewall.@zone\[-1\].output='ACCEPT'  
    uci set firewall.@zone\[-1\].forward='REJECT'  
    uci set firewall.@zone\[-1\].masq='1'  
    uci set firewall.@zone\[-1\].mtu\_fix='1'  
    uci add\_list firewall.@zone\[-1\].network='nordvpntun'  
    uci add firewall forwarding  
    uci set firewall.@forwarding\[-1\].src='lan'  
    uci set firewall.@forwarding\[-1\].dest='vpnfirewall'  
    uci commit firewall
    
    Si se ha hecho correctamente, el archivo «/etc/config/firewall» debe contener las siguientes cadenas de comandos:
    config zone  
    option name 'vpnfirewall'  
    option input 'REJECT'  
    option output 'ACCEPT'  
    option forward 'REJECT'  
    option masq '1'  
    option mtu\_fix '1'  
    list network 'nordvpntun'  
    config forwarding  
    option src 'lan'  
    option dest 'vpnfirewall'
    
    Compruébalo ejecutando este comando:
    tail -13 /etc/config/firewall
    
    Verás las últimas 13 líneas, que deberían contener las cadenas mencionadas.
  10. Ahora tienes que configurar los servidores DNS. El enfoque más sencillo es usar el DNS NordVPN para la interfaz WAN del router. Ejecuta el siguiente comando para añadir el DNS NordVPN:```` uci set network.wan.peerdns='0'
    uci del network.wan.dns
    uci add_list network.wan.dns='103.86.96.100'
    uci add_list network.wan.dns='103.86.99.100'
    uci commit ```
    
    NOTA: Si _recibes el mensaje de error «__uci: Entry not found__» después de ejecutar el comando__uci del network.wan.dns__, puedes ignorarlo._  
    
    El archivo «/etc/config/network» debe contener la sección «wan» con las últimas tres cadenas de comandos:  
    ```
    config interface 'wan'  
    <...>  
    option peerdns '0'  
    list dns '103.86.96.100'  
    list dns '103.86.99.100'
    ```
      
    Puedes comprobarlo ejecutando el comando y encontrando la interfaz «wan» en la salida:  
    ```
    cat /etc/config/network 
    ```
    También puedes añadir diferentes direcciones DNS, como la de Google, ejecutando los siguientes comandos:  
    ```
    uci set network.wan.peerdns='0'  
    uci del network.wan.dns  
    uci add\_list network.wan.dns='8.8.8.8'  
    uci add\_list network.wan.dns='8.8.4.4'  
    uci commit
    ```
    Las cadenas de comandos deben ser similares a las anteriores.
    
 

(Opcional) Kill Switch para OpenWRT 22.02 o versiones anteriores (iptables)

Para evitar la fuga de tráfico en caso de que el túnel VPN se desconecte, sigue estos pasos:

  1. Abre el archivo del cortafuegos con un editor de texto:
    sudo nano /etc/firewall.user
    
  2. Añade el siguiente contenido:
    \# Este archivo se interpreta como un Shell Script.  
    \# Pon aquí tus reglas iptables personalizadas, y se ejecutarán con cada (re)inicio del cortafuegos  
    \# Las cadenas internas del cortafuegos uci se vacían y se vuelven a crear al recargar, por lo que  
    \# pon reglas personalizadas en las cadenas raíz, por ejemplo, «INPUT» o «FORWARD», o en las  
    \# cadenas de usuarios especiales, por ejemplo input\_wan\_rule o postrouting\_lan\_rule.  
      
    if (! ip a s tun0 up) && (! iptables -C forwarding\_rule -j REJECT); then  
      
    iptables -I forwarding\_rule -j REJECT  
      
    fi
    
  3. Crea un archivo llamado «99-prevent-leak» en la carpeta «/etc/hotplug.d/iface» ejecutando este comando:
    nano /etc/hotplug.d/iface/99-prevent-leak
    
  4. Añade el siguiente contenido a la secuencia de comandos:
    #!/bin/sh  
      
    if \[ "$ACTION" = ifup \] && (ip a s tun0 up) && (iptables -C forwarding\_rule -j REJECT); then  
      
    iptables -D forwarding\_rule -j REJECT  
      
    fi  
      
    if \[ "$ACTION" = ifdown \] && (! ip a s tun0 up) && (! iptables -C forwarding\_rule -j REJECT); then  
      
    iptables -I forwarding\_rule -j REJECT  
      
    fi
    

(Opcional) Kill Switch para OpenWRT 22.03 o versiones siguientes (nftables)

Sigue estos pasos para evitar fugas de tráfico si el túnel VPN no funciona.

  1. Edita el archivo de reglas personalizadas del cortafuegos:
    sudo nano /etc/firewall.user
    
  2. Escribe esta función:
    \# when tun0 interface is down and within nftables no chain "forwarding\_rule" exists, then do the following.  
    if (! ip a s tun0 up) && (! nft list chain inet fw4 forwarding\_rule; then  
    \# add new chain named forwarding\_rule  
       nft add chain inet fw4 forwarding\_rule  
    \# add rule within chain forward to jump to chain forwarding\_rule  
       nft add rule inet fw4 forward jump forwarding\_rule  
      
    \# add rule within chain forward\_rule to reject all traffic  
       nft add rule inet fw4 forwarding\_rule reject  
    fi
    
  3.  A continuación, tienes que crear un script hotplug para activar el interruptor de corte automáticamente:
    sudo nano /etc/hotplug.d/iface/99-prevent-leak
    
  4. Escribe el siguiente contenido en la secuencia de comandos:
    #!/bin/sh  
      
    \# if action ifup is triggered, interface tun0 is up and the nftables chain "forwarding\_rule" contains text "reject", then flush that chain in order to allow traffic.  
    if \[ "$ACTION" = ifup \] && (ip a s tun0 up) && (nft list chain inet fw4 forwarding\_rule | grep -q 'reject'); then  
    nft flush chain inet fw4 forwarding\_rule  
    fi  
      
      
    \# if action ifdown is triggered, interface tun0 is not up and the nftables chain "forwarding\_rule" does not contain text "reject", then add a rule to that chain in order to reject all traffic.  
    if \[ "$ACTION" = ifdown \] && (! ip a s tun0 up) && (! nft list chain inet fw4 forwarding\_rule | grep -q 'reject'); then  
    nft add rule inet fw4 forwarding\_rule reject  
    fi
    

Script de reconexión automática

En algunos casos, la conexión OpenVPN puede bloquearse con una salida de registro similar a «no se pudo resolver el host… (couldn’t resolve host…)». En este caso, el túnel VPN sí permanece, sin embargo, se pierde la conexión. Para crear una secuencia de comandos que vuelva a conectarse a él de forma automática, sigue estos pasos:

  1. Abre el archivo «/etc/rc.local» con un editor de texto:
    sudo nano /etc/rc.local
    
  2. Añade la siguiente línea:
    /etc/openvpn/reconnect.sh &
    
  3. Crea el archivo «reconnect.sh» en el directorio «/etc/openvpn» ejecutando este comando:
    sudo nano /etc/openvpn/reconnect.sh
    
  4. Introduce la siguiente secuencia en el archivo:
    #!/bin/sh  
      
    n=10  
      
    while sleep 50; do  
      
    t=$(ping -c $n 8.8.8.8 | grep -o -E '\[0-9\]+ packets r' | grep -o -E '\[0-9\]+')  
      
    if \[ "$t" -eq 0 \]; then  
      
    /etc/init.d/openvpn restart  
      
    fi  
      
    done
    

Estado de la conexión

Después de haber seguido estas instrucciones, el router debería conectarse con la conexión configurada. Para comprobar si se ha realizado con éxito, visita la página principal de NordVPN: el estado en la parte superior de la página debe mostrarse como «Protegido (protected)».

Si deseas desconectar la conexión VPN, haz clic en el botón Parar (stop) situado junto a la opción NordVPN en la sección VPN > OpenVPN > Instancias OpenVPN (OpenVPN instances) si has seguido los pasos de la interfaz gráfica de usuario (GUI). Sin embargo, si deseas desconectar la conexión VPN, ejecuta el siguiente comando:

service openvpn stop
¿Te ha resultado útil este artículo?

¿Sigues teniendo problemas?

  • Chat en tiempo real

  • Formulario de correo electrónico

La funcionalidad del chat se basa en las cookies. Al iniciar el chat, aceptas su uso. Más información en nuestra Política de cookies.