Faaaaaala seus trem bunito!! Tudo bem com vocês?
Comigo tá tudo sussa! (Graças à Deus!)
No post anterior eu falei sobre VPN no Azure, (basicamente eu falei bem sobre os tipos de protocolo, etc), e inclusive demonstrei como criar uma VPN S2S no Azure (Site-to-Site).
Porém no post anterior falei também sobre um outro tipo de conexão VPN disponível no Azure, que é a VPN P2S (Point-to-Site).
Imagine o seguinte cenário:
Você é proprietário de uma empresa de bebidas e possui uma infraestrutura bem complexa. Porém, você migrou muitas aplicações e serviços para o Azure, para aliviar sua infra local, e claro trazer mais performance. Porém, você possui muitos vendedores externos que utilizam esses recursos que estão na nuvem (Azure), mas você precisa assegurar que eles possam acessar esses sistemas, sem a necessidade de estar dentro da empresa.
Isso é possível?
Claro! Os colaboradores podem acessar esses recursos que estão no Azure à qualquer momento, de qualquer lugar, desde que tenham um acesso à internet, fechando a comunicação através de uma: VPN P2S (Poin-to-Site).
VPN P2S (Point-to-Site): É um outro modelo de implantação porém, é voltado para conexão de um único dispositivo (independente de onde você esteja) com o Azure. Utiliza o protocolo SSTP (Secure Socket Tunneling Protocol) baseado em SSL, porém tem suporte apenas em plataformas Windows.
[Gateway Virtual]: É um Gateway de Comunicação que envia o tráfego criptografado em uma conexão pública para a conexão local. Basicamente, é composto por duas ou mais máquinas virtuais que são implantadas em uma subnet específica (GatewaySubnet). Essas máquinas são transparentes à nível de usuário (ou seja, você não vê essas máquinas no portal). Elas contém as tabelas de roteamento e os serviços específicos desse gateway. Por isso o Gateway Virtual pode demorar até 45 minutos para ser criado, pois as VMs do Gateway são implementadas com configurações específicas, e inerentes ao ambiente a ser criado.
Os tipos de gateway são:
Tipo | Máximo de Túneis | Máximo de Conexões P2S | Máximo da Tx de Transferência |
VpnGw1 30 128 650 Mbps
VpnGw2 30 128 1 GbpS
VpnGw3 30 128 1,25 Gbps
Básico 10 128 100 Mbps
Obs.: Cada Gateway possui suas limitações e consequentemente, cobrança diferente. Logo, muito cuidado ao criar um Gateway no Azure.
- Há uma limitação de 128 Hosts da própria plataforma. Logo, caso tenha a necessidade de ter mais de 128 acessos simultâneos outro Gateway deve ser criado.
- É possível aproveitar um Gateway de VPN já existente na assinatura. Ou seja, se você possui uma VPN S2S, você pode aproveitar o mesmo gateway para configurar o acesso P2S.
- A princípio (Nov/2017), esse método de conexão é suportado apenas por computadores Windows. (7/8/8.1 e10)
Bom passada toda a explicação (sua cabeça deve estar cozinhando né? Hahaha) vamos para o Powershell, vamos então criar nossa conexão P2S no Azure.
[Nota: Se você leu o artigo anterior, já estará bem ambientado em criar um Gateway de VPN. Logo, nós vamos aproveitar nossa infra já criada no Azure, OK? Então, dê uma conferida aqui antes de prosseguir.] [1] Vamos Logar via Powershell, em nossa conta: [sourcecode language=”powershell”]Login-AzureRmAccount[/sourcecode] [2] Agora, vamos listar os grupos de recurso e os Gateways existentes em nossa assinatura: [sourcecode language=”powershell”]Get-AzureRmResourceGroup|Select Name$rg="nome-do-grupo-de-recursos"
#Ex.: $rg="VPN-AZURE"
$location="nome-da-location"
#Ex.: $location="brazilsouth"
Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rg[/sourcecode] [3] Então, vamos declarar algumas variáveis, que irão nos ajudar na criação da conexão P2S: [sourcecode language=”powershell”] $gwname= "gwvirt"
$vpnclientaddpool= "172.16.10.0/24"
#Obs.: A variável $vpnclientaddpool, deverá armazenar uma faixa de IP’s diferente da faixa existente na VNet e na rede interna.[/sourcecode] [4] Vamos pegar as informações do gateway que iremos utilizar: [sourcecode language=”powershell”]$gatewayconfig = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rg -Name $gwname[/sourcecode] [5] Agora, vamos criar a configuração de nossa conexão P2S no Azure, setando essa classe de IP no Gateway: [sourcecode language=”powershell”]Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gatewayconfig -VpnClientAddressPool $vpnclientaddpool[/sourcecode]
Após a criação dessa configuração, vamos precisar criar 2 certificados (raiz e cliente) para assegurar que nossa conexão com o Azure seja criptografada e que apenas o usuário que possuir esse certificado, conseguirá fechar uma conexão com o ambiente Azure. O certificado é usado para autenticar o cliente quando ele inicia uma conexão de rede virtual. Para criar esses certificados é possível usar as ferramentas: PowerShell (Windows 10), MakeCert ou OpenSSL.
[Nota: Nesse artigo, vou optar por utilizar o Powershell, logo, criaremos esses 2 certificados utilizando os comandos abaixo.][6] Gerar o certificado Raiz (Root)
- Execute o Powershell como administrador. (Shift + Botão Direito Mouse)
- Vamos criar o certificado raiz, usando o seguinte comando:
- Digite na busca/cortana o comando certmgr.msc.
- Navegue até: Certificados – Usuário Atual / Pessoal / Certificados
- Ache o certificado em questão (VPN-AZR-P2S-ROOT), clique com o botão direito e vá em: Todas as tarefas / Exportar
- O Assistente de exportação será iniciado, e logo poderemos exportar nosso certificado raiz auto-assinado.
- Clique em “Avançar”.
- Selecione a opção: “NÃO, NÃO EXPORTAR A CHAVE PRIVADA.”
- Clique em “Avançar”.
- Selecione a opção: “X.509 Codificado na base 64 (*.cer)”
- Clique em “Avançar”.
- Clique em “Procurar” e Salve o arquivo (.cer) em algum diretório em seu computador.
- Clique em “Avançar”.
- As informações do certificado serão apresentadas na tela, dê uma conferida.
- Clique em “Concluir”.
- E pronto! O Certificado já foi exportado para o diretório que você escolheu!
New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=VPN-AZR-P2S-CLIENT" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
#Obs.2: Veja que no parâmetro -Signer, passamos a variável $cert, que carrega as informações de criação do certificado root que criamos no passo anterior.[/sourcecode]
Cada computador cliente que deseja se conectar a uma VPN P2S deve ter o certificado de cliente instalado. Logo, vamos gerar um certificado de cliente com base no certificado raiz auto-assinado e, em seguida, exportamos e instalamos o certificado na máquina que deverá se conectar. Lembre-se: Se o certificado do cliente não estiver instalado, a autenticação falhará.
[8] Vamos agora listar os certificados que geramos em nosso ambiente. [sourcecode language=”powershell”]Get-ChildItem -Path “Cert:\CurrentUser\My”[/sourcecode] [9] Agora vamos exportar esse certificado para utilizarmos nas máquinas cliente.- Digite na busca/cortana o comando certmgr.msc.
- Navegue até: Certificados – Usuário Atual / Pessoal / Certificados
- Ache o certificado em questão (VPN-AZR-P2S-CLIENT), clique com o botão direito e vá em: Todas as tarefas / Exportar.
- O Assistente de exportação será iniciado, e logo poderemos exportar nosso certificado raiz auto-assinado.
- Clique em “Avançar”.
- Selecione a opção: “SIM, EXPORTAR A CHAVE PRIVADA.”
- Clique em “Avançar”.
- Selecione a opção: “Troca de Informações Pessoais – PKCS nº 12 (.PFX,.P12) e outras opções (Confira na Imagem)
- Clique em “Avançar”.
- Proteja o arquivo com uma senha (de preferência).
- Clique em “Avançar”.
- Clique em “Procurar” e Salve o arquivo (.pfx) em algum diretório em seu computador.
- Clique em “Avançar”.
- As informações do certificado serão apresentadas na tela, dê uma conferida.
- Clique em “Concluir”.
E pronto! O Certificado já foi exportado para o diretório que você escolheu
#Obs.: Copie o certificado root (.cer) para um diretório e no C:\.
[sourcecode language=”powershell”]mkdir c:\cert$filePathForCert = "C:\cert\vpn-azure-p2s-root.cer"
$cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
$CertBase64 = [system.convert]::ToBase64String($cert.RawData)
$p2srootcert = New-AzureRmVpnClientRootCertificate -Name $certname -PublicCertData $CertBase64
Add-AzureRmVpnClientRootCertificate -VpnClientRootCertificateName vpn-azure-p2s-root.cer -VirtualNetworkGatewayname $gwname -ResourceGroupName $rg -PublicCertData $CertBase64[/sourcecode] [11] Após importar o certificado, ele irá aparecer no Gateway no Azure, conforme imagem abaixo.
#Obs.: Aparecerá a URI de download da conexão de VPN P2S. Selecione essa URI e cole no comando abaixo.
$client = new-object System.Net.WebClient
$client.DownloadFile(“cole-a-uri-aqui”,”C:\vpn-azure-con-p2s.exe”)
#Obs.2.: Exemplo do comando acima: $client.DownloadFile(“https://cq0nfvetwgwmprod.blob.core.windows.net/cmakexe/2e381d71-4cda-4288-b498-a244033da71c/amd64/2e381d71-4cda-4288-b498-a244033da71c.exe?sv=2015-04-05"sr=bsig=sqJqhn4zITBGy%2Bq5xDV%2F4PH4wK0178AJRfJ4X93hbhc%3D&st=2017-11-29T20%3A20%3A36Z&se=2017-11-29T21%3A20%3A36Z&sp=r&fileExtension=.exe”,”C:\vpn-azure-con-p2s.exe”)[/sourcecode]
Após o download o arquivo já estará disponível para uso. (Clique 2x e instale)
- Clique em “Sim”.
- Automaticamente, o instalador irá criar uma interface de conexão VPN, junto às redes existentes.
- Clique em “Conectar”, para abrir o assistente de conexão.
- Clique em “Conectar-se”
- E pronto! Você já estará conectado ao seu ambiente no Azure, e será possível utilizar e gerir todos os seus recursos de qualquer lugar do MUNDO!
Simples? Fácil? Rápido? (Deixe seu feedback!)
Acho que vai rolar um #PAPODECLOUD hein? (Se der tempo, eu faço e posto aqui! lol)
E num é que rolou um #PAPODECLOUD? HAHAHAHAHA, Dá uma olhada no vídeo:
Se gostou, compartilhe esse post! (Acho que vale seu compartilhamento, não acha?)
Aguardo você para no próximo post! (Valeu mesmo! Obrigado por acreditar no meu trabalho! #tamojunto)
Um Forte Abraço!
Gustavo Magella
#borapranuvem #cloud4all #uaizure
Olá,
Excelente tutorial, parabéns!
Por favor, tenho um dúvida, no ponto “Após o download o arquivo já estará disponível para uso. (Clique 2x e instale)” o instalador simplesmente não funciona no meu Win10, tem algum pre-requisito para instalação alem do certificado? O instalador simplesmente não abre… testei no W7 e instalou perfeitamente…
Desde já obrigado!
Ola Laerson, blza?
Qual Windows 10 vc esta usando? Home, S ou Pro?
Abracao!
Gustavo! Excelente seu passo a passo. Só temos a agradecê-lo.
A conexão à VPN ocorre normalmente, com certificados validados sem maiores problemas, e coloquei exatamente até seus endereços sugeridos ($vpnclientaddpool= “172.16.10.0/24”), porém, o que mais poderemos fazer para conectar à nossa máquina da Azure via VPN P2S?
Conectar na VPN dá certo, mas conectar na máquina via VPN não dá.
A minha máquina na Azure, por exemplo, tem duas interfaces, uma com IP privado 10.0.0.5/24 e um IP público associado a ela, que me permite conectar via Remote Desktop a ela sem usar VPN, e a outra interface, que é a que quero usar com a VPN, está com o IP privado 10.0.0.4/24.
A minha máquina local pega o IP do pool que você sugeriu normalmente, por exemplo, 172.16.10.4/255.255.255.255.
Eu consigo pingar o IP 172.16.10.0.
Muito obrigado.
A solução: Meu range de IP privado estava errado no gateway de rede local da Azure.
Já o corrigi, e também precisei criar uma tabela de rota, associando o gateway de rede local com o GatewaySubnet na rede virtual.