furny
Usuari@ ADSLzone
- Mensajes
- 462
El objetivo es hacer un túnel EoiP sobre un túnel Ipsec/IKEv2 con RSA (certificados) entre dos routers MK, de modo que un bridge del router remoto quede integrado totalmente en un bridge del router de HQ (equivalente a esto, se monta automáticamente si creamos un túnel EoiP y le marcamos que sea sobre Ipsec. Pero así, lo que se monta, no es Ikev2). Este bridge lo denominaremos IPTV-bridge, mientras que los bridges "locales" de cada router los podemos llamar como queramos (por ejemplo, LAN-bridge, en HQ, y Playa-bridge, en el router remoto). Partimos, en el router de HQ (en mi caso un hEX), de la configuración con dos bridges, triple VLAN de Movistar, tal y como se indica en el hilo de configuraciones básicas.
Y otro router remoto, "Playa" (en mi caso un hAP), con una configuración estándar de QuickSet, sólo que el acceso WAN lo adaptamos, lógicamente, a lo que diga el ISP de ese lugar; y, eso sí, le ponemos como dirección del Playa-bridge 192.168.18.0/24, para no confundirnos con la del HQ (que es 192.168.88.0/24).
Pues empezamos con el router de HQ
A esta configuración que decía, le aplicamos primero los cambios que indica @pokoyo en el manual "Mikrotik, IKEv2 VPN a fondo" para el IKEv2 en Road Warrior (sólo los de RW, los de site-to-site no son necesarios, a menos que tengamos un tercer router y queramos conectarlo también, pero con el túnel site-to-site Ikev2 simple, ya descrito por @pokoyo; pero no pasa nada si se queda también es<a otra configuración, pues los pasos que voy a exponer no son incompatibles).
1-a) Vamos a crear un nuevo certificado para el router remoto "Playa" (supongo que tenéis ya creados previamente los certificados raíz "VPN CA" y del servidor "VPN Server", según el manual de @pokoyo más arriba. Si no, los creáis, pues son imprescindibles):
1-b) Lo firmamos:
1-c) ...y lo exportamos:
2-a) Ahora vamos a crear un tercer bridge "loopback" en el router HQ. Este es un bridge "tonto", con una dirección de red propia, que solo va a recibir, como veréis, un extremo del túnel IPSEC, pero sobre esa dirección vamos a montar después el túnel EoiP:
2-b) Ahora creamos una subred para el túnel y le damos una dirección al bridge "loopback":
3) Ahora vamos a configurar el túnel Ipsec Ikev2. Pongo en comentarios (copiados de @pokoyo) los pasos de la parte común con Road Warrior, por si no los hubierais hecho, pues son imprescindibles:
3-a) Creamos su propio mode-config. Como veis, lo que hacemos es inyectar el tráfico por el túnel hasta el extremo remoto 192.168.99.2 de la red del bridge "loopback":
3-b) Los siguientes son pasos comunes con la configuración RW, pero es imprescindible tenerlos configurados, si no lo habéis hecho previamente:
3-c) Este paso es común con RW, pero lo pongo porque yo difiero de la configuración de @pokoyo: aquí en el lado HQ tengo deshabilitado send-initial-contact=no. Esto es porque, con algunos dispositivos clientes, no me funcionaba bien el RW en alguna fase. Además, como veréis, en el lado remoto "Playa", SI lo tengo habilitado: con ello la iniciativa de levantar el enlace se la dejo al lado remoto, que es el que puede estar desconectado o apagado sin uso más frecuentemente:
3-d) Damos de alta la identidad del lado remoto "Playa", apuntando a su mode-config:
3-e) Por fin, creamos la plantilla de la política para este túnel. Fijaos que lo hacemos entre las dos direcciones de la red .99, es decir, el lado de loopback (.99.1) y el lado remoto (.99.1):
4-a) Por último, creamos el túnel Eoip sobre el túnel Ipsec/IkeV2 recién creado. Le he puesto un número MAC propio dentro del rango libre, para que sea único (es buena práctica. Haré lo mismo con el otro extremo Playa). Lo importante es que ambos lados tengan el mismo número de túnel: yo he puesto 16. Y se hace entre las dos direcciones de la red .99 creada ad-hoc:
4-b) Ya sólo queda añadir la nueva interfaz a nuestro IPTV-bridge:
Y con esto hemos terminado en el lado HQ.
Vamos al lado remoto "Playa"
# Punto previo: Si no tenéis puesto DDNS hay que ponerlo. Ya sabéis:
5-a) Lo primero, creamos el IPTV-bridge en este router:
5-b) ...y lo metemos en la lista LAN:
6-a) Vamos a crear el túnel Ipsec/Ike2 en este lado. Lo primero, su mode-config. Como veis, es distinto del del lado HQ:
6-b) Voy copiando casi la misma configuración de @pokoyo para el router "branch" del "Manual: Mikrotik, IKEv2 VPN a fondo". Nuevo template group, idéntico al del router HQ
6-c) Perfil, idéntico al del servidor
6-d) Peer, apuntando a la dirección de nuestro dominio o IP estática del router HQ, con send-initial-contact=yes
6-e) Proposal, idéntico al del router de HQ
6-f) Identity, en este caso especificando únicamente el certificado cliente:
6-g) Y por fin, la política. La hacemos aquí en modo template, y también, poniendo las direcciones de los dos extremos:
7-a) Ahora toca crear en este lado el túnel EoiP por encima del recién creado. Fijaos que el MAC es distinto, pero el número de túnel el mismo que en HQ:
7-b) ... añadimos esta nueva interfaz al puente:
7-c) ...y le añadimos además los puertos físicos ether o wireless del router que queramos, que estarán como directamente "en el router HQ" (que antes los hemos quitado del Playa-bridge, el bridge credo con el QuickSet, si es que le hubiéramos dejado añadir todos los de la lan por defecto. El como quitarlos es fácil: vais al puerto correspondiente en /interface bridge port y lo quitáis), en este caso, el ether4 solo:
8 ) Sólo queda levantar un cliente DHCP para que, a través de los túneles, le asigne una dirección de la subred de IPTV-bridge en HQ, en este lado al IPTV-bridge y a los clientes que se conecten a su puerto ether4 (o a las interfaces locales, como una wireless, que hayamos añadido a IPTV-bridge en este router remoto Playa"). Como veis, SI pedimos que le asigne el mismo DNS que tuviera asignado IPTV-bridge en el router HQ:
Con esto estaría listo el router remoto "Playa"
Reglas firewall
Por último, y muy importante: No olvides poner las reglas de firewall correspondientes, tanto en HQ como en Playa, como aconsejaba @pokoyo:
9) En el lado HQ:
10) Y en el lado remoto "Playa":
Y, listo!. Ahora debería levantarse el túnel Eoip en ambos lados y también el Ipsec. Si no fuera así, comprobad que el Playa ha cogido su ip pública en /ip cloud y si no estuviera, hacéis "force update". Después, vais a ip -> ipsec -> installed SAs y hacéis un "flush". Con esto obligáis a levantar el túnel Ike2/Ipsec. Ahora, debería funcionar.
No he puesto las reglas de TCP MSS, pues el túnel EoiP tiene ya una opción por defecto, que creo que podría ser suficiente, al menos para EoiP, pero como hay dos túneles... no sé...; pero antes debo estudiarlo y calcular exactamente la dimensión del doble encapsulamiento, y probarlo en real, que no lo he hecho.
Si lo probáis, veréis que este túnel EoiP es más rápido y eficiente que el EoiP sobre Ipsec automático, tanto al levantarse el enlace, como en su funcionamiento. Además, si el extremo remoto está desconectado, no hace falta deshabilitar la interfaz Eoip ni el loopback: se quedan esperando sin dar la lata. Veréis que no hay mensajes de error si el extremo hAP (Playa) está caído o desconectado. Por supuesto que al basarse en certificados RSA en vez de en clave compartida es también más seguro.
Espero que os sea útil.
Suerte!!!
Y otro router remoto, "Playa" (en mi caso un hAP), con una configuración estándar de QuickSet, sólo que el acceso WAN lo adaptamos, lógicamente, a lo que diga el ISP de ese lugar; y, eso sí, le ponemos como dirección del Playa-bridge 192.168.18.0/24, para no confundirnos con la del HQ (que es 192.168.88.0/24).
Pues empezamos con el router de HQ
A esta configuración que decía, le aplicamos primero los cambios que indica @pokoyo en el manual "Mikrotik, IKEv2 VPN a fondo" para el IKEv2 en Road Warrior (sólo los de RW, los de site-to-site no son necesarios, a menos que tengamos un tercer router y queramos conectarlo también, pero con el túnel site-to-site Ikev2 simple, ya descrito por @pokoyo; pero no pasa nada si se queda también es<a otra configuración, pues los pasos que voy a exponer no son incompatibles).
1-a) Vamos a crear un nuevo certificado para el router remoto "Playa" (supongo que tenéis ya creados previamente los certificados raíz "VPN CA" y del servidor "VPN Server", según el manual de @pokoyo más arriba. Si no, los creáis, pues son imprescindibles):
Código:
/certificate
add copy-from=~vpn-client-template name=vpn-client-playa common-name="VPN Client Playa"\
subject-alt-name=email:playa@router.pericopalotes.com
1-b) Lo firmamos:
Código:
/certificate
sign vpn-ca
{:delay 5};
sign vpn-client-playa ca=vpn-ca
1-c) ...y lo exportamos:
Código:
/certificate
export-certificate vpn-client-playa type=pkcs12 export-passphrase="MySuperVPN!" file-name=playa
2-a) Ahora vamos a crear un tercer bridge "loopback" en el router HQ. Este es un bridge "tonto", con una dirección de red propia, que solo va a recibir, como veréis, un extremo del túnel IPSEC, pero sobre esa dirección vamos a montar después el túnel EoiP:
Código:
/interface bridge
add comment="Site-to-site dummy bridge" name=loopback
2-b) Ahora creamos una subred para el túnel y le damos una dirección al bridge "loopback":
Código:
/ip address
add address=192.168.99.1 comment="For site-to-site IkeV2 EoiP tunnel" \
interface=loopback network=192.168.99.1
3) Ahora vamos a configurar el túnel Ipsec Ikev2. Pongo en comentarios (copiados de @pokoyo) los pasos de la parte común con Road Warrior, por si no los hubierais hecho, pues son imprescindibles:
3-a) Creamos su propio mode-config. Como veis, lo que hacemos es inyectar el tráfico por el túnel hasta el extremo remoto 192.168.99.2 de la red del bridge "loopback":
Código:
/ip ipsec mode-config
add address=192.168.99.2 address-prefix-length=32 name=eoip-ike2-config \
split-include=192.168.99.1/32 system-dns=no
3-b) Los siguientes son pasos comunes con la configuración RW, pero es imprescindible tenerlos configurados, si no lo habéis hecho previamente:
Código:
# Damos de alta un nuevo group para asociar a él las plantillas de configuración con los policies a usar
/ip ipsec policy group
add name=ike2-template-group
# Damos de alta el perfil de autenticación
/ip ipsec profile
add dh-group=modp2048,modp1536,modp1024 enc-algorithm=aes-256,aes-192,aes-128 hash-algorithm=sha256 name=ike2-profile
# Damos de alta la propuesta de negociación para el intercambio de claves IKE y SAs
# Las claves tendrán una validez de 8h para evitar renegociaciones innecesarias y el pfs-group=none para
# aumentar la compatiblidad con dispositivos moviles, tipo Apple. Restringimos el proposal a tipo de encriptación AES
/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=8h \
name=ike2-proposal pfs-group=none
3-c) Este paso es común con RW, pero lo pongo porque yo difiero de la configuración de @pokoyo: aquí en el lado HQ tengo deshabilitado send-initial-contact=no. Esto es porque, con algunos dispositivos clientes, no me funcionaba bien el RW en alguna fase. Además, como veréis, en el lado remoto "Playa", SI lo tengo habilitado: con ello la iniciativa de levantar el enlace se la dejo al lado remoto, que es el que puede estar desconectado o apagado sin uso más frecuentemente:
Código:
/ip ipsec peer
add exchange-mode=ike2 name=ike2-peer passive=yes profile=ike2-profile send-initial-contact=no
3-d) Damos de alta la identidad del lado remoto "Playa", apuntando a su mode-config:
Código:
/ip ipsec identity
add auth-method=digital-signature certificate=vpn-server comment=router-playa generate-policy=port-strict match-by=certificate mode-config=eoip-ike2-config peer=\
ike2-peer policy-template-group=ike2-template-group remote-certificate=vpn-client-playa
3-e) Por fin, creamos la plantilla de la política para este túnel. Fijaos que lo hacemos entre las dos direcciones de la red .99, es decir, el lado de loopback (.99.1) y el lado remoto (.99.1):
Código:
/ip ipsec policy
add comment="site-to-site ike2 EoiP tunnel" dst-address=192.168.99.2/32 \
group=ike2-template-group proposal=ike2-proposal src-address=192.168.99.1/32 \
template=yes
4-a) Por último, creamos el túnel Eoip sobre el túnel Ipsec/IkeV2 recién creado. Le he puesto un número MAC propio dentro del rango libre, para que sea único (es buena práctica. Haré lo mismo con el otro extremo Playa). Lo importante es que ambos lados tengan el mismo número de túnel: yo he puesto 16. Y se hace entre las dos direcciones de la red .99 creada ad-hoc:
Código:
/interface eoip
add allow-fast-path=no disabled=yes !keepalive local-address=192.168.99.1 \
mac-address=00:00:5E:FF:07:36 mtu=1500 name=s2s-ike2-tunnel \
remote-address=192.168.99.2 tunnel-id=16
4-b) Ya sólo queda añadir la nueva interfaz a nuestro IPTV-bridge:
Código:
/interface bridge port
add bridge=IPTV-Bridge interface=s2s-ike2-tunnel
Y con esto hemos terminado en el lado HQ.
Vamos al lado remoto "Playa"
# Punto previo: Si no tenéis puesto DDNS hay que ponerlo. Ya sabéis:
Código:
/ip cloud
set ddns-enabled=yes ddns-update-interval=1m
5-a) Lo primero, creamos el IPTV-bridge en este router:
Código:
/interface bridge
add igmp-snooping=yes name=IPTV-Bridge
5-b) ...y lo metemos en la lista LAN:
Código:
/interface list member
add interface=IPTV-Bridge list=LAN
6-a) Vamos a crear el túnel Ipsec/Ike2 en este lado. Lo primero, su mode-config. Como veis, es distinto del del lado HQ:
Código:
/ip ipsec mode-config
add name=s2s-ike2-config responder=no
6-b) Voy copiando casi la misma configuración de @pokoyo para el router "branch" del "Manual: Mikrotik, IKEv2 VPN a fondo". Nuevo template group, idéntico al del router HQ
Código:
/ip ipsec policy group
add name=ike2-template-group
6-c) Perfil, idéntico al del servidor
Código:
/ip ipsec profile
add dh-group=modp2048,modp1536,modp1024 enc-algorithm=aes-256,aes-192,aes-128 \
hash-algorithm=sha256 name=ike2-profile
6-d) Peer, apuntando a la dirección de nuestro dominio o IP estática del router HQ, con send-initial-contact=yes
Código:
/ip ipsec peer
add address=router.pericopalotes.com exchange-mode=ike2 name=s2s-peer \
profile=ike2-profile send-initial-contact=yes
6-e) Proposal, idéntico al del router de HQ
Código:
/ip ipsec proposal
add auth-algorithms=sha512,sha256,sha1 enc-algorithms="aes-256-cbc,aes-256-ctr,a\
es-256-gcm,aes-192-ctr,aes-192-gcm,aes-128-cbc,aes-128-ctr,aes-128-gcm" \
lifetime=8h name=ike2-proposal pfs-group=none
6-f) Identity, en este caso especificando únicamente el certificado cliente:
Código:
/ip ipsec identity
add auth-method=digital-signature certificate=vpn-client-playa generate-policy=\
port-strict mode-config=s2s-ike2-config peer=s2s-peer \
policy-template-group=ike2-template-group
6-g) Y por fin, la política. La hacemos aquí en modo template, y también, poniendo las direcciones de los dos extremos:
Código:
/ip ipsec policy
add dst-address=192.168.99.1/32 group=ike2-template-group proposal=ike2-proposal \
src-address=192.168.99.2/32 template=yes
7-a) Ahora toca crear en este lado el túnel EoiP por encima del recién creado. Fijaos que el MAC es distinto, pero el número de túnel el mismo que en HQ:
Código:
/interface eoip
add allow-fast-path=no !keepalive local-address=192.168.99.2 mac-address=\
00:00:5E:FF:07:37 mtu=1500 name=s2s-ike2-Playa remote-address=\
192.168.99.1 tunnel-id=16
7-b) ... añadimos esta nueva interfaz al puente:
Código:
/interface bridge port
add bridge=IPTV-Bridge interface=s2s-ike2-Playa
7-c) ...y le añadimos además los puertos físicos ether o wireless del router que queramos, que estarán como directamente "en el router HQ" (que antes los hemos quitado del Playa-bridge, el bridge credo con el QuickSet, si es que le hubiéramos dejado añadir todos los de la lan por defecto. El como quitarlos es fácil: vais al puerto correspondiente en /interface bridge port y lo quitáis), en este caso, el ether4 solo:
Código:
/interface bridge port
add bridge=IPTV-Bridge interface=ether4
8 ) Sólo queda levantar un cliente DHCP para que, a través de los túneles, le asigne una dirección de la subred de IPTV-bridge en HQ, en este lado al IPTV-bridge y a los clientes que se conecten a su puerto ether4 (o a las interfaces locales, como una wireless, que hayamos añadido a IPTV-bridge en este router remoto Playa"). Como veis, SI pedimos que le asigne el mismo DNS que tuviera asignado IPTV-bridge en el router HQ:
Código:
/ip dhcp-client
add add-default-route=no disabled=no interface=IPTV-Bridge use-peer-dns=yes
Con esto estaría listo el router remoto "Playa"
Reglas firewall
Por último, y muy importante: No olvides poner las reglas de firewall correspondientes, tanto en HQ como en Playa, como aconsejaba @pokoyo:
9) En el lado HQ:
Código:
/ip firewall filter
add action=accept chain=input comment="allow ipsec" dst-port=500,4500 protocol=udp
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input comment=\
"Allow decrypted IpSec traffic from Playa to router HQ" ipsec-policy=in,ipsec
10) Y en el lado remoto "Playa":
Código:
/ip firewall filter
add action=accept chain=input comment="allow ipsec" dst-port=500,4500 protocol=udp
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input comment="allow HQ access to router" ipsec-policy=in,ipsec
Y, listo!. Ahora debería levantarse el túnel Eoip en ambos lados y también el Ipsec. Si no fuera así, comprobad que el Playa ha cogido su ip pública en /ip cloud y si no estuviera, hacéis "force update". Después, vais a ip -> ipsec -> installed SAs y hacéis un "flush". Con esto obligáis a levantar el túnel Ike2/Ipsec. Ahora, debería funcionar.
No he puesto las reglas de TCP MSS, pues el túnel EoiP tiene ya una opción por defecto, que creo que podría ser suficiente, al menos para EoiP, pero como hay dos túneles... no sé...; pero antes debo estudiarlo y calcular exactamente la dimensión del doble encapsulamiento, y probarlo en real, que no lo he hecho.
Si lo probáis, veréis que este túnel EoiP es más rápido y eficiente que el EoiP sobre Ipsec automático, tanto al levantarse el enlace, como en su funcionamiento. Además, si el extremo remoto está desconectado, no hace falta deshabilitar la interfaz Eoip ni el loopback: se quedan esperando sin dar la lata. Veréis que no hay mensajes de error si el extremo hAP (Playa) está caído o desconectado. Por supuesto que al basarse en certificados RSA en vez de en clave compartida es también más seguro.
Espero que os sea útil.
Suerte!!!