Pfsense Configuración de VPN Punto a Punto con WireGuard.

Llego por fin la version esperada, 2.5-Release, lo publicaron el dia 17 para ser mas exacto, sin embargo hoy quiero hablar de uno de los temas que mas han hecho ruido, Wireguard.

Figura 1

Esta haciendo tanto ruido por tantas ventajas que mencionan en su pagina oficial, mencionan que configurar una VPN es tan sencillo como levantar una comunicacion SSH con llave plublica, como dicen ellos, rapido y sencillo.

Ellos se basan en protocolos de encriptacion bien seguros para que nuestra comunicacion sea imposible de descifrar por alguien intermedio, ahora otra ventaja que ellos ponen en la mesa es que por ser un software bien compacto es muy facil auditar el codigo.

En su documento original hablan de 4000 lineas de codigo vs 100,000 de Open VPN por ejemplo, al tener tan poca cantidad de lineas pues claro que rapido lo pueden auditar eso bueno para garatizar su seguridad que ofrece, pero con el desarrollo que estan teniendo deben ser mas ya, aun asi su ejecutable es pequeño, tanto que empotrarlo en un router sin problema, eso veremos mucho.

Si gustan leer el documento original lo pueden consultar en el sitio oficial de http://www.wireguard.com https://www.wireguard.com/papers/wireguard.pdf

Gracias a Netgate la empresa que esta detras de Pfsense que trabajaron duro para incluir en el kernel de FreeBSD a Wireguard y lo han logrado, ya no tenemos instalar nada, ya viene incluido, la tenemos de ganar.

Por ello les voy a indicar como configurar una VPN Punto a Punto con Pfsense 2.5-Release, vamos comunicar 2 redes, una localizada en Tijuana, B.C, Mexico y otra en Ensenada, B.C. Mexico.

Si han algo similar con OpenVPN o IPSEC, van ver que es cierto lo que dicen los creadores de Wireguard, simple y sencillo.

Nota: Si quieres ver el video en YouTube de este Post da click aqui ==> https://youtu.be/oksUoBf066I

Empezamos con el diagrama de las redes a unir.

Figura 2.

Para Wireguard no existe el termino, cliente-servidor, para ellos son 2 nodos que se quieren comunicar, a diferencia de IPSEC o OpenVPN que fueron creados con esa metodologia.

Al nodo de Tijuana lo llamaremos: WTJ1.

A el de Ensenada: WENS1.

El nodo de Tijuana el proveedor de Internet es un tipo residencial 50Mb/20Mb(en teoria) la conexion es tipo PPPoE.

El nodo de Ensenada es un proveedor empresarial 5MB/5MB.

Ya que tengamos los tuneles van a ver la diferencia entre uno residencial vs un empresarial aquellos que no hayan trabajado con el tiempo dedicado.

Ahora si comenzamos.

Paso 1. Configurar Nodo de Tijuana.

Figura 3.
Figura 4.

Agregamos Tunel como indica la figura 4.

Figura 5. Nodo Tijuana.

Address => Es una red que no usemos dentro de la organizacion, misma analogia con OpenVPN, se creara un tunel virtual en esta red y no debe chocar con ninguna red de nuestra organizacion. Observen la figura 2, el de Tijuana le asigne el IP 10.10.100.1 y Ensenada 10.10.100.2.

Puerto default: 51820 ese no lo cambiare.

Interface Keys ==> Estas las generamos con el boton de la derecha “Generate”.

Recuerden que la llave privada esa nadie la debe conocer solo nuestro equipo y la publica es la que vamos a compartir, lo mismo que SSH.

Figura 6.

Al final salvamos y queda el primer paso como la figura 6, ahora nos vamos a Ensenada y hacemos lo mismo, claro con sus propios parametros.

Paso 2. Configuración Nodo Ensenada.

Figura 7. Nodo Ensenada.

Paso 3. Regresamos a el nodo de Tijuana y vamos a agregar el nodo de Ensenada.

Figura 8. Editamos el tunel de Tijuana.
Figura 9. Agregamos un Peer(Nodo).
Figura 10.

Si observan la figura 10.

Endpoint ==> aqui va el IP Publico del nodo de Ensenada, ya que por ahi llegara el trafico cuando ese nodo necesite comunicarse con este nodo.

Endpoint port ==> el blanco, usare el puerto de fabrica (51820).

Public Key ==> La llave publica del nodo de Ensenada, ver figura 7.

Allowes IPs ==> Aqui es donde le indicamos que redes remotas van a cruzar por este tunel, si hay mas de 1 red aqui las agregan, yo ademas indique el mismo tunel virtual del nodo Ensenada(10.10.100.2/32) tambien se podran comunicar, recomendable si hay problemas y necesitamos hacer prueba de comunicacion entre ambos nodos.

Peer WireGuard Address ==> No lo requiero por el momento.

Pre-shared key ==> Es una llave compartida para agregar extra proteccion a la comunicacion, lo vale.

Al final click en el botón Update y listo.

NOTA: Campo Keep alive, para Wireguard los nodos no se estan probando como lo hace por ejemplo OpenVPN, que estan constantemente enviadose pings para saber si el otro extremo esta disponible o tambien IPSEC, Wireguard dice ser un sistema silencioso de fabrica, no se esta pingeando constantemente, la comunicacion inicia cuando uno de los nodos lo requiere, pero ellos dicen que abra situaciones donde es necesario que los nodos se envien un saludo(ping) para indicar que estan en linea y mas cuando haya equipos intermedios en la comunicacion como un router arriba de Pfsense por ejemplo, de este manera el router no cortara la comunicacion si no ve trafico, en mi caso no tengo equipo intermedio asi que no requiero este campo, pero aqui si ustedes lo desean pueden poner una valor como 20(segundos), Wireguard enviara un ping cada 20 segundos a el otro nodo para saludarlo, una vez que ustedes levanten su VPN sabran si necesitaran este campo con el paso del tiempo.

Paso 4. Vamos a repetir el paso 3 pero ahora con el nodo de Ensenada.

Figura 11. Agregando nodo de Tijuana en Nodo Ensenada.

Asi quedaria la configuracion final del nodo de Ensenada.

Figura 12.

Hasta aqui tenemos ya configurado ambos nodos, es la primera fase. Con eso les debe aparecer una nueva interfaces en sus pfsense llamada “wg0”, si tuvieran otro nodos mas habria 2 interfaces “wg1” asi sucesivamente.

Figura 13.

Paso 5. Agregamos la interfaz virtual en nodo Tijuana para uso.

Figura 14.
Figura 15.

Al final le damos click en el boton “Save” y quedaria similar a la siguiente imagen.

Figura 16.

En la misma pantalla de la figura 16, le damos click a la interfaz de nombre “OPT1”, en su caso puede tener otra numeracion, esto nos llevara a la seccion de configuracion de la interfaz como lo indica la siguiente imagen.

Figura 17.
Figura 18.
Figura 18.

Para poder ver la interfaz, nos vamos a Status -> Interfaces y tendras algo similar a esto.

Figura 19. Interfaz WG0 Tijuana.

Paso 6. Repetimos el paso 5 pero en el nodo de Ensenada.

El resultado quedarias similar a la figura 19.

Figura 20. Interfaz WG0 Ensenada.

Hasta aqui ya tenemos ya los tuneles listos para comunicarse, lo que sigues es abrir el trafico en el firewall a nivel WAN, ya que Pfsense de fabrica sus WAN’s no permiten ningun paquete de entrada. Entonces vamos por el Port-forward.

Paso 7. Abrir el trafico en la WAN para permitir que el nodo de Ensenada establezca comunicacion con el nodo de Tijuana, menu Firewall -> NAT -> Port Forward.

Figura 21.
Figura 22.
Figura 23.
Figura 24.

Paso 8. Repetimos el paso 7 pero en el nodo de Ensenada.

Figura 25.

La pantallas son similares, no se vayan a confundir durante la configuracion.

En este momento ambos nodos ya pueden hablarse a nivel WAN, nos falta lo ultimo que es abrir el trafico a nivel LAN para que ahora si haya comunicacion entre las redes que estan detras de cada Pfsense(nodo), para ellos iniciamos con el nodo de Tijuana.

Vamos el menu “Firewall -> Rules” y van a ver 2 nuevas interfaces, nosotros nos vamos por la que se llama “Wireguard”, de fabrica no tiene ninguna regla por lo tanto no hay comunicacion.

En el Pfsense de Tijuana tendriamos algo similar a la siguiente imagen.

Figura 26.

La interfaz WG0 no se preocupen por ella, todo lo haremos en la marcada de la figura anterior como “Wireguard”, vamos agregar las siguientes reglas:

  • Ping interfaz Wireguard a interfaz Wireguard ambos lados.
  • Ping interfaz Wireguard a Lan.
  • Ping Lan a Lan.
  • Acceso a compartidos de Windows puerto 445/139 TCP.
  • Acceso a VNC de Lan a Lan.
  • Acceso a Escritorio Remoto de Lan a Lan.

Paso 9. Abrir los puertos indicados en el nodo de Tijuana.

NOTA: Recuerden que el origen es el nodo de Ensenada, asi vean la comunicacion.

Figura 27.
Figura 28.

Estamos siendo bien especificos sobre que es lo unico que deseamos puedan acceder desde la red de Ensenada, como regla de oro, solo abran lo necesario. Sus reglas quedarian como lo indica la figura anterior.

Paso 10. Repetir el paso 9 pero en Pfsense Ensenada.

Recuerden que el origen es el nodo de Tijuana.

Figura 29.

Hasta aqui podemos decir que ya debemos tener comunicacion entre ambas redes.

Paso 11. Prueba de fuego, pruebas de comunicación (Ping).

Menu -> Diagnostics -> Ping

Ping desde Wireguard Tijuana a Wireguard Ensenada.

Figura 30.

Ping Wireguard Tijuana a Windows 10 Ensenada (192.168.5.49).

Figura 31.

Ping desde Windows 10 Tijuana a Windows 10 Ensenada.

Figura 32.

Repetimos las pruebas ahora desde nodo Ensenada a Tijuana.

Figura 33.

Ping desde Wireguard Ensenada a Windows 10 Tijuana(192.168.15.99).

Figura 34.

Ping desde Windows 10 Ensenada(192.168.5.49) a Windows 10 Tijuana(192.168.15.99).

Figura 35.

Vamos transferir archivos desde Tijuana a Ensenada.

Figura 36.

Vamos transferir archivos desde Ensenada a Tijuana.

Figura 37.

Lo que deseo mostrar es que ya tenemos una VPN operando, ambas redes detras de Pfsense se estan comunicando que es la finalidad de este post.

A nivel GUI no tenemos mucha informacion del estatus de Wireguard, en los logs aun no tiene su seccion particular como OpenVPN o IPSEC.

Figura 38.

Si nos vamos a el Menu VPN -> WireGuard y le damos click en el boton “Show peers” tendremos algo como la figura siguiente.

Figura 39.

O en la consola tenemos el comando sencillo que usa Wireguard, pero aun le falta a estos por reparar el equipo detras de PFsense.

Figura 40.

Listo.

Resumen.

Como pudimos observar, muestro muchas pantallas por el paso a paso, pero cuando lo lleven a cabo no quedran volver a OpenVPN o IPSEC por la simplicidad para configurar una VPN entre 2 equipos con Pfsense+WireGuard.

Lo que sigue es comparar lo mismo pero con OpenVPN e IPSEC para ver es verdad que nos debe dar mejor rendimiento.

Nos vemos pronto!!!

8 thoughts on “Pfsense Configuración de VPN Punto a Punto con WireGuard.

    1. Para que 2 servicios como tal se puedan comunicar deben tener rutas ambos, ya que aqui es tema de rutas de comunicacion. OpenVPN si las expone y se pueden manipular, IPSEC dentro de PfSense solo en modo VTI lo permite y asi pueden hablarse entre ellas, IPSEC modo clasico no lo permite ya que no expone sus rutas, saludos.

      Like

  1. Puede que la pregunta sea muy simple pero para interconectar dos sitios, necesitas en cada zona una ip fija y estar fuera de la NAT de la compañia que provee internet no?
    Y en caso de solo tener en un sitio ip fija, se puede centralizar esos archivos en donde esta la ip fija y guardarlos ahi y asi no necesitar la segunda ip fija?

    Like

    1. No necesariamente debes tener IP fija, ya que muchos ISPs te entregan IP’s publicas y podemos hacer uso de programas como dyndns y aparte tu direccion publica lo mas sano seria que no tuviera ningun equipo antes de salir a Internet, de lo contrario tienes que abriri puertos 1ro en el router arriba antes de llegar a tu wan lo cual muchos proveedores a veces te niegan esta posibilidad. Ya solo es saber cual es tu caso? saludos.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s