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

Buenos días, a ver si se os ocurre algo porque estoy totalmente desconcertado.
2 routers conectados via wireguard STS.
El router 1, principal, tiene clientes varios que salen a internet por el, los roadwarriors no tienen problema alguno.
El router 2, que es un cliente STS, envía su tráfico de internet via wireguard, y esto parece funcionar bien, si tu haces tracerts tienen buena pinta, pero los disposivos conectados a el, cuando intentan conectarse a ciertas webs o no se cargan y dan timeout (curiosamente haces un tracert y sale aparentemente bien) o puede pasar que no se carguen ciertas partes de la web.
Asumo que pueda ser problema de la regla de masquerade, pero es que es sencilla:
Código:
 1    ;;; WG gateway
      chain=srcnat action=masquerade src-address=192.168.101.0/24
      out-interface=WG log=no log-prefix=""

Y es que no el encuentro lógica, adslzone.net funciona perfecto, el www.elcorteingles.es igual, pero carrefour.es no carga, y es.aliexpress.com no carga las imágenes, por ejemplo.

La regla masquerade del router 1 es mas simple, enmascara todo lo que sale por WAN.

¿que puede estar pasando?

Diría que el problema es el router 2, porque todo el que se conecta como roadwarrior no tiene problema de cargar esas mismas webs.
Hola,

Si el traceroute va bien pero no resuelven las páginas, tiene toda la pinta de tener problemas con las dns que tengas configuradas.

S@lu2.
 
Hola,

Si el traceroute va bien pero no resuelven las páginas, tiene toda la pinta de tener problemas con las dns que tengas configuradas.

S@lu2.
Eso pensaba yo, pero tanto los roadwarriors como los STS tiran del pihole que tengo montado.
Además si mando el tráfico de internet por la WAN en lugar de wireguard, pero usando igualmente como DNS pihole que está en el otro extremo del tunel funciona bien.
Creo que es algo del doble o triple nat que hace al salir por wireguard.
 
El router 2, que es un cliente STS, envía su tráfico de internet via wireguard, y esto parece funcionar bien, si tu haces tracerts tienen buena pinta, pero los disposivos conectados a el, cuando intentan conectarse a ciertas webs o no se cargan y dan timeout (curiosamente haces un tracert y sale aparentemente bien) o puede pasar que no se carguen ciertas partes de la web.
Asumo que pueda ser problema de la regla de masquerade, pero es que es sencilla:
Eso no es un sts, es un road warrior más. Un sts vale para comunicar dos o más segmentos LAN entre sí. Lo que tú pretendes es que el router b se comporte como un roadwarrior más, enrutando todo su tráfico vía el túnel.

A la interfaz wireguard no necesitas hacerle un masquerade.

Te pueden estar pasando dos cosas:
- DNS: lo que ya te han comentado, saca de la ecuación el pi-hole y pruébalo con un dns público directamente. A mi me está dando guerra el pi-hole desde la última actualización, hay páginas que se me quedan cargando de manera infinita, y no acabo de dar con el problema (la web parece que carga, pero hay componentes, sospecho que parte de los bloqueados, que se quedan en loop intentando cargar) .
- Un problemas del tamaño del MSS en las conexiones tcp sync: este cálculo, que de normal pasa de forma automática, te puede pasar que algún servidor no lo haga automático, y te toque hacerlo a mano. Me ha pasado también recientemente, con un STS de verdad, al tratar de acceder vía web a la consola de administración de un switch gestionable. No había manera de acceder, y sin embargo al resto de dispositivos, incluidos los routers mikrotik, podía acceder sin problema desde la LAN opuesta. Curiosamente, conectado vía VPN a mi propio router, sí que podía acceder al switch del lado opuesto del STS. Al ajustar el MSS vía mangle, problema resuelto.

No obstante me da que, por lo que comentas, tienes algo más ese tema pendiente. Adjunta si quieres la configuración y lo vemos, lo primero es hacer bien el STS, si es lo que necesitas.

Saludos!
 
- Un problemas del tamaño del MSS en las conexiones tcp sync: este cálculo, que de normal pasa de forma automática, te puede pasar que algún servidor no lo haga automático, y te toque hacerlo a mano. Me ha pasado también recientemente, con un STS de verdad, al tratar de acceder vía web a la consola de administración de un switch gestionable. No había manera de acceder, y sin embargo al resto de dispositivos, incluidos los routers mikrotik, podía acceder sin problema desde la LAN opuesta. Curiosamente, conectado vía VPN a mi propio router, sí que podía acceder al switch del lado opuesto del STS. Al ajustar el MSS vía mangle, problema resuelto.

Esto era, gracias.
Código:
      chain=forward action=change-mss new-mss=1376 tcp-flags=syn protocol=tcp
      tcp-mss=!0-1376 log=no log-prefix=""

He tirado de aquí: https://forum.mikrotik.com/viewtopic.php?p=274846 para calcular los 1420 - 44, si pongo más de 1376 empieza a haber partes de las webs que no se cargan.

Lo que no acabo de entender es lo de no hacer masquerade a wireguard, si no aplico masquerade tal como abajo, no llego a las webs que están en la red del router 1 ni a las que salen a internet por este router 1, estando detrás de router 2.

Código:
 1    ;;; WG-1 - WG contra router 1 desde la subred 192.168.101.0
      chain=srcnat action=masquerade src-address=192.168.101.0/24
      out-interface=WG log=no log-prefix=""

2    ;;; WG-1 - WG contra router 1 desde la subred 192.168.100.0
      chain=srcnat action=masquerade src-address=192.168.100.0/24
      out-interface=WG log=no log-prefix=""

3    ;;; WG-2 - WG contra una raspberry en otra red que tengo recursos
      chain=srcnat action=masquerade dst-address=192.168.0.0/24 log=no
      log-prefix=""

La subred 101 da acceso a todo. Mientras que la subred 100 solo da acceso a DNS en raspberry y un par de recursos web, y a internet por router 1.
 
Última edición:
Lo que no acabo de entender es lo de no hacer masquerade a wireguard, si no aplico masquerade tal como abajo, no llego a las webs que están en la red del router 1 ni a las que salen a internet por este router 1, estando detrás de router 2.

Código:
 1    ;;; WG-1 - WG contra router 1 desde la subred 192.168.101.0
      chain=srcnat action=masquerade src-address=192.168.101.0/24
      out-interface=WG log=no log-prefix=""

2    ;;; WG-1 - WG contra router 1 desde la subred 192.168.100.0
      chain=srcnat action=masquerade src-address=192.168.100.0/24
      out-interface=WG log=no log-prefix=""

3    ;;; WG-2 - WG contra una raspberry en otra red que tengo recursos
      chain=srcnat action=masquerade dst-address=192.168.0.0/24 log=no
      log-prefix=""

La subred 101 da acceso a todo. Mientras que la subred 100 solo da acceso a DNS en raspberry y un par de recursos web, y a internet por router 1.

Me respondo por si a alguien le sirve, si no hay rutas del otro lado del tunel, efectivamente esto es un roadwarrior como comentaba Pokoyo.
Por lo que necesitas el masquerade, porque si no los paquetes irán con la cabecera original, y el router de destino no sabrá que hacer con ellos.

Rutas en un lado con masquerade.
Rutas en dos lados sin.

Era bastante obvio pero estamos espesos.
 
En mi caso configurados ya los túneles para dos iphones y un ipad, vamos, los terminales móviles de casa para que cuando estamos fuera podamos navegar sin publi gracias a la pihole así como ver contenido del nas de casa.

Una cosa: no sé vosotros, pero yo con fibra 300Mb de movistar, no soy capaz de ver vídeos en 720p en remoto usando el tunel, con vlc accediendo a carpeta compartida SMB. Se corta... y no es la velocidad de acceso de los terminales móviles (4g, o fibra 1gb) sino que viendo la grafica de desempeño de la seccion wiregard del mikrotik, no consigue pasar de 10mpbs...

En esa grafica trataba de reproducir un 1080p h264 y como digo, iba a trompicones...

Screen Shot 2022-06-24 at 17.52.23.png
 
Última edición:
@mikeflight, mira a ver si puedes hacer alguna prueba de velocidad al NAS que no implique SMB. Por ejemplo, corriendo en docker algún contenedor tipo OpenSpeedTest. O, alternativamente, prueba a copiar un fichero desde un ordenador.

En mi experiencia, si desde un iphone/ipad trato de ver algo por SMB a través de wireguard, el rendimiento es muy pobre, en línea con lo que dices. Sin embargo, si corro un test como los que te comentaba, o trato de ver un vídeo a través de una app especializada como Plex/Jellyfin, el rendimiento es muy bueno (90/95 mbps, que es lo que da el wifi al que estoy conectado ahora mismo). Por lo tanto, me pega que es un problema de cómo gestiona el iphone el acceso SMB a través de VPN.

Saludos!
 
Tengo creado en Mikrotik un servidor Wireguard con varios peers. Me gustaría que algunos de estos peers (4 peers) no accedieran a toda mi Lan, sólo accediera a dos dispositivos de mi red por lo que bloqueo el acceso a las ips sensibles de mi red. He creado una regla drop que hace bien su función:

Código:
add action=drop chain=forward comment=\
    "wireguard bloquea acceso a nas" dst-address=\
    192.168.88.73 src-address=192.168.50.3

Como puedo crear una regla que abarque más dst-adress para bloquear el acceso a estos dispositivos así como agregar más ips en src-address, he estado investigando la opción de adresses list para crear un listado de ips y así agregarla pero creo que ese no es el camino.
 
Tengo creado en Mikrotik un servidor Wireguard con varios peers. Me gustaría que algunos de estos peers (4 peers) no accedieran a toda mi Lan, sólo accediera a dos dispositivos de mi red por lo que bloqueo el acceso a las ips sensibles de mi red. He creado una regla drop que hace bien su función:

Código:
add action=drop chain=forward comment=\
    "wireguard bloquea acceso a nas" dst-address=\
    192.168.88.73 src-address=192.168.50.3

Como puedo crear una regla que abarque más dst-adress para bloquear el acceso a estos dispositivos así como agregar más ips en src-address, he estado investigando la opción de adresses list para crear un listado de ips y así agregarla pero creo que ese no es el camino.
Metiendo origen y destino en una lista de direcciones, y modificando la regla de firewall para que trabaje sobre listas, en lugar de IPs.

Saludos!
 
Buenas estoy probando la configuración de Wireguard pero tengo problemas si conecto el Iphone apenas transmite datos y no carga nada y si intetno conectar el pc o el mac estos ni siquiera se conectan.

Alguna idea de por que pasa esto?

Gracias y saludos.
 
Buenas estoy probando la configuración de Wireguard pero tengo problemas si conecto el Iphone apenas transmite datos y no carga nada y si intetno conectar el pc o el mac estos ni siquiera se conectan.

Alguna idea de por que pasa esto?

Gracias y saludos.
Wireguard levanta el túnel cada uno de un lado. Así que es posible que tú levantes el túnel de un lado y creas que el túnel está levantado de ambos, y no. Para eso, mira los logs y el handshake si se ha dado.

Saludos!
 
Wireguard levanta el túnel cada uno de un lado. Así que es posible que tú levantes el túnel de un lado y creas que el túnel está levantado de ambos, y no. Para eso, mira los logs y el handshake si se ha dado.

Saludos!

Desde el iphone si que se conecta y si se da handshake, pero es imposible navegar ya que no carga nada y los datos enviados que aparecen desde la app son de apenas 14 kib es muy poco, no se que estará mal configurado
 
Desde el iphone si que se conecta y si se da handshake, pero es imposible navegar ya que no carga nada y los datos enviados que aparecen desde la app son de apenas 14 kib es muy poco, no se que estará mal configurado
Tienes un dns público puesto?

Saludos!
 
He probado poniendo otros dns como los de google y también el pi hole y nada, hay handshake pero no puedo navegar y apenas se transmiten datos entre el iphone y el router.

Seguramente me falte alguna regla en el firewall pero no sé cual.

Si se os ocurre algo estaré altamente agradecido.

Saludos.
 
He probado poniendo otros dns como los de google y también el pi hole y nada, hay handshake pero no puedo navegar y apenas se transmiten datos entre el iphone y el router.

Seguramente me falte alguna regla en el firewall pero no sé cual.

Si se os ocurre algo estaré altamente agradecido.

Saludos.
Pasa export del router y de la configuración del túnel en el teléfono.

Saludos!
 
Conseguí que funcionara en el Iphone desactivando la entrada de Wireguard de la lista de Wan, aunque en el mac sigue fallando al menos ya se que funciona.

Gracias por todo y un saludo.

Edit: Ya funciona en el mac y pc también.

Saludos.
 
Última edición:
Buenas, una preguta, que diferencia hay de hacer la conexion site to site en dos direcciones vs en una sola direccion, osea conectando solo como cliente a un servidor sin que el "servidor" establezca conexion. He probado de las dos formas y no veo ninguna diferencia respeto rendimiento.
 
Buenas, una preguta, que diferencia hay de hacer la conexion site to site en dos direcciones vs en una sola direccion, osea conectando solo como cliente a un servidor sin que el "servidor" establezca conexion. He probado de las dos formas y no veo ninguna diferencia respeto rendimiento.
Que, si se cae, y el cliente no “rellama”, se mantendrá caída más tiempo que si ambos extremos tienen los dos roles.

Saludos!
 
Hola!

Estoy montando un enlace entre dos sedes (con dos HEX). El paso en el que hay que hacer

Código:
/ip firewall filter
add action=accept chain=input comment="vpn: allow wireguard-sts" \
    dst-port=12346 protocol=udp \
    place-before [find comment="defconf: drop all not coming from LAN"]

Me da error en ambos HEX. Me dice: "no such item".

¿Alguna idea?
 
Arriba