MANUAL: Mikrotik, IKEv2 VPN a fondo

Tu problema, casi con total seguridad, es meter el DoH en la ecuación, dejando el DNS por defecto en el mode-config. Si quieres usar DoH, muévelo al pi-hole.

Te digo como lo dejaría yo, con lo que tienes, con el pi-hole en el 192.168.88.15

mode-config:
Código:
add address-pool=pool-vpn address-prefix-length=32 name=ike2-conf-road-warrior \
    split-include=0.0.0.0/0 static-dns=192.168.88.15,192.168.88.1 system-dns=\
    no

ip > dns
Código:
/ip dns
set allow-remote-requests=yes servers=1.1.1.2,1.0.0.2

Y quitaría toda la movida loca que tienes hecha en el firewall con los filtrados del ICMP y demás. Por lo menos para probar, dejaría el firewall por defecto.

PS: IKEv2 no necesita de masquerade en el NAT, trabaja vía policies, así que esto te sobra
Código:
/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.56.0/24


Saludos!
 
Muchas gracias @pokoyo

Efectivamente los problemas me los va a estar dando la configuración DoH en el router.

He realizado una prueba rápida asignando las DNS en el mode-config como indicabas, sin tocar aún ningún otro parámetro y con el cliente móvil ya podía navegar.

De momento no he tocado el servidor DNS en la configuración del router para probar la conexión VPN WireGuard de la Raspberry pi.
El resultado, pues que no hay navegación por internet con lo que podemos dar por hecho que el culpable es el DoH.

He eliminado la regla que indicas en el NAT.

Haré lo que comentas de eliminar las reglas de filtrado ICMP y lo del ddos, dejando el firewall por defecto.

El DoH lo pondré en el pi-hole e incluso ya veremos si prescindo de él si me sigue dando la lata con el WireGuard en la Raspberry, pero eso ya se irá viendo según vaya haciendo pruebas.

Ahora toca ir probando rendimiento del Ikev2 pues en un primer test las velocidades no han sido muy buenas, o al menos las esperadas.

Lo dicho, muchas gracias.

Un saludo.
 
Lo de wireguard es otro tema totalmente distinto, y no tiene nada que ver. En el la config del cliente en wireguard, defines tú qué DNS usar, no lo coge del router. Lo único que necesita wireguard es que esa IP esté accesible por el túnel (bien porque mandes todo el tráfico al otro extremo, bien porque sea parte de tu red local).

Saludos!
 
Buenas tardes, estoy testeando esta vpn y estoy teniendo un problema con el cliente de windows a los 4:30 minutos dejo de navegar y tengo error timeout ¿Alguno a tenido este problema? durante esos minutos funciona todo ok, no entiendo lo que pasa. Edito con android también me pasa pero no se porque, porque cuando conecto puedo navegar perfectamente.
 
Última edición:
Hola, me llamo Damian, queria hacer una consulta, arme dos vpn distintas siguiendo el manual, pero tengo conflicto con los certificados..
vpn1
vpn cliente 1
vpn 2
vpn cliente 2
Instalados en una misma pc con windows 10, si estan ambos instalados, una de las dos vpn no me conecta pq quiere el cliente utiliza el certificado de la otra vpn..
Son certificados totalmente distintos.. y los nombres tambien..
Para conectarme a vpn1 con vpn cliente 1, tengo que borrar ambos certificados de la vpn2 y viceversa..
Hay alguna solucion?
 
Hola Damián, buenos días.

Los certificados se supone identifican a la máquina, no al usuario, en este tipo de VPN. Y, al instalarlas en Windows, me suena que se metían en el almacén de certificados del sistema, no a nivel de usuario. Te pasaría lo mismo si tratases de conectar con ese mismo equipo a dos VPN’s distintas que usaran certificados para validar la autenticación.

Si buscas una vpn donde vayas a nivel de usuario, y te quieres mantener en el mundo IPSec, prueba L2TP/IPsec, que funciona muy bien también en Mikrotik.

Sino, da el salto a WireGuard, y créeme cuando te digo que no vas a querer usar otra cosa cuando lo pruebes.

Saludos!
 
Hola Pocoyo, buenos dias, muchas gracias por responder, si estan instalados a nivel equipo los certificados, y venia pensando pasarme a wireguard, ambas vpn son para equipos road warrior, solamente en HQ hay mikrotik..
Pensé que se podia configurar en windows cada vpn para que utilice su certificado específico.. cuando realiza la transacción de conexión, me prioriza un "vpn-ca" sobre el otro..
Saludos y gracias!
 
Hola, encontre la solucion para el problema de los certificados.. hay que forzar uso del certificado "ca" por medio de powershell para la conexion vpn que quiere utilizar el certificado de otra conexion.
1 - abrir PowerShell de windows como administrador
2 - escribir: set-VpnConnection -Name "nombrevpn" -MachineCertificateIssuerFilter 'X:\path\al\certificado.crt'
Con eso queda funcionando sin que se crucen los certificados
Saludos y gracias
 
Hola, queria pedir ayuda, estoy intentando que mis clientes road-warrior utilicen solo su conexion de internet y la vpn para servicios especificos, si desactivo en tcp v4 "utilizar puerta de enlace de la red remota" y utilizo "route add", pierdo el ping entre los road-warriors, por lo tanto no puedo acceder de un road-warrior a otro road-warrior..
Saludos y gracias
 
Hola, queria pedir ayuda, estoy intentando que mis clientes road-warrior utilicen solo su conexion de internet y la vpn para servicios especificos, si desactivo en tcp v4 "utilizar puerta de enlace de la red remota" y utilizo "route add", pierdo el ping entre los road-warriors, por lo tanto no puedo acceder de un road-warrior a otro road-warrior..
Saludos y gracias
Como no te expliques un poco mejor... chungo me lo pones. Pásame mejor la config, a ver si así me acuerdo, que hace mil que no toco IKEv2.

Saludos!
 
Como no te expliques un poco mejor... chungo me lo pones. Pásame mejor la config, a ver si así me acuerdo, que hace mil que no toco IKEv2.

Saludos!
HQ > IP Publica Fija > Mikrotik > SQL Server

RW1 = Soporte Tecnico > Ip publica dinamica
RW2 = Sucursal > Ip publica dinamica

Los road warrior llegan por mikrotik al sql server
Pero el road warrior de soporte no llega al rw de la sucursal para realizar una correccion en el sql de la sucursal..
Código:
# mar/17/2022 16:17:36 by RouterOS 6.49
# software id = NGT8-D0L3
#
# model = RB2011UiAS
# serial number = E1470D42DCDC
/interface bridge
add admin-mac=08:55:31:29:75:7F auto-mac=no comment=defconf name=bridge
/interface ethernet
set [ find default-name=ether3 ] name=SWITCH
set [ find default-name=ether1 ] name=WAN_1_Telcocom
set [ find default-name=ether2 ] name=WAN_2_Speedy
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip ipsec mode-config
add address=192.168.68.253 name=ike2-conf-soporte
add address=192.168.68.14 name=ike2-conf-viedma
add address=192.168.68.16 name=ike2-conf-neuquen
add address=192.168.68.13 name=ike2-conf-zapala
add address=192.168.68.12 name=ike2-conf-lasgrutas
add address=192.168.68.11 name=ike2-conf-cipo
add address=192.168.68.18 name=ike2-conf-centro
add address=192.168.68.17 name=ike2-conf-roca
add address=192.168.68.19 name=ike2-con-equal02
/ip ipsec policy group
add name=ike2-template-group
/ip ipsec profile
add dh-group=modp2048,modp1536,modp1024 enc-algorithm=aes-256,aes-192,aes-128 \
    hash-algorithm=sha256 name=ike2-profile
/ip ipsec peer
add exchange-mode=ike2 name=ike2-peer passive=yes profile=ike2-profile
/ip ipsec proposal
add auth-algorithms=sha512,sha256,sha1 enc-algorithms="aes-256-cbc,aes-256-ctr\
    ,aes-256-gcm,aes-192-ctr,aes-192-gcm,aes-128-cbc,aes-128-ctr,aes-128-gcm" \
    lifetime=9h name=ike2-proposal pfs-group=none
/ip pool
add name=dhcp ranges=192.168.1.10-192.168.1.254
add name=pool-vpn ranges=192.168.68.10-192.168.68.30
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge name=defconf
/ip ipsec mode-config
add address-pool=pool-vpn address-prefix-length=32 name=ike2-conf-ip \
    split-include=0.0.0.0/0
/interface bridge port
add bridge=bridge comment=defconf interface=SWITCH
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=ether6
add bridge=bridge comment=defconf interface=ether7
add bridge=bridge comment=defconf interface=ether8
add bridge=bridge comment=defconf interface=ether9
add bridge=bridge comment=defconf interface=ether10
add bridge=bridge comment=defconf interface=sfp1
add bridge=bridge interface=ether4
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=SWITCH list=LAN
add comment=defconf interface=WAN_1_Telcocom list=WAN
add interface=WAN_2_Speedy list=WAN
/interface pptp-server server
set enabled=yes
/interface sstp-server server
set default-profile=default-encryption enabled=yes
/ip address
add address=192.168.1.1/24 comment=defconf interface=bridge network=\
    192.168.1.0
add address=192.168.100.2/24 interface=WAN_1_Telcocom network=192.168.100.0
add address=192.168.200.2/24 interface=WAN_2_Speedy network=192.168.200.0
/ip cloud
set ddns-enabled=yes
/ip dhcp-client
add comment=defconf interface=WAN_1_Telcocom
/ip dhcp-server network
add address=192.168.1.0/24 comment=defconf dns-server=\
    192.168.1.1,8.8.8.8,8.8.4.4 gateway=192.168.1.1 netmask=24
/ip dns
set allow-remote-requests=yes servers=192.168.100.1
/ip dns static
add address=192.168.1.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
    ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
    ipsec-policy=out,ipsec
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=accept chain=input comment="allow IPsec NAT" dst-port=4500 \
    in-interface-list=WAN protocol=udp
add action=accept chain=input comment="allow IKE" dst-port=500 \
    in-interface-list=WAN protocol=udp
add action=accept chain=input comment="allow l2tp" dst-port=1701 protocol=udp
add action=accept chain=input comment="allow pptp" dst-port=1723 protocol=tcp
add action=accept chain=input comment="allow sstp" dst-port=443 protocol=tcp
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment=\
    "defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
    disabled=yes in-interface-list=!LAN
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-state=established,related
add action=accept chain=forward comment=\
    "defconf: accept established,related, untracked" connection-state=\
    established,related,untracked
add action=drop chain=forward comment=\
    "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
    connection-state=new disabled=yes in-interface-list=WAN
add action=accept chain=forward connection-nat-state=dstnat
add action=accept chain=forward connection-nat-state=srcnat disabled=yes \
    dst-address=192.168.68.0/24 src-address=192.168.68.0/24
add action=reject chain=forward connection-mark=aSpeedy disabled=yes \
    out-interface=WAN_1_Telcocom reject-with=icmp-network-unreachable
add action=reject chain=forward connection-mark=aTelcocom out-interface=\
    WAN_2_Speedy reject-with=icmp-network-unreachable
add action=accept chain=input comment="allow ipsec" disabled=yes dst-port=\
    500,4500 in-interface-list=WAN protocol=udp
add action=accept chain=input comment=IPsec disabled=yes in-interface=\
    WAN_1_Telcocom protocol=ipsec-esp
add action=accept chain=input comment=IPsec disabled=yes in-interface=\
    WAN_2_Speedy protocol=ipsec-esp
/ip firewall mangle
add action=mark-connection chain=prerouting disabled=yes in-interface=\
    WAN_1_Telcocom new-connection-mark=WAN_1_Telcocom_connection passthrough=\
    yes
add action=mark-routing chain=prerouting connection-mark=\
    WAN_1_Telcocom_connection in-interface=bridge new-routing-mark=to_WAN_1 \
    passthrough=yes
add action=mark-routing chain=output connection-mark=\
    WAN_1_Telcocom_connection new-routing-mark=to_WAN_1 passthrough=yes
add action=mark-connection chain=forward connection-mark=no-mark \
    new-connection-mark=aTelcocom out-interface=WAN_1_Telcocom passthrough=\
    yes
add action=mark-connection chain=forward connection-mark=no-mark \
    new-connection-mark=aSpeedy out-interface=WAN_2_Speedy passthrough=yes
add action=change-mss chain=forward comment="ike2-road-warrior clamp tcp mss" \
    ipsec-policy=in,ipsec new-mss=1360 passthrough=yes protocol=tcp \
    src-address=192.168.68.0/24 tcp-flags=syn tcp-mss=!0-1360
add action=change-mss chain=forward dst-address=192.168.68.0/24 ipsec-policy=\
    out,ipsec new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn \
    tcp-mss=!0-1360
add action=change-mss chain=forward comment="ike2-branch clamp tcp mss" \
    disabled=yes dst-address=192.168.88.0/24 ipsec-policy=in,ipsec new-mss=\
    1360 passthrough=yes protocol=tcp src-address=192.168.98.0/24 tcp-flags=\
    syn tcp-mss=!0-1360
add action=route chain=prerouting disabled=yes dst-address=192.168.68.0/24 \
    passthrough=yes route-dst=192.168.1.1 src-address=192.168.1.0/24
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
    out-interface-list=WAN
add action=masquerade chain=srcnat comment="masq. vpn traffic" src-address=\
    192.168.68.0/24
add action=dst-nat chain=dstnat dst-address=191.97.47.103 dst-port=1467-1478 \
    in-interface-list=WAN protocol=tcp to-addresses=192.168.1.90 to-ports=\
    1433-1434
add action=dst-nat chain=dstnat dst-address=191.97.47.103 dst-port=1467-1468 \
    in-interface-list=WAN protocol=udp to-addresses=192.168.1.90 to-ports=\
    1433-1434
add action=dst-nat chain=dstnat comment=sql-server-port1 dst-port=1467 \
    protocol=tcp to-addresses=192.168.1.90 to-ports=1433
add action=dst-nat chain=dstnat comment=sql-server-port1u dst-port=1467 \
    protocol=udp to-addresses=192.168.1.90 to-ports=1433
add action=dst-nat chain=dstnat comment=sql-server-port2 dst-port=1468 \
    protocol=tcp to-addresses=192.168.1.90 to-ports=1434
add action=dst-nat chain=dstnat comment=sql-server-port2 dst-port=1468 \
    protocol=udp to-addresses=192.168.1.90 to-ports=1434
add action=masquerade chain=srcnat out-interface=WAN_1_Telcocom
add action=masquerade chain=srcnat dst-address=0.0.0.0 out-interface-list=WAN \
    src-address=192.168.1.0/24
add action=masquerade chain=srcnat out-interface=WAN_1_Telcocom
add action=masquerade chain=srcnat out-interface=WAN_2_Speedy
add action=src-nat chain=srcnat out-interface=WAN_1_Telcocom to-addresses=\
    192.168.100.1
add action=src-nat chain=srcnat out-interface=WAN_2_Speedy to-addresses=\
    192.168.200.1
add action=accept chain=srcnat dst-address=192.168.68.0/24 src-address=\
    192.168.1.0/24
add action=dst-nat chain=dstnat dst-address=200.63.165.121 dst-port=500 \
    in-interface=WAN_2_Speedy protocol=udp to-ports=500
add action=dst-nat chain=dstnat dst-address=200.63.165.121 dst-port=4500 \
    in-interface=WAN_2_Speedy protocol=udp to-ports=4500
/ip ipsec identity
add auth-method=digital-signature certificate=vpn-server comment=centro \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-centro peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-centro
add auth-method=digital-signature certificate=vpn-server comment=cipo \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-cipo peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-cipo
add auth-method=digital-signature certificate=vpn-server comment=roca \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-roca peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-roca
add auth-method=digital-signature certificate=vpn-server comment=equal01 \
    generate-policy=port-strict match-by=certificate mode-config=ike2-conf-ip \
    peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-equal01
add auth-method=digital-signature certificate=vpn-server comment=equal03 \
    generate-policy=port-strict match-by=certificate mode-config=ike2-conf-ip \
    peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-equal03
add auth-method=digital-signature certificate=vpn-server comment=equal04 \
    generate-policy=port-strict match-by=certificate mode-config=ike2-conf-ip \
    peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-equal04
add auth-method=digital-signature certificate=vpn-server comment=neuquen \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-neuquen peer=ike2-peer policy-template-group=\
    ike2-template-group remote-certificate=vpn-client-neuquen
add auth-method=digital-signature certificate=vpn-server comment=soporte \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-soporte peer=ike2-peer policy-template-group=\
    ike2-template-group remote-certificate=vpn-client-soporte
add auth-method=digital-signature certificate=vpn-server comment=viedma \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-viedma peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-viedma
add auth-method=digital-signature certificate=vpn-server comment=lasgrutas \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-lasgrutas peer=ike2-peer policy-template-group=\
    ike2-template-group remote-certificate=vpn-client-lasgrutas
add auth-method=digital-signature certificate=vpn-server comment=equal02 \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-con-equal02 peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-equal02
add auth-method=digital-signature certificate=vpn-server2 comment=sistemas \
    generate-policy=port-strict match-by=certificate mode-config=ike2-conf-ip \
    peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-sistemas
add auth-method=digital-signature certificate=vpn-server comment=zapala \
    generate-policy=port-strict match-by=certificate mode-config=\
    ike2-conf-zapala peer=ike2-peer policy-template-group=ike2-template-group \
    remote-certificate=vpn-client-zapala
/ip ipsec policy
add comment=clientes-vpn dst-address=192.168.68.0/24 group=\
    ike2-template-group proposal=ike2-proposal src-address=0.0.0.0/0 \
    template=yes
/ip route
add check-gateway=ping distance=1 gateway=192.168.100.1
add distance=2 gateway=192.168.200.1
/ip route rule
add src-address=192.168.100.0/24 table=to_WAN_1
add src-address=192.168.200.0/24 table=to_WAN_2
/system clock
set time-zone-name=America/Argentina/Salta
/system logging
add prefix=ipsec topics=ipsec
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
 
Juega con el split-include, no toques nada de los clientes. En ella especificas las redes para las cuales se va a crear una policy dinámica en el otro extremo, si dicha red tiene una template habilitada para ello. Si está a 0.0.0.0/0, los clientes insertarán una especie de ruta por defecto (en verdad es una policy, en IKE no hay rutas, y eso despista bastante), y rediteccionarán todo su tráfico al servidor. Si ahí especificas la subred LAN únicamente, se creará dinámicamente una policy que sólo enrute el tráfico dirigido a ella

Para no romper lo que tienes, haz una copia del mode-config que tienes para los usuarios VPN y modifica el split-include, y se los asignas a un usuario concreto, para probar si funciona como esperas.

Saludos!
 
Juega con el split-include, no toques nada de los clientes. En ella especificas las redes para las cuales se va a crear una policy dinámica en el otro extremo, si dicha red tiene una template habilitada para ello. Si está a 0.0.0.0/0, los clientes insertarán una especie de ruta por defecto (en verdad es una policy, en IKE no hay rutas, y eso despista bastante), y rediteccionarán todo su tráfico al servidor. Si ahí especificas la subred LAN únicamente, se creará dinámicamente una policy que sólo enrute el tráfico dirigido a ella

Para no romper lo que tienes, haz una copia del mode-config que tienes para los usuarios VPN y modifica el split-include, y se los asignas a un usuario concreto, para probar si funciona como esperas.

Saludos!
Hola! He realizado el split-include, agregue la LAN del HQ, y va bien, pero sigo sin tener comunicacion de RW a RW, pero solamente sucede en los RW que tienen destildada la opcion "utilizar puerta de enlace predeterminada de la red remota" para que utilicen el internet propio y no el internet del HQ..
 
Hola! He realizado el split-include, agregue la LAN del HQ, y va bien, pero sigo sin tener comunicacion de RW a RW, pero solamente sucede en los RW que tienen destildada la opcion "utilizar puerta de enlace predeterminada de la red remota" para que utilicen el internet propio y no el internet del HQ..
Hola! ya quedo funcionando.. he modificado algunas reglas, borrado otras que estaban sin utilizar, y agregue las rutas que hacian falta en split-include, y cada Road Warrior utiliza su conexion de internet y los servicios de la vpn..
Muchisimas gracias @pokoyo !!!
 
Hola! ya quedo funcionando.. he modificado algunas reglas, borrado otras que estaban sin utilizar, y agregue las rutas que hacian falta en split-include, y cada Road Warrior utiliza su conexion de internet y los servicios de la vpn..
Muchisimas gracias @pokoyo !!!
Genial, me alegro.

Saludos!
 
Arriba