Como configurar uma VPN Site-to-Site entre pfSense e o Azure

Uma conexão de gateway VPN Site-to-Site é usada para conectar seu ambiente on-premises a uma virtual network do Azure por um túnel VPN IPsec/IKE (IKEv1 ou IKEv2). Esse tipo de conexão requer um dispositivo VPN  localizado em seu ambiente on-premises que tenha um endereço IP Publico atribuído a ele.

Cenário:

Em nosso ambiente on-premises temos um firewall pfSense e uma máquina virtual com a função de  Domain Controller.

Descrição do ambiente on-premises:

Firewall Pfsense

Rede LAN: 10.0.1.0/24

Rede WAN: 40.88.146.139

Domain Controller (SRV-AD01)

IP: 10.0.1.5/24

Descrição do ambiente Azure:

Resource group: RG-VPN

Virtual Network:  192.168.0.0/16 (Vnet-01)

Subnet:  192.168.1.0/24 (subnet-01)

Gateway subnet: 192.168.100.0/27

Public IP: 52.170.16.37

Virtual Network Gateway

Local Network Gateway

Connection

Vamos fazer a configuração da VPN Site-to-Site no  Azure

01.  Faça login no portal do Azure http://portal.azure.com/

02. Vamos criar um grupo de recursos  chamado RG-VPN, abra o Azure Cloud Shell e execute o seguinte comando.

New-AzResourceGroup -Name ‘RG-VPN’ -Location ‘EastUS’

Observe na imagem abaixo que o Resource Group foi criado

03. Vamos criar a virtual network, subnet-01 e SubnetGateway.

Execute o seguinte script para criar a virtual network (Vnet-01),  subnet-01 e o  gateway subnet.

Pressione Control+Shift+V para colocar o script no Azure Cloud Shell

## Criar virtual network e duas subnets ##

# Variáveis
$Resourcegroup = “RG-VPN”
$Location = “EastUS”
$Vnet = “Vnet-01”
$Sub1 = “subnet-01”
$Sub2 = “gatewaysubnet”

# Criar virtual network
$virtualNetwork = New-AzVirtualNetwork -ResourceGroupName $Resourcegroup -Location $Location -Name $Vnet -AddressPrefix 192.168.0.0/16

# Adicionar uma subnet
$subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name $Sub1 -AddressPrefix 192.168.1.0/24 -VirtualNetwork $virtualNetwork

#Adicionar uma segunda subnet
$subnetConfig2 = Add-AzVirtualNetworkSubnetConfig -Name $Sub2 -AddressPrefix 192.168.100.0/27 -VirtualNetwork $virtualNetwork

# Associar a subnet à virtual network
$virtualNetwork | Set-AzVirtualNetwork

O campo Gateway subnet aparece apenas se a sua VNet não tiver um Gateway subnet. Se possível crie  um  /27 ou maior (/26, /25 etc.)

Observe na imagem abaixo que nossa virtual network e subnets foram criadas.

04. Vamos criar o IP Publico.

O Public IP address será associado ao VPN gateway.

Execute o seguinte script para criar um Public IP address do tipo basic a alocação tem que ser dinâmica porque será utilizado no virtual network gateway.

# Definindo as variáveis
$publicIpName = “PIP-VPN”
$rgName = “RG-VPN”
$location = “EastUS”

# Criar endereço IP público
$publicIp = New-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $rgName -AllocationMethod Dynamic -DomainNameLabel $dnsPrefix -Location $location

Observe na imagem abaixo que no IP Publico foi criado.

Criar o virtual network gateway

O virtual network usa uma subnet específica chamada gateway subnet. O gateway faz parte do intervalo de endereços IP da rede virtual que você especifica ao configurar sua virtual network. Ele contém os endereços IPs que os recursos e serviços do virtual network gateway usa.

Ao criar um gateway subnet, você especifica o número de endereços IPs que a subnet contém. O número de endereços IPs necessários depende da configuração do VPN gateway que você deseja criar. Algumas configurações exigem mais endereços IPs do que outras. Recomendamos que você crie uma sub-rede de gateway que use um /27 ou /28.

05.  No portal pesquise por virtual network gateways.

06. Na tela Virtual network gateways,  clique em Create virtual network gateway.

07. Na tela Create virtual network gateway, selecione um nome para o recurso, em Gateway Type selecione VPN, para o tipo de SKU selecione basic, em um ambiente de produção você deve selecionar outro tipo de SKU, em virtual network selecione a Vnet-01, o campo subnet será preenchido automaticamente porque já tínhamos criado o gatewaysubnet. Em Public IP address selecione Use existing e escolha o PIP-VPN. Deixe as demais configurações como padrão e clique em Review + create.

08. Na tela Review + create, verifique se todas as configurações estão corretas e clique em Create.

09 – O virtual network gateway está sendo provisionado.

Um gateway pode levar até 45 minutos para ser provisionado.

10.  Em seguida pesquise por virtual network gateways e observe que o gateway foi provisionado com sucesso.

Local network gateway

O local network gateway normalmente refere-se à seu ambiente on-premises. Você fornece ao site um nome pelo qual o Azure pode fazer referência a ele e especifica o endereço IP publico do dispositivo VPN on-premises ao qual você criará uma conexão. Você também especifica os prefixos de endereço IP que serão roteados pelo VPN gateway para o dispositivo VPN. Os prefixos de endereço que você especificar são os prefixos localizados na sua rede on-premises. Se sua rede on-premises mudar ou você precisar alterar o endereço IP público do dispositivo VPN, poderá atualizar facilmente os valores posteriormente.

11.  No portal pesquise por Local network gateways.

12. Na tela Local network gateways, clique em Create local network gateway.

13. Na tela Create local network gateway,  aqui iremos inserir as informações do nosso ambiente on-premisse. Em name selecione um nome para o recurso, em IP addres aqui iremos colocar o IP Publico do nosso firewall pfSense, na opção Address space selecione o range de IPs que está sendo utilizado por sua rede on-premises, selecione a assinatura, grupo de recursos, localização e clique em Create.

OBSERVAÇÃO: O endereço IP Publico é fornecido por seu provedor de internet.

14. Na tela Local network gateway, observe que o recurso foi provisionado.

Conexão VPN

Crie a conexão Site-to-Site VPN entre o virtual network gateway e seu  dispositivo VPN on-premises.

15.  No portal pesquise por Connections.

16. Na tela Connections clique em Create connection.

17. Em Connection type, selecione Site-to-Site (IPsec), selecione a assinatura, grupo de recursos, localização e clique em Ok.

18. Na tela Settings, selecione o virtual network gateway (WG-VPN), selecione o local network gateway (OnPremVPN-LNG), crie uma chave compartilhada e clique em OK.

OBS: Guarde essa chave compartilhada você ainda irá utiliza-la na configuração do pfSense.

19. Na tela Summary, clique em OK.

20. Observe que nosso recurso foi provisionado.

Agora vamos fazer a configuração da VPN Site-to-Site no pfSense.

21. Acesse a interface gráfica do pfSense, clique em VPN –> IPsec

22. Em seguida, clique em AddP1.

23. Altere as seguintes configurações no pfSense:

  • Remote Gateway  –  É o endereço IP público do  Virtual Network gateway (13.72.72.89)

Segue imagem de onde podemos localizar o endereço IP publico do virtual network gateway.

  • Pre-Shared Key – Use a chave pré-compartilhada que criamos no Connection (Pa$$w0rd)

Segue imagem de onde podemos localizar a Shared key.

Preencha as informações de acordo com a imagem abaixo.

 

24 – Clique em Save e Apply Changes.

25 –  Em seguida clique em Show Phase 2 Entreies (0).

26 – Vamos precisar do Address space da virtual network do Azure para configurar o Remote Network no pfSense,  no portal do Azure clique em virtual network, selecione a  Vnet-01 e copie o Address space 192.168.0.0/16

27 – Clique em Show Phase 2 Entries e clique em +Add P2.

28 – Em Remote Network preencha o campo com o Address space da virtual network do azure, em seguida clique em Save.

29 – Clique em  Apply changes.

30 – Agora é hora de adicionar uma regra permitindo o trafego entre as duas redes. Vai lá em Firewall, Rules e escolhe a aba IPSec e crie uma regra liberando tudo.

Verificando o status da conexão VPN

31 –  Clique em Status e IPsec.

32 – Clique em Connect VPN.

33 – Como podemos observar na imagem abaixo a conexão foi estabelecida entre o Azure e o pfSense on-premises.

34 – Retorne ao portal do Azure, pesquise por Connections e observe que a conexão  está com o Status de Connected. 

Comente suas sugestões e observações! 

Forte abraço, obrigado e até o próximo post.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *