MANUAL: Mikrotik, WireGuard VPN a fondo (RW + STS)

Hola
Y si qusiese que tuviera acceso a internet? Gracias
Pues dos reglas: la primera acepta lo que necesitas, de la ip concreta de wireguard a la de la LAN. La segunda, la que ya has visto en más de un post: rechaza todo lo que venga de la subred de la VPN, con destino distinto de la WAN. Las dos en forward, y en ese orden.

Saludos!
 
Buenas,
He estado viendo el tema de wireward, pero no he encontrado ninguna manera de forzar todo el trafico via wireward.
Por ejemplo, si el mk tiene el rango 192.168.0.1/24 y un roadwarrior desde su casa tiene el mismo rango, hacer que todo el trafico a 192.168.0.0/24 se fuerze sobre el wireward en vez de en el rango local de casa del roadwarrior.

Gracias!
 
Buenas,
He estado viendo el tema de wireward, pero no he encontrado ninguna manera de forzar todo el trafico via wireward.
Por ejemplo, si el mk tiene el rango 192.168.0.1/24 y un roadwarrior desde su casa tiene el mismo rango, hacer que todo el trafico a 192.168.0.0/24 se fuerze sobre el wireward en vez de en el rango local de casa del roadwarrior.

Gracias!
Eso que dices nunca se va a dar. La interfaz wireguard siempre va a tener su propio segmento de red, no la comparte con otras interfaces locales dentro del mismo Mikrotik. Te estás liando.

Saludos!
 
Eso que dices nunca se va a dar. La interfaz wireguard siempre va a tener su propio segmento de red, no la comparte con otras interfaces locales dentro del mismo Mikrotik. Te estás liando.

Saludos!
Quizás no me he explicado bien, disculpa!

Te adjunto un diagrama tonto que acabo de hacer para indicarte a lo que me refiero.

Desde el PC con ip 192.168.0.10 que tiene un PC en la misma red con la IP 192.168.0.60, pero passar el trafico por el wireguard hasta la ip 192.168.0.60 del otro extremo del wireguard.

no sé si me explico.
Gracias!
 

Adjuntos

  • wireguard.png
    wireguard.png
    36.6 KB · Visitas: 36
Quizás no me he explicado bien, disculpa!

Te adjunto un diagrama tonto que acabo de hacer para indicarte a lo que me refiero.

Desde el PC con ip 192.168.0.10 que tiene un PC en la misma red con la IP 192.168.0.60, pero passar el trafico por el wireguard hasta la ip 192.168.0.60 del otro extremo del wireguard.

no sé si me explico.
Gracias!
Pues me has dejado igual o peor. ¿Qué son las cosas naranjas, dos routers? ¿Con el mismo segmento? (Mal empezamos), ¿Y un túnel wireguard entre ellos?

Saludos!
 
Pues me has dejado igual o peor. ¿Qué son las cosas naranjas, dos routers? ¿Con el mismo segmento? (Mal empezamos), ¿Y un túnel wireguard entre ellos?

Saludos!
Correcto, dos routers con el mismo segmento de red (nada útil ni recomendado), pero la red de los roadwarriors suele ser la 192.168.1.0/24 o 192.168.0.1/24, lo suyo seria no tener el mismo rango en el principal (lo sé).

Pero al ser así, como puedo enrutar en trafico del PC del router B con ip 192.168.0.10 a la ip 192.168.0.60 del rango A? no hay ninguna opción en el wireguard para forzar todo el trafico por la VPN? o hay que hacer algun prerouting con marcado y enviarlo al wireguard?

Gracias!
 
A ver, vamos por partes, que creo que ya he dilucidado tu problema. Lo que tú estás pintando es una conexión site to site (entre routers, que no es tu caso), y sin embargo tu problema es que tienes dos extremos, A y B (empresa / casa) con el mismo segmento de red, y un tío que, en cualquiera de esos sitios, se quieres conectar en modo road-warrior al otro. ¿es así? Es decir, este que pinto a continuación es tu esquema:

1663919960136.png



Siendo 192.168.155.x la que sea la subred que hayas elegido para wireguard (no se te ocurra intentar montarlo sobre la 192.168.0.x, o sí que no te va a funcionar nada de nada).

Teniendo esto en cuenta, tu problema es muy sencillo: la tabla de rutas del equipo cliente tiene una ruta por defecto que apunta al gateway del router de tu casa, por donde tienes que salir a internet. Además de eso, esa ruta tiene una distancia 0 para la interfaz física que te conecta a ella. Siendo así, tu tabla de rutas siempre va a resolver que, para una IP 192.168.75.x, vayas a tu router, y no por el túnel. Básicamente, tienes tres opciones:

  • La buena: que el segmento de red de la oficina cambie, tal que ese router opere en una subred de clase B, más adecuada para oficinas.
  • La compleja: que modifiques tu tabla de rutas el equipo correspondiente (el pc que se conecta en modo RW), para trucar dicha tabla y que todo el tráfico a esa subred pase por el túnel (te vas a quedar sin acceso al resto de dispositivos de tu red local). Más info, aquí.
  • La ñapa: que modifiques el allowed address y, en lugar de 0.0.0.0/0, le des las IPs específicas a las que quieres acceder. Por ejemplo, si el servidor tuviera la 192.168.0.5 y en los DNS de wireguard tuvieras configurado el 1.1.1.1 para resolver internet, tu allowed address sería la 192.168.155.1 (suponiendo que es la IP wireguard el otro extremo), 1.1.1.1, 192.168.75.5. De esa manera, se crearía una ruta /32 a esa IP que precedería a la tuya por defecto, no yendo a buscar esa IP en tu red local, sino por el túnel. Es decir, allowed-address=192.168.155.1, 1.1.1.1, 192.168.75.5

Saludos!
 
A ver, vamos por partes, que creo que ya he dilucidado tu problema. Lo que tú estás pintando es una conexión site to site (entre routers, que no es tu caso), y sin embargo tu problema es que tienes dos extremos, A y B (empresa / casa) con el mismo segmento de red, y un tío que, en cualquiera de esos sitios, se quieres conectar en modo road-warrior al otro. ¿es así? Es decir, este que pinto a continuación es tu esquema:




Siendo 192.168.155.x la que sea la subred que hayas elegido para wireguard (no se te ocurra intentar montarlo sobre la 192.168.0.x, o sí que no te va a funcionar nada de nada).

Teniendo esto en cuenta, tu problema es muy sencillo: la tabla de rutas del equipo cliente tiene una ruta por defecto que apunta al gateway del router de tu casa, por donde tienes que salir a internet. Además de eso, esa ruta tiene una distancia 0 para la interfaz física que te conecta a ella. Siendo así, tu tabla de rutas siempre va a resolver que, para una IP 192.168.75.x, vayas a tu router, y no por el túnel. Básicamente, tienes tres opciones:

  • La buena: que el segmento de red de la oficina cambie, tal que ese router opere en una subred de clase B, más adecuada para oficinas.
  • La compleja: que modifiques tu tabla de rutas el equipo correspondiente (el pc que se conecta en modo RW), para trucar dicha tabla y que todo el tráfico a esa subred pase por el túnel (te vas a quedar sin acceso al resto de dispositivos de tu red local). Más info, aquí.
  • La ñapa: que modifiques el allowed address y, en lugar de 0.0.0.0/0, le des las IPs específicas a las que quieres acceder. Por ejemplo, si el servidor tuviera la 192.168.0.5 y en los DNS de wireguard tuvieras configurado el 1.1.1.1 para resolver internet, tu allowed address sería la 192.168.155.1 (suponiendo que es la IP wireguard el otro extremo), 1.1.1.1, 192.168.75.5. De esa manera, se crearía una ruta /32 a esa IP que precedería a la tuya por defecto, no yendo a buscar esa IP en tu red local, sino por el túnel. Es decir, allowed-address=192.168.155.1, 1.1.1.1, 192.168.75.5

Saludos!
Correcto, era eso, acabo de ver que mi diagrama estaba mal, disculpa! pensaba que habría algún parámetro en la configuración de el wireguard para que se creen las rutas automáticamente en la maquina local (segunda opción).

Esta claro que la mejor opción es la primera.


PD: que app utilizas para el diagrama?

Muchas gracias!!
 
Correcto, era eso, acabo de ver que mi diagrama estaba mal, disculpa! pensaba que habría algún parámetro en la configuración de el wireguard para que se creen las rutas automáticamente en la maquina local (segunda opción).

Esta claro que la mejor opción es la primera.


PD: que app utilizas para el diagrama?

Muchas gracias!!
Las rutas claro que se crean automáticamente. De hecho, lo hacen al vuelo, cada vez que solicitas una IP no local. El problema es que tu remoto y tu local es el mismo, pero “pesa menos” (menor distancia) llegar al local que al remoto, por tanto siempre vas a preferir preguntarle a tu router que al remoto, a menos que modifiques eso vía ruta estática. Pero vamos, ya te digo que la solución buena es cambiar el segmento de red de la oficina.

Los diagramas están hechos con draw.io, directamente desde su web.

Saludos!
 
Tengo varias dudas que igual ya estan comentadas(sorry)!
Por ejemplo, en el MK para un tunel STS hay que añadir las reglas de route de la lan remota, pero en un app de movil como RW con poner la ip de lan remota en allowed IP ya sabe por donde ir a esa IP, esto es asi??

Y la otra duda es, en dos MK para hacer un STS no se puede hacer solo uno de "servidor" y otro solo de peer?, o no tiene sentido lo que comento??
 
Por ejemplo, en el MK para un tunel STS hay que añadir las reglas de route de la lan remota, pero en un app de movil como RW con poner la ip de lan remota en allowed IP ya sabe por donde ir a esa IP, esto es asi??
Correcto. Desde un lado (router), sólo se acepta tráfico de una IP concreta en el peer que representa un road warrior. Del otro lado (móvil), se acepta todo tráfico, representado por 0.0.0.0/0

Y la otra duda es, en dos MK para hacer un STS no se puede hacer solo uno de "servidor" y otro solo de peer?, o no tiene sentido lo que comento??
Sí, se puede. De hecho se puede hacer un híbrido: conectar como RW un router y enrutar una LAN concreta. En el router "servidor", aceptarías la IP concreta de ese RW + la LAN que quieres enrutar.

Saludos!
 
Correcto. Desde un lado (router), sólo se acepta tráfico de una IP concreta en el peer que representa un road warrior. Del otro lado (móvil), se acepta todo tráfico, representado por 0.0.0.0/0
La duda es que si por ejemplo en el móvil indico como IP permitidas solo la red wireguard y la lan remota automáticamente sabe hacer el enrutado a diferencia de en el MK que si tienes que añadir la regla de route para la lan remota aunque la metas en el peer (como se ve por ejemplo en el primer mensaje para una config de STS)


Sí, se puede. De hecho se puede hacer un híbrido: conectar como RW un router y enrutar una LAN concreta. En el router "servidor", aceptarías la IP concreta de ese RW + la LAN que quieres enrutar.

Entendido, pero entonces que ventaja aporta en un túnel STS hacer el túnel en ambos extremos a hacerlo solo en uno como RW?
Que por cierto, como seria la configuración? porque en el MK si vas a añadir un peer como si fuera un RW te pide la interfaz de wireguard, entonces seria prácticamente igual añadirlo como RW que como STS, no?

Que lo mismo tengo un lio en la cabeza bueno...
 
La duda es que si por ejemplo en el móvil indico como IP permitidas solo la red wireguard y la lan remota automáticamente sabe hacer el enrutado a diferencia de en el MK que si tienes que añadir la regla de route para la lan remota aunque la metas en el peer (como se ve por ejemplo en el primer mensaje para una config de STS)
No, una cosa son las rutas, y otra los allowed-address. En el allowed-address lo único que especificas es a qué tráfico le permites el paso por el túnel. Pero el enrutado, es cosa de los extremos.

Entendido, pero entonces que ventaja aporta en un túnel STS hacer el túnel en ambos extremos a hacerlo solo en uno como RW?
Creo que es obvio. El túnel es el mismo (no se crean dos), pero de una manera sólo uno de los extremos tiene la posibilidad de arrancarlo, mientras que la otra permites que cualquiera de los dos extremos inicie ese proceso. Si tienes IP pública estática en la parte servidora, no tienes problema en dejarlo sólo del lado cliente esa responsabilidad. Pero, a la que tengas IP pública dinámica, te interesa mucho que cualquiera de los dos extremos sea quien pueda levantar dicha conexión, puesto que cuando cambia la IP, habrá un tiempo en el que el cliente "llame" y no encuentre respuesta.

Que por cierto, como seria la configuración? porque en el MK si vas a añadir un peer como si fuera un RW te pide la interfaz de wireguard, entonces seria prácticamente igual añadirlo como RW que como STS, no?
La única diferencia sería en que para un sts tienes una interfaz wireguard dedicada, mientras que para un RW siempre tienes ma misma (a la hora de dar de alta el peer en el servidor). Y, si al road warriror sólo le permites que se comunique desde una IP concreta (en el allowed-address), toda comunicación que llegue al servidor ha de ir enmascarada en esa IP, o se descartará y no pasará por el túnel (es decir, no tiene sentido si lo que vas a enganchar no es un dispositivo final, porque si es un router, te forzaría a hacer masquerade del tráfico que vaya por la VPN, para que al otro extremo llegue con la IP correcta). Es decir, si tu dispositivo final es un cliente, monta un RW. Si es un router, monta mejor un STS, y sepáralo con una interfaz dedicada.

Como todo, estos son consejos, lo puedes montar como te de la gana, que para eso es tuyo el setup.

Saludos!
 
No, una cosa son las rutas, y otra los allowed-address. En el allowed-address lo único que especificas es a qué tráfico le permites el paso por el túnel. Pero el enrutado, es cosa de los extremos.
En este apartado no me explico creo.
Por ejemplo he montado en entre mi MK y mi móvil wireguard en formato RW pero solo quiero tener acceso a la LAN.
Entonces en mi móvil en allowedIP he añadido la subred de la LAN del MK y con ello tengo acceso a la LAN y el resto de trafico no va por el túnel.
La duda es esa, como sabe el móvil que tiene que enrutar el trafico de la LAN por el túnel, solamente por añadirlo en AllowedIP?.
Lo intento asemejar a openvpn que conozco y ahí es el servidor es que pasa las reglas de enrutado al cliente, y en este caso con wireguard no me aclaro.

Gracias
 
Correcto. A partir de lo que pongas en el allowed-address, se crean reglas de routing en tu dispositivo. Pero eso pasa a nivel de cliente wireguard, en el router esas rutas van a mano.

Saludos!
 
Buenas tardes, pues a ver si me podéis ayudar con la creación de wireguard para un móvil. Tengo Wireguard creado en el RB4011 y hasta ahora todo funcionaba correctamente con los creados para un macbook air, ipad air y un móvil android con lo que se supone que ya he hecho unos cuantos gracias a tu ayuda pero no consigo que conecte. El resto de peers funcionan correctamente y se ve la conexión en el gráfico de wireguard pero con el de Android no lo consigo. Estoy seguro de que las claves públicas son las correctas ya que las copio y pego pero nada de nada..... El motorola se resiste.
 

Adjuntos

  • pantallazodireccionrouter.jpg
    pantallazodireccionrouter.jpg
    142.7 KB · Visitas: 22
  • pantallazotodoslospeer.jpg
    pantallazotodoslospeer.jpg
    127 KB · Visitas: 24
  • pantallazowireguardgener.jpg
    pantallazowireguardgener.jpg
    133.9 KB · Visitas: 22
  • pantallazowireguardmovil.jpg
    pantallazowireguardmovil.jpg
    176.3 KB · Visitas: 22
Tienes la misma IP para dos Peers, corrígelo.

Saludos!
 
Muchas gracias, pokoyo. El motorola lo tenía con la .3 pero como me fallaba puse una posterior y, sin darme cuenta, puse una repetida. He puesto otra vez como .3 pero sigo igual.
 
Otra consulta!
¿Y como seria para sobre STS en la parte B que todo el trafico tire por el tunel?
Creando una nueva tabla de rutas y aplicando un routing policy. Aunque, esa opción, no está muy recomendada, porque se te cae el túnel, y adios site. Mejor enruta ambas redes entre sí, y accede desde una a otra o viceversa.

Saludos!
 
Arriba