Como Configurar Red Azure Hub and Spoke con PFsense

En este post vamos a intentar de forma simplificada como configurar una Red Hub and Spoke con conexión a nuestro red On-Prem y no morir en el intento.

Requisitos

Para crear nuestra red Hub and Spoke necesitaremos unos requisitos previos para nuestro entorno como son los Firewall.

  • Suscripción de Azure
  • Pfsense en On-Prem
  • Pfsense en Azure

Para la instalación de un PFsense en Azure sin coste adicional, tendremos que generar nuestra maquina virtual en un entorno de Hyper-V y luego subirlo a nuestra suscripción de Azure para ello podemos utilizar los siguientes post.

Mordor Blog – Instalar PFSense en Azure

Preparación Virtual Networks y Subnets

Lo primero sera crearnos los Resource Groups uno para la red Hub y otro para Spoke

Resource Groups

Virtual Networks

Crearemos nuestras virtual networks y crearemos las distintas subnets que vamos a utilizar, en mi caso utilizare los siguientes rangos:

  • 192.168.0.0/18 – Red On-Prem
  • 192.168.248.0/21 – Red Hub
  • 192.168.128.0/21 – Red Spoke

Subnets Hub

Para la red Hub necesitaremos de 3 a 4 subnets (segun el firewall que se utilice) necesitaremos las siguientes subnet:

  • 192.168.251.0 – Externa o Untrust es la que esta conectada a internet.
  • 192.168.250.0 – Interna o Trust es la que esta conectada a la red interna
  • 192.168.254.0 – GatewaySubnet red para las conexion VPN con On-Prem
  • xxx.xxx.xxx.xxx – Management red de administración para pfsense no hace falta

Para segun que tipo de Firewall, necesitaremos una red para la administración del Firewall. (por ejemplo cuando despliegas Palo Alto la maquina virtual lleva 3 vNics).

En el caso de Azure, todo el trafico interno pasa por una vNic y con enrutamientos, no se realiza como en los Firewall tradicionales con multiples Nics y cada una conectada a una red distinta.

Para las subnet podremos utilizar redes de mascara 29 nos quedaran libres 3 IPs, dependiendo de que servicio vallamos a utilizar balanceadores, multiples VPNs, …

Subnets Spoke

Para las Redes Spoke, crearemos tantas subnets como necesitemos segun nuestra segmentación.

Azure VPN S2S

Lo primero que haremos es crear nuestra conexion VPN Azure, para nuestro entorno usamos la Basic tiene una limitación de 100 Mb de ancho de banda, 10 tuneles S2S y 128 P2S el coste segun region son 23€/26$ mas la transferencia de datos a 0.07€/$ el Gb.

Virtual Network Gateway

Crearemos un resource de Virtual network Gateway.


Seleccionamos nuestra configuración:

  • Name: Nombre del resource
  • Region: Misma que el Resource Group
  • Gateway type: VPN
  • VPN type: Route based
  • SKU: Basic
  • Generation: Generation1
  • Virtual network: La que creamos antes
  • Gateway: Red para los Gateway.

Necesitaremos una nueva IP publica.

Crearemos nuestro Gateway este proceso puede tarda hasta 1 hora mucha paciencia.

Local network Gateway

Crearemos un recurso de local network Gateway, en este recurso se especificara la IP o FQDN de destino (IP publica de On-Prem) y la red de ON-Prem

Introducimos el Endpoint IP/FQDN lo que mejor nos venga.

En Address space, las redes de ON-Prem que vamos a enrutar.

Connection

Una vez que tengamos nuestro Virtual Gateway, necesitaremos crear el Connection y Local Network.

Dentro de nuestro Virtual Gateway, iremos a la opción de Connections en Settings y pulsamos en Add.

Rellenamos la información necesaria:

  • Name, nombre de la connection.
  • connection type, Site-to-site(IPsec)
  • Local network gateway, seleccionamos el que hemos creado en el paso anterior.
  • Shared key (PSK), nuestra password para la conexion que luego introduciremos en el Firewall.
  • Lo demas no lo tocamos, con la VPN Basic solo podemos utilizar IKEv2.

PFSense VPN

Ahora toca configurar nuestro Firewall PFSense para que se conecte contra Azure, vamos al lio.

Abrimos nuestro Firewall On-Prem desplegamos VPN y pinchamos en IPsec

Fase 1

Primero haremos la Fase 1, pulsamos en “Add P1”.

En General Information:

Key Exchange version IKEv2, como comentamos anteriormente con Azure VPN Basic es la unica que soporta.

Interface, WAN la que tiene acceso a internet.

Remote Gateway, IP del Gateway de Azure.

En Phase 1 Proposal (Authentication):

Pre-Shared Key, la password igual que la de Azure.

En Phase 1 Proposal (Encription Algorithm):

  • Algorithm: AES
  • Key length: 256 bits
  • Hash: SHA256
  • DH Group 2(1024 bits)

En Expiration and Replacement:

Life Time, lo ponemos a 10800.

Salvamos los cambios.

Fase 2

Una vez tengamos la Fase 1, aparecera la opcion de “Show Phase 2 Entries” pulsamos en el + y pulsamos en “+ Add P2”

Empezamos por la primera Tabla “General Information”.

  • Mode, Tunnel IPv4
  • Local Network, Podemos seleccionar una de las Subnet del FW o seleccionamos Network e introducimos el rango de red para enrutar.
  • Remote Network, el rango de red que tenemos en azure y que vamos a enrutar.

Siguiente Tabla “Phase 2 Proposal (SA/Key Exchange)”.

  • Protocol: ESP
  • Encryption Algorithms: AES – 256 bits
  • Hash Algorithms: SHA1
  • PFS key Group 2(1024 bits)

En “Expiration and Replacement”, ponemos “Life Time” a 3600

Repetiremos la Fase 2 para cada red que necesitemos enrutar.

Resultado

Nos debera quedar algo parecido a esto.

Picharemos en el desplegable de Status e IPsec, podremos ver si nuestra VPN se ha establecido.

Y en nuestro Gateway de Azure que aparezca “Connected”.

Peering Hub-Spoke

Vamos a conectar nuestra red de Hub y Spoke, para esto usaremos la opción de Peering/emparejamiento dentro de nuestras Virtual Networks.

Abrimos una de nuestras virtual network origen o destino, vamos a peering y “+ Add”


En la primera seccion “This virtual network”, especificamos el nombre del peering en esta red.

Permitimos el trafico.

VN gateway o Route Server a “None” el firewall se encarga de esto.


En la segunda seccion “Remote Virtual Network” misma configuración, pero tendremos que seleccionar la suscripcion y la Virtual Network de destino.

Repetiremos el proceso para tantas redes Spoke como necesitemos. Una vez configurado nos quedara creado el peering y en status Connected.

Peering OK

Route Table (RT)

Ahora llegamos al punto que da dolor de cabeza los enrutamientos de las redes pero vamos a ver si lo hacemos facil.

Por defecto, en Azure todas las redes que se crean estan todas enrutadas unas con otras y lo que tenemos que hacer es romper esos enrutamientos.

Necesitaremos crear un servicio de RT para cada Subnet que tengamos, 3 para Hub (Interna y externa, Gateway) 1 para cada subnet Spoke

Route Table

Solo tendremos que especificar el Resource Group y el nombre de la route table.

Ver Rutas subnet

Para poder ver que rutas se aplican a la subnet que queremos modificar, podremos verlo en nuestra RT pinchando en “Effective Routes” (Sera necesario tener una maquina en la Subnet)

Podremos ver la lista que se nos aplican seran demasiadas, tiene muchas redes internas de azure y conexion a internet.

Asociar Subnet

Lo primero que haremos será asociar nuestra RT a la subnet, esta acción se realizar para cada RT igual.

Abriremos RT y pincharemos sobre “Subnets” y pincharemos en + Associate.


Seleccionaremos la Virtual Network y subnet a la que lo asociamos.

HUB – Route Table Externa

Ahora modificaremos la tabla de rutas que estan por defecto, para la red externa unicamente necesitaremos “DENEGAR” el enrutamiento a todas nuestra redes que estan detras del FW.

Pincharemos en Routes y “+ Add”.


Ponemos un nombre.

Introducir el rango de Red

En Next Hop type a None (Para Denegar)

Repetiremos el proceso para todas nuestra redes.

Tabla de rutas

Si revisamos nuestra tabla de rutas, deberian aparecer duplicadas nuestra redes una de ella con INVALID que es la de Azure y otra Activa que es nuestra nueva ruta a None.

HUB – Route Table Interna

Para la red interna del FW cambia un poco, Denegaremos el acceso a la subnet externa y todo lo demas a la ip interna del FW.

Tabla de Rutas

Crearemos una ruta para denegar la red externa (en mi caso 192.168.251.0/24) con NONE igual que en la red externa.

Para enviar todo al FW haremos como en la foto:

Introducimos un nombre.

Red todas 0.0.0.0/0 (por defecto todo lo enviara a nuestro FW)

Type: Virtual Appliance.

Next hop: IP interna del FW 192.168.250.254

Nos deberia quedar una tabla de rutas pareceda ha esto, 0.0.0.0/0 hacia nuestro FW, tendremos la 192.168.248.0/21 que es la virtual network y por ultimo la denegación de la red externa.

Effective routes

Tambien podriamos denegar toda la virtual network 192.168.248.0/21 y crear una ruta para la virtual network 192.168.250.0/24, todo dependera de necesidades y gustos.

Nuestra tabla de rutas
Effective routes

HUB – Route Table Gateway

Igual que en la Red interna tendremos que denegar el acceso a la red Externa y en esta ocasión agregaremos rutas para las redes de Spoke.

Tabla rutas

Spoke – Route Table

Para las redes de spoke el proceso sera parecido al de Red interna, lo primero deberemos redireccionar todo (0.0.0.0/0) a la IP interna del FW, redireccionamos la VNET hacia el FW para que las distintas redes de spoke pasen por el mismo, creamos la subnet del spoke como virtual network y denegaremos el acceso a la red externa.

Route Table
Effective Routes

Repetiremos la tabla de rutas para cada subnet de Spoke cambiando los rangos de red correspondiente.

PFSENSE Static Routes

En nuestro Pfsense de Azure, tendremos que decirle que las red de On-Prem, spokes, tendra que preguntar al gateway de Azure que sera la IP 1 de rango interno en mi caso 192.168.250.1.

Este paso es recomendable configurarlo antes de subir el FW a azure para no perder conexión, si no conseguis acceso se puede crear una maquina en la red interna para conectarnos a la consola.

FIN

Con esto deberiamos poder enrutar nuestras redes por el camino correcto, ahora solo queda probar y poner vuestra rutas como mejor convenga, o extender con multiples FW azure y distintas Zonas geograficas.

Enrutamiento a travez de los dos FW On-Prem y azure hasta la maquina.

Traceroute

Un comentario

Dejar un comentario

Tu dirección de correo electrónico no será publicada.