El Covid-19 ha obligado a muchos trabajadores a teletrabajar desde sus hogares. Las grandes empresas disponen de sofisticados firewalls y servidores de acceso que permiten el acceso remoto seguro y encriptado para sus trabajadores. En este artículo explicamos cómo configurar un RUTX10 a modo de servidor VPN para que tus trabajadores puedan acceder de forma segura a tu oficina.
Requisitos
Para poder disponer de un servidor VPN en nuestra oficina necesitamos que el router de banda ancha que nos da la conexión a Internet disponga de una IP pública y accesible. Puede ser fija o dinámica en cuyo caso necesitaremos configurar el cliente DDNS en el router RUTX10 o bien en el router de banda ancha para actualizar la IP pública con un nombre de dominio. Para saber cómo configurar el servicio DDNS en los routers Teltonika puedes ver este artículo.
Algunos operadores como Movistar (también O2) ofrecen este servicio de forma gratuita. Otros lo ofrecen pagando un importe mensual adicional.
Topología de la conexión VPN
En este artículo pretendemos configurar una VPN con protocolo OpenVPN en modo bridged o TAP, es decir, que tanto los clientes remotos como el servidor VPN como todos los ordenadores y dispositivos de red que estén conectados detrás de él pertenezcan a una misma LAN o rango de direccionamiento. En una palabra, queremos que el usuario remoto esté conectado directamente a la LAN de su oficina.
Cambios en el router de banda ancha
Para ello tendremos que hacer unos pequeños cambios en el router de banda ancha de nuestra oficina. Por ejemplo, si el router está en la dirección 192.168.1.1 y tiene habilitado un rango de direcciones DHCP, tenemos que traspasar este rango a la LAN del RUTX10. Para ello cambiaremos, por ejemplo, la dirección LAN del router de banda ancha a la 192.168.0.1 y luego abriremos el puerto UDP 1194 a la dirección que luego asignaremos a la WAN del RUTX10, por ejemplo, la 192.168.0.2.
El RUTX10 lo configuraremos con la LAN en la 192.168.1.1 (ya es el valor por defecto) y podemos mantener el rango de DHCP que teníamos en el router de banda ancha para no tener que hacer ningún cambio de direccionamiento en los dispositivos de red de la oficina. Si tenemos dispositivos WiFi también podemos deshabilitar el WiFi de nuestro router de banda ancha y configurar el mismo SSID, método de encriptación y password en el RUTX10 para evitar tener que volver a configurar estos dispositivos.
También tendremos que configurar el puerto WAN del RUTX10 con IP estática en la 192.168.0.2 y como servidor DNS podemos dejar el 192.168.0.1 si el router de banda ancha hace DNS relay o bien fijarlo manualmente, por ejemplo, al DNS de Google en 8.8.8.8.
Generación de certificados y claves
En OpenVNP si queremos poder conectar más de un cliente simultáneamente al servidor VPN no podemos usar una clave estática y tenemos que usar certificados como método de autenticación. En este link de la wiki de Teltonika se explica cómo generar estos certificados a partir de la instalación del paquete EasyRSA de OpenVPN en un ordenador bajo Windows. Una vez creados los certificados, tendremos que cargar el del servidor en el RUTX10 y el de los clientes en cada uno de los clientes que se vayan a conectar a la VPN.
IMPORTANTE: si repetimos desde el inicio el proceso de generación de certificados, por ejemplo para generar un nuevo cliente VPN, estos certificados se generarán con una clave diferente a la original y no serán compatibles con los anteriores. Hemos de realizar únicamente el último paso (./easyrsa build-client-full Client1 nopass). De cara a evitar posibles problemas recomendamos cuando generemos por primera ver las claves y certificados del servidor, crear certificados de cliente de sobras para poder utilizarlos en el futuro.
Configuración del servidor OpenVPN en el RUTX10
Una vez generados todos los certificados y claves podemos configurar el servidor VPN en el RUTX10 (recordemos haber abierto antes los puertos en el router de banda ancha)
Para ello iremos al menú Services – VPN y crearemos un perfil con el rol de Server. Le podemos dar el nombre que queramos. A continuación pinchamos en Edit y empezamos a configurarlo
- TUN/TAP: escogeremos TAP para hacer una red de nivel 2 y simplificar el acceso entre clientes remotos y dispositivos de red en la oficina
- Protocol: seleccionaremos UDP aunque también podemos escoger TCP.
- Port: por defecto selecciona el 1194 que es el puerto estándar. Si queremos para evitar posibles ataques a este puerto podemos escoger otro cualquier libre (recordemos que tenemos que abrir este puerto en UDP o TCP según el parámetro anterior en nuestro router de banda ancha)
- LZO: es un tipo de compresión. Podemos activarlo o no teniendo en cuenta que lo tenemos que configurar igual en los clientes
- Authentication: seleccionaremos TLS para autenticar a los usuarios a través de los certificados clientes generados anteriormente
- Encryption: recomendamos AES-256-CBC 256 aunque podemos usar cualquier otro. Como en el caso anterior tendrá que coincidir con el configurado en los clientes
- TLS cipher: dejar el All para admitir todos los cifrados
- Client to client: si lo marcamos en ON permite la conectividad entre clientes de la VPN a través del servidor. Si no es necesario por motivos de seguridad se recomienda dejarlo en OFF
- Keep alive: timeout entre paquetes keep alive para mantener viva la conexión VPN. Dejar a los valores por defecto 10 120
- Push option: dejar en blanco para una conexión TAP
- Allow duplicate certificates: si se pone en ON permite usar los mismos certificados en múltiples clientes. En este caso los clientes de han de diferenciar a través de un parámetro adicional como un password. En nuestro ejemplo lo dejaremos en OFF y cada cliente se conectará a través de unos certificados diferentes.
- Authentication algorithm: dejamos en SAH1
- Additional HMAC authentication: permite crear una clave adicional para encriptación. En nuestro ejemplo no la usaremos para simplificar la configuración.
- Certificates files from device: lo dejamos en OFF porque no usaremos unos certificados previamente almacenados en el router sino que los cargaremos nosotros directamente de los generados en nuestro ordenador con Windows
- Certificate authority: cargaremos el fichero ca.crt (./easyrsa build-ca nopass)
- Server certificate: cargaremos el fichero server.cert (./easyrsa build-server-full server nopass)
- Server key: cargaremos el fichero server.key (./easyrsa build-server-full server nopass)
- Diffie Hellman parameters: cargaremos el fichero dh.pem (./easyrsa gen-dh)
A continuación pinchamos sobre SAVE & APPLY y en la página siguiente también pinchamos en el botón SAVE & APPLY para actualizar todos los cambios realizados.
El servicio nos debe aparecer como activado
Configuración de los clientes VPN
En los ordenadores de los teletrabajadores que queramos conectar a la VPN tendremos que instalar OpenVPN. Lo podemos hacer aquí.
Una vez instalado OpenVPN nos creará una interfaz de red virtual TAP que será la que active y use nuestro ordenador para la conexión a la VPN.
Si usamos la configuración por defecto, el programa se instalará en la carpeta C:/Program Files/OpenVPN. Iremos al subdirectorio config y aquí colocaremos los ficheros ca.crt, Client1.crt y Client1.key (asumiendo que son los ficheros que creamos anteriormente con las instrucciones ./easyrsa build-ca nopass y ./easyrsa build-client-full Client1 nopass respectivamente)
Finamente tendremos que crear un fichero de configuración (lo llamaremos Client1.ovpn) con el siguiente contenido
client
dev tap
proto udp
remote <IP o nombre del dominio del servidor> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
;comp-lzo (está comentado con ; porque no lo activamos en el servidor en el RUTX10)
verb 3
A continuación arrancaremos la aplicación OpenVPN GUI y en el icono en la parte inferior derecha usamos botón derecho del ratón sobre el icono del ordenador con el candado y seleccionamos el perfil Client1 y a continuación Conectar.
Se nos abrirá una ventana donde podremos ver el log de la conexión. Si todo funciona correctamente al final veremos un log similar al siguiente donde la última línea debe indicar CONNECTED.SUCCESS
También podemos comprobar a través del comando ipconfig en una ventana CMD que tenemos activada una conexión de red para la VPN (Ethernet 2 en nuestro ejemplo) con una dirección correspondiente a la LAN del RUTX10 (en nuestro ejemplo está en el rango 192.168.0.0 porque hemos configurado la WAN del RUTX10 en el rango 192.168.1.0)
Adaptador de Ethernet Ethernet 2:
Sufijo DNS específico para la conexión. . : lan
Vínculo: dirección IPv6 local. . . : fe80::6c8e:2327:edc2:1f3c%13
Dirección IPv4. . . . . . . . . . . . . . : 192.168.0.207
Máscara de subred . . . . . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada . . . . . : 192.168.0.1
Si la conexión no se establece podemos ver los logs de conexión tanto del servidor como del cliente. El del servidor lo podemos ver en el menú System – Administration – Troubleshoot del router RUTX10 y luego pinchando sobre el botón System log SHOW.
En el PC cliente lo podemos ver en el menú Ver Log que veremos con el botón derecho sobre el nombre Client1 del icono del ordenador con el candado.