Llegó la navidad y es hora de armar el arbolito. En otro momento escribí un post explicando como conectar una VPN Site to Site con Wireguard. (https://www.nerdadas.com/blog/vpn-site-to-site-con-wireguard/). Esta vez es una VPN Road Warrior, algo que va mejor en una empresa donde sus empleados se conectan a la sucursal central remotamente a diario.

Las interfaces Wireguard en el router no tienen la capacidad de correr un dhcp-server, por lo tanto las ips se agregan estaticamente. Esto provoca que muchas veces sea la gente de TI quienes tengan que configurar la vpn manualmente en cada equipo y no que el usuario haga selfservice siguiendo un manual. De la misma manera, como en el ejemplo que vamos a ver, si hubiera redes detrás deberemos agregar los ruteos a mano.

Consejos… para la vida!

Antes de empezar tomemos nota de todo. Creemos un diagrama, agendemos ips públicas, privadas y las ips que vamos a usar para la comunicación interna de la VPN (10.0.0.0/24).

En el gráfico navideño está bien detallado.

Datos de cada nodo

Estos datos no son reales, son de un entorno emulado y con el propósito de crear el lab.

Router1

IP Pública: 192.168.122.200
Endpoint Port: 9928
Public Key
kFagCslLeiYJ+Crh1xtJjZfhlrp6gdOKhwTLm/p/aQs=

Router2

IP Pública: 192.168.122.171 para los ansiosos… pero no importa!
Endpoint Port: 9928
Public Key
jGaVAxuq3IXqPomMxoWG3ZNDKcKe/6eqR1XJ6Xgcln8=

Router3

IP Pública: 192.168.122.123 para los ansiosos… pero no importa!
Endpoint Port: 9928
Public Key
CNCPMGpXdxnPQ1V9nsGpt5vRv9PT8ssOQQffGUm/nlQ=

Configuración Routers

Para no ser redundante voy a incluir las configuraciones gráficas solo del Router1 y luego todas las configuraciones de consola.

Doy por sentado que detrás de cada router está configurada la red por dhcp (192.168.x.0/24).La WAN de cada router es la ether1 y la LAN la ether2. La WAN tiene configuración DHCP-Client y la LAN estática(obviamente).

No configuro reglas de firewall pero si NAT para que salgan a internet los equipos que están detrás.

Los pasos a seguir en Router1:

  • Nueva Interfaz Wireguard (Agendar Public Key y Puerto local del Endpoint)
  • Agregar IP Interfaz Wireguard recién creada
  • Configuración de Peer (Como es Road Warrior no vamos a incluir información en el Endpoint, donde normalmente iría la IP).
    Agremos endpoint-port, Allowed Address(redes que van a pasar por el tunel) y Public Key (la del Router que va a conectar).
    En Private key ponemos «None», usará la Private Key que ya se configuró en la interfaz
  • Agregar routeos para la red remota (/ip/route red de destino – Gateway (ip de vpn)).

Les dejo la configuración Completa:

#Interfaz para la VPN
/interface wireguard
add comment=WG listen-port=9928 mtu=1420 name=wg1
#Configuración de DHCP
/ip pool
add name=dhcp_pool0 ranges=192.168.10.2-192.168.10.254
/ip dhcp-server
add address-pool=dhcp_pool0 interface=ether2 name=dhcp1

#El peeer!!! (o los peers)
/interface wireguard peers
add allowed-address=10.0.0.0/24,192.168.20.0/24,192.168.10.0/24 comment=\
    aRouter2 endpoint-port=9928 interface=wg1 name=peer1 public-key=\
    "jGaVAxuq3IXqPomMxoWG3ZNDKcKe/6eqR1XJ6Xgcln8="
add allowed-address=10.0.0.0/24,192.168.10.0/24,192.168.30.0/24 comment=\
    aRouter3 endpoint-port=9928 interface=wg1 name=peer2 public-key=\
    "h0BQzoGOFpxD6/0eNvQEEd1/Puy56F3XvyQr7lOShgM="
#Todas las ips
/ip address
#LAN
add address=192.168.10.1/24 comment=LAN interface=ether2 network=192.168.10.0
#Punto de VPN local
add address=10.0.0.1/24 comment=WG interface=wg1 network=10.0.0.0
#WAN
/ip dhcp-client
add interface=ether1
#La otra parte del DHCP
/ip dhcp-server network
add address=192.168.10.0/24 gateway=192.168.10.1
#NAT
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
#Routas a los peer
/ip route
add disabled=no distance=1 dst-address=192.168.20.0/24 gateway=10.0.0.2 \
    routing-table=main scope=30 suppress-hw-offload=no target-scope=10
add disabled=no dst-address=192.168.30.0/24 gateway=10.0.0.3 routing-table=\
    main suppress-hw-offload=no
/system identity
set name=Router1

Routers 2 y 3

Para los routers clientes va la configuración de Wireguard nada más, todo lo demás repite como en el primero.

/interface wireguard
add comment=WG listen-port=9928 mtu=1420 name=wireguard1

/interface wireguard peers
add allowed-address=10.0.0.0/24,192.168.10.0/24,192.168.30.0/24 \
    endpoint-address=192.168.122.200 endpoint-port=9928 interface=wireguard1 \
    name=peer1 public-key="kFagCslLeiYJ+Crh1xtJjZfhlrp6gdOKhwTLm/p/aQs="
/ip address
add address=10.0.0.3/24 comment=WG interface=wireguard1 network=10.0.0.0
/ip dhcp-client
add interface=ether1

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1

/ip route
add dst-address=192.168.10.0/24 gateway=10.0.0.1
/system identity
set name=Router3

Router2

/interface wireguard
add comment=WG listen-port=9928 mtu=1420 name=wg1

/interface wireguard peers
add allowed-address=10.0.0.0/24,192.168.10.0/24,192.168.20.0/24 \
endpoint-address=192.168.122.200 endpoint-port=9928 interface=wg1 name=\
peer1 public-key="kFagCslLeiYJ+Crh1xtJjZfhlrp6gdOKhwTLm/p/aQs="
/ip address
add address=10.0.0.2/24 comment=WG interface=wg1 network=10.0.0.0

/ip firewall nat
add chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether1

/ip route
add disabled=no distance=1 dst-address=192.168.10.0/24 gateway=10.0.0.1 \
routing-table=main scope=30 suppress-hw-offload=no target-scope=10
/system identity
set name=Router2

Diferencias con Site to Site

La gran diferencia entre la VPN Road Warrior y Site to Site en Wireguard es que, en los clientes solamente, pondremos la IP del router que actuará de Server en el campo Endpoint.

En el server (porque espera a cualquier cliente) no pondremos ningún endpoint. Esto hará que la VPN funcione aún detrás de un NAT.

Y desde mi IPhone y desde Windows? como me conecto?

Wireguard corre en casi cualquier sistema operativo. Las siguientes imágenes están tomadas desde la documentación oficial: https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard donde explica claramente lo mismo que te explico en este post.

Para instalarlo en tu equipo o tu iphone, siguiendo el ejemplo de nuestro laboratorio, tu Iphone sería el Router2 y deberíamos poner en la configuración:
Address: 10.0.0.2
Public Key: lSvF97ANzXwS3DMRIHrnXQT+za+4bnXZC3Yx2lrmlSI=
Endpoint: 192.168.122.200:9928
Allowed Ips: Está correcto en la imagen 0.0.0.0/0 se refiere a todo.

En Windows, bajamos el cliente desde: https://download.wireguard.com/windows-client/

Presionamos en «Import tunnel» y el archivo que importamos debería contener algo como lo siguiente

[Interface] 
PrivateKey = tuclave, esta a nadie le interesa mas que a vos 
Address = 10.0.0.2/24 
DNS = 10.0.0.1 
[Peer] 
PublicKey = lSvF97ANzXwS3DMRIHrnXQT+za+4bnXZC3Yx2lrmlSI= 
AllowedIPs = 0.0.0.0/0 
Endpoint = 192.168.122.200:9928

Conclusión

Si bien Wireguard es una red de despliegue rápido con pocas configuraciones no tiene aún el dinamismo para que sea el propio usuario quién haga las configuraciones correspondientes. Tampoco admite 2FA ni tiene integración con usuario y clave de un server de identidad centralizado.

Que Wireguard soporte el modo Road Warrior, a mi parecer, no la hace la mejor opción para este tipo de VPN. Recomendaría que uses OpenVPN en estos casos ya que tiene mucha más integración y está especificamente diseñada para funcionar de esta manera.

Sin embargo, Wireguard es una VPN de las más fáciles de implementar y con muy poco overhead, lo que la hace extremadamente útil.

Por Jeremías Palazzesi

Solucionador de Problemas Senior!. No podés con algo?, probá conmigo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *