VPN Site-to-Site (S2S) Ubuntu e Azure

Fala pessoal, tudo bem com vocês?
Hoje vou mostrar como fechar uma vpn site-to-site (S2S) simulando um ambiente com Ubuntu como gateway para conectar no ambiente no Azure.

O QUE É UMA VPN SITE-TO-SITE (S2S)?

VPN (Virtual Private Network) são túneis virtuais em cima de uma rede pública (geralmente a internet), onde 2 pontos são interligados com segurança, formando uma rede única, ou seja, VPN é uma extensão da rede local (privada) que utiliza o meio de enlace (conexão) uma rede pública (internet). A VPN S2S é um recurso onde um gateway ou roteador conecta sua rede local a rede virtual do Azure através um canal criptografado.

CENÁRIO

O QUE FOI UTILIZADO?

  • Ubuntu 18.04.4 LTS (Bionic Beaver)
  • StrongSwan 5.6.2
  • Azure VPN SKU VpnGw1

AMBIENTE DE REDE

  • 192.168.20.0/24 – Rede local (on-premise)
  • 10.0.0.0/16 – Rede Azure

CONFIGURAÇÃO AZURE

Primeiro passo é configurar o lado do Azure, para isso vamos instalar o gateway de rede virtual em nosso ambiente. Acesse o portal do Azure e procure no Market Place:

Selecione as informações abaixo:


Nome = VPN-GW (crie um de sua escolha)
Região = Mesma que se encontra sua rede
SKU = VpnGw1
Rede Virtual = Selecione a rede que estão as máquinas que você quer se comunicar
Endereço de Ip = Crie um novo ou selecione um existente

Após clicar em criar, o processo levará aproximadamente 30 a 40 minutos. Isso ocorre porque o Azure provisionará por trás dessa estrutura (que não fica visível) um servidor virtual para comportar a VPN. Após esse processo vamos abrir nosso Network Virtual Gateway e vamos clicar em Conexões para adicionar uma nova conexão:

Vamos criar um nome para essa conexão e seletionar o tipo “Site a Site (IPsec)”. Em Gateway de rede local vamos criar as configurações da outra ponta da conexão VPN:

Nesse processo, vamos configurar de acordo com as informações de seu ambiente local (On-premise)

Endereço IP = Endereço ip da Wan de seu ubuntu
Espaço de endereço = Endereçamento da sua rede local

Agora vamos criar uma chave compartilhada (que será usada nas duas pontas) e o protocolo IKEv2:

Finalizamos aqui a ponta do Azure, agora vamos configurar o lado do seu ambiente local.

CONFIGURAÇÃO AMBIENTE LOCAL (ON-PREMISE)

Primeira coisa a ser feita é instalação do strongswan, com o comando abaixo:

# sudo apt-get install strongswan -y

Agora vamos acessar o arquivo de configuração ipsec.conf com seu editor de texto favorito:

# sudo vim /etc/ipsec.conf

E vamos inserir as informações de acordo com seu ambiente:

# ipsec.conf – strongSwan IPsec configuration file
# basic configuration
config setup
        charondebug=”all”
        strictcrlpolicy=yes
        uniqueids=no
## conexao on-premise to Azure
conn local-to-azure
        authby=secret
        auto=start
        type=tunnel
        keyexchange=ikev2
        keylife=3600s
        ikelifetime=28800s
## configuracao de rede
        left=%any # ip da wan local
        leftsubnet=192.168.20.0/24 # rede-local
        right=191.234.180.9 # ip wan Azure
        rightsubnet=10.0.0.0/16 # rede-azure
        ike=aes256-sha1-modp1024
        esp=aes256-sha1

Agora vamos acessar o arquivo de configuração ipsec.secrets com seu editor de texto favorito:

# sudo vim /etc/ipsec.secrets

E vamos inserir as informações de acordo com sua rede e a chave compartilhada que você criou

IP-WAN-REDE-LOCAL IP-WAN-AZURE : PSK “AzureBrPw”

Pronto! Agora vamos dar o comando service ipsec restart para iniciar o serviço e ipsec statusall para verificar a conexão:

Nas informações acima é possível constatar que o túnel está UP e podemos testar a conexão pingando alguma máquina da sua rede do Azure:

TROUBLESHOOTING

Aqui vai alguns problemas que podem ocorrer:

  1. Erro de não achar a chave compartilhada = em alguns casos é necessário informar no arquivo /etc/strongswan.d/charon/stroke.conf a localidade do arquivo que contém a senha, para isso adicione nesse arquivo a informação abaixo:
    secrets_file = /etc/ipsec.secrets
  2. O túnel não sobe após o restart do ipsec = Você pode subir o túnel manualmente com o comando “ipsec up nome-da-conn” conforme imagem abaixo

Finalizamos por hoje! Se quiser aprender mais sobre VPN, redes, troubleshooting e muito mais, procure pela trilha de infra em www.azureacademy.com.br

Nos vemos nos próximos posts!
Até mais😉