1 QUE RESUELVE ESTE PROCEDIMIENTO
Los clientes OpenVPN modernos (2.6 y 2.7) incorporaron requisitos de seguridad que la configuracion anterior de MikroTik no cumplia. Este procedimiento corrige esos puntos y genera un archivo .ovpn unico compatible con todas las versiones actuales.
PROBLEMA ORIGINAL |
IMPACTO |
ESTADO |
Certificados sin SAN |
OpenVPN 2.6+ rechaza la conexion |
✓ Resuelto |
Cipher Blowfish habilitado |
Eliminado en OpenVPN 2.6+ |
✓ Resuelto |
Auth MD5 habilitado |
Deprecado en clientes modernos |
✓ Resuelto |
Compresion LZO activa |
Rechazada en OpenVPN 2.6 y 2.7 |
✓ Resuelto |
Auth SHA256 / TLS 1.2 |
Mejor seguridad HMAC y TLS |
⚡ Solo ROS 7 |
NOTA |
Los certificados generados son compatibles con RouterOS 7. Si en el futuro se actualiza a ROS 7, no es necesario regenerar certificados ni redistribuir el .ovpn. |
2 ARCHIVOS DE TRABAJO
Para cada cliente se utilizan dos archivos. Tenerlos listos antes de empezar:
ARCHIVO |
DESCRIPCION |
QUE MODIFICAR |
ovpn-mikrotik-setup.rsc |
Script que corre en el MikroTik |
3 variables al inicio |
CLIENTE.ovpn |
Plantilla del archivo de conexion |
Remote, rutas y certificados |
3 PASO A PASO - TECNICO
3.1 — Editar el script
Abrir el archivo ovpn-mikrotik-setup.rsc con el Bloc de Notas. Modificar SOLO estas tres variables al inicio:
VARIABLES A EDITAR |
:local clienteNombre "NOMBRE-CLIENTE" ; nombre del cliente sin espacios |
:local remoteHost "IP-O-DNS-DEL-EQUIPO" ; IP publica o DNS dinamico del MikroTik |
:local org "NOMBRE-EMPRESA" ; nombre de la empresa del cliente |
|
Ejemplo:
EJEMPLO COMPLETO |
:local clienteNombre "Transportes-BGR" |
:local remoteHost "he908pf6w4s.sn.mynetname.net" |
:local org "BGR" |
|
NOTA |
El campo org aparece en los tres certificados generados (CA, servidor y cliente). Usar el nombre real de la empresa del cliente. |
Variable keySize - segun el modelo del equipo
El script tiene una cuarta variable que define el tamano de clave RSA. Ajustar segun el modelo:
MODELOS |
KEYSIZE |
OBSERVACION |
RB3011, CCR1009, CCR1016 |
4096 |
Hardware potente, sin problema |
RB951, RB951Ui, hAP, hAP ac, hAP ac2 |
2048 |
Obligatorio - hardware limitado, 4096 da timeout |
AJUSTE DE KEYSIZE |
:local keySize 2048 ; cambiar a 4096 en equipos potentes como RB3011 |
|
ADVERTENCIA |
No modificar ninguna otra linea del script. El resto esta configurado para funcionar igual en todos los equipos. |
3.2 — Subir y ejecutar el script en el MikroTik
Abrir Winbox y conectarse al equipo con usuario admin.
Ir a Files y arrastrar el archivo ovpn-mikrotik-setup.rsc al panel.
Verificar que el archivo aparece en la lista de Files.
Ir a New Terminal y ejecutar el siguiente comando:
COMANDO DE EJECUCION |
/import file-name=ovpn-mikrotik-setup.rsc |
|
Esperar entre 3 y 5 minutos. El script muestra el progreso paso a paso en el terminal:
SALIDA ESPERADA EN TERMINAL |
PASO 1 - Eliminando certificados anteriores |
PASO 1 OK |
PASO 2 - Creando CA |
progress: done |
PASO 2 OK |
PASO 3 - Creando certificado servidor |
progress: done |
PASO 3 OK |
PASO 4 - Creando certificado cliente dbyte |
progress: done |
PASO 4 OK |
PASO 5 - Configurando OpenVPN y PPP |
PASO 5 OK |
PASO 6 - Exportando certificados |
PASO 6 OK |
--- CERTIFICADOS --- |
0 KL A T CA |
1 K I SERVIDOR DNS:remote-del-equipo |
2 K I dbyte |
--- FIN - Bajar archivos de Files --- |
Script file loaded and executed successfully |
|
ADVERTENCIA - GENERACION DE CLAVES RSA |
Los pasos 2, 3 y 4 generan claves RSA. Pueden tardar hasta 60 segundos cada uno sin mostrar nada en pantalla. NO interrumpir el proceso. |
ADVERTENCIA - USUARIOS ACTIVOS |
Al ejecutar el PASO 1 se eliminan los certificados existentes. Los usuarios VPN conectados en ese momento pierden la sesion. Avisar antes de ejecutar. |
3.3 — Verificar los certificados generados
Al finalizar el script, ejecutar este comando y confirmar que aparecen los 3 certificados:
VERIFICACION |
/certificate print brief |
|
# |
FLAGS ESPERADOS |
NOMBRE |
SIGNIFICA |
0 |
KL A T |
CA |
CA raiz correcta - authority, trusted, con clave privada |
1 |
K I |
SERVIDOR |
Cert servidor - issued, con SAN del equipo |
2 |
K I |
dbyte |
Cert cliente - issued, tls-client |
NOTA |
Si algun certificado no aparece o le faltan flags, volver a ejecutar el script completo desde el inicio. |
3.4 — Bajar los archivos exportados
Ir a Winbox > Files. Deben aparecer 3 archivos con el nombre del cliente:
ARCHIVO |
USO EN EL .OVPN |
export-CLIENTE-CA.crt |
Certificado de la CA raiz - va en el bloque <ca> |
export-CLIENTE-dbyte.crt |
Certificado del cliente - va en el bloque <cert> |
export-CLIENTE-dbyte-key.key |
Clave privada - va en el bloque <key> |
Seleccionar cada archivo en Winbox > Files.
Hacer clic en Download y guardarlos en una carpeta identificada con el nombre del cliente.
NOTA |
RouterOS 6 exporta la clave privada sin passphrase. Distribuir el archivo .ovpn final por un canal seguro. |
3.5 — Completar la plantilla .ovpn
Abrir el archivo CLIENTE.ovpn con el Bloc de Notas y completar los siguientes puntos en orden:
a) Cambiar el remote
REMOTE |
remote IP-O-DNS-DEL-EQUIPO ; reemplazar con la IP publica o DNS del equipo |
|
b) Agregar las rutas internas del cliente
Agregar una linea route por cada red interna a la que el usuario debe acceder via VPN:
RUTAS INTERNAS |
route 192.168.88.0 255.255.255.0 |
route 10.70.2.0 255.255.255.0 |
route X.X.X.0 255.255.255.0 ; agregar todas las redes necesarias |
|
c) Incrustar los certificados
Abrir export-CLIENTE-CA.crt con el Bloc de Notas, seleccionar todo (Ctrl+A) y copiar (Ctrl+C).
En el .ovpn, reemplazar el comentario dentro de <ca> ... </ca> con el contenido copiado.
Repetir para export-CLIENTE-dbyte.crt en el bloque <cert> ... </cert>.
Repetir para export-CLIENTE-dbyte-key.key en el bloque <key> ... </key>.
El resultado correcto dentro de cada bloque:
ESTRUCTURA CORRECTA DE CERTIFICADOS |
<ca> |
-----BEGIN CERTIFICATE----- |
MIIFxTCCA62gAwIBAgII... |
-----END CERTIFICATE----- |
</ca> |
<cert> |
-----BEGIN CERTIFICATE----- |
MIIFrjCCA5agAwIBAgII... |
-----END CERTIFICATE----- |
</cert> |
<key> |
-----BEGIN RSA PRIVATE KEY----- |
MIIJKAIBAAKCAgEA... |
-----END RSA PRIVATE KEY----- |
</key> |
|
ADVERTENCIA - COMENTARIOS RESIDUALES |
No deben quedar comentarios (#) dentro de los bloques <ca>, <cert> o <key>. Solo el contenido del certificado entre las lineas BEGIN y END. |
ADVERTENCIA - LINEAS [INLINE] |
No incluir las lineas: ca [inline] / cert [inline] / key [inline]. Rompen la importacion en OpenVPN Connect. |
d) Guardar el archivo
Guardar el archivo con el nombre del cliente. Ejemplo: Transportes-BGR.ovpn
4 COMPATIBILIDAD POR VERSION DE CLIENTE OPENVPN
La directiva disable-dco del archivo .ovpn debe ajustarse segun la version del cliente:
VERSION DEL CLIENTE |
DISABLE-DCO EN EL .OVPN |
ACCION |
OpenVPN 2.5.x |
No soportado - da error al importar |
Comentar con punto y coma: ;disable-dco |
OpenVPN 2.6.x |
Soportado y recomendado |
Dejar activo: disable-dco |
OpenVPN 2.7.x |
Soportado y recomendado |
Dejar activo: disable-dco |
OpenVPN Connect PC |
No aplica, lo ignora |
Indiferente - dejar activo o comentado |
Para OpenVPN 2.5.x - comentar con punto y coma:
OPENVPN 2.5.X |
;disable-dco |
|
Para OpenVPN 2.6.x, 2.7.x y OpenVPN Connect:
OPENVPN 2.6+ Y CONNECT |
disable-dco |
|
NOTA |
Si el ambiente tiene mezcla de versiones 2.5 y 2.6+, usar la version comentada. OpenVPN 2.6+ funciona igual con o sin la directiva cuando el servidor es MikroTik. |
5 AJUSTES EN OPENVPN CONNECT PC
OpenVPN Connect tiene configuraciones globales que pueden interferir con la conexion a MikroTik. Verificar y ajustar en Settings:
AJUSTE |
VALOR CORRECTO |
DONDE ENCONTRARLO |
VPN Protocol |
TCP |
Settings > General |
Enable DCO |
Desactivado |
Settings > Advanced |
Enforce TLS 1.3 |
Desactivado |
Settings > Advanced |
DNS Fallback |
Activado |
Settings > Advanced |
ADVERTENCIA - TLS 1.3 |
Enforce TLS 1.3 debe estar desactivado. RouterOS 6 no soporta TLS 1.3 y la conexion falla. |
ADVERTENCIA - ENABLE DCO |
Enable DCO debe estar desactivado. Puede causar problemas con el servidor MikroTik. |
5.1 — Navegacion cortada al conectar
Si el usuario reporta que al conectar la VPN pierde acceso a internet, verificar que el .ovpn tenga esta linea:
LINEA REQUERIDA EN EL .OVPN |
pull-filter ignore "dhcp-option DNS" |
|
Esta linea hace que el cliente ignore el DNS que empuja el servidor y conserve el DNS local del sistema. Sin ella, OpenVPN Connect reemplaza el DNS y corta la navegacion.
6 CHECKLIST DE CIERRE POR EQUIPO
1 |
Script ejecutado sin errores hasta FIN |
2 |
3 certificados presentes con flags correctos en /certificate print brief |
3 |
3 archivos descargados de Winbox > Files |
4 |
Remote correcto en el .ovpn |
5 |
Rutas internas del cliente declaradas en el .ovpn |
6 |
3 bloques de certificados completos sin comentarios internos |
7 |
disable-dco ajustado segun version del cliente |
8 |
Ajustes de OpenVPN Connect verificados (DCO, TLS 1.3, protocolo TCP) |
9 |
Conexion probada y verificada |
10 |
Acceso a redes internas verificado |
11 |
Archivo .ovpn entregado al usuario por canal seguro |
A APENDICE - COMANDOS DE REFERENCIA RAPIDA
VERIFICAR ESTADO DEL SERVIDOR OPENVPN
/interface ovpn-server server print |
|
VERIFICAR CERTIFICADOS
/certificate print brief |
|
VERIFICAR USUARIOS VPN CONECTADOS
/ppp active print |
|
VER ARCHIVOS EXPORTADOS EN EL ROUTER
/file print brief |
|
VERIFICAR PERFIL PPP
/ppp profile print where name=OVPN-PERFIL |
|
VERIFICAR CONFIGURACION DEL SERVIDOR
/interface ovpn-server server print |
|