Cómo automatizar la creación y configuración de clientes en Azure VPN Point-to-Site

Estimados muertos vivientes, Espero que este script les sea de utilidad, no se olviden modificar las variables del inicio para que funcione correctamente.

Pre-requisitos:

  • Azure Powershell actualizado
  • Cuenta de Azure
  • VPN Gateway creado.

Me costó algo de trabajo automatizar el proceso así que Espero les sea de ayuda :)

EjecutarVPN.ps1

##################################################################################################
# EDITAR VARIABLES DE CONFIGURACION AQUÍ                                                         #
##################################################################################################
$directorioTrabajo = "C:\trabajo"
$subscriptionName = "Consumo interno de Microsoft Azure"
$vpnClientPool = "172.17.201.0/24"
$vpnGWName = "LitWareGW2"
$rgName = "VNET2RG"
##################################################################################################
# NO EDITAR DESDE ESTE PUNTO                                                                     #
##################################################################################################
$nombreusuario=[Environment]::UserName
$rootCertName = "$nombreusuario.cer" 
$urlMakeCert = "http://opsgilityweb.blob.core.windows.net/makecert/makecert.exe"
##################################################################################################
write-host -foregroundcolor green "------------------------------------------------------------"
write-host -foregroundcolor green "CREANDO VPN POINT TO SITE"
write-host -foregroundcolor green "DESARROLLADO POR JOSE YAPUR"
write-host -foregroundcolor green "------------------------------------------------------------"
mkdir $directorioTrabajo
write-host -foregroundcolor green "-----creando certificado"
cd $directorioTrabajo
Invoke-WebRequest -Uri $urlMakeCert.Replace("""","") -OutFile "$directorioTrabajo\makecert.exe"
.\makecert.exe -sky exchange -r -n "CN=$nombreusuario""ROOT" -pe -a sha1 -len 2048 -ss My .\$rootCertName
.\makecert.exe -n "CN=$nombreusuario""Client" -pe -sky exchange -m 96 -ss My -in $nombreusuario"Root" -is my -a sha1
certutil -encode $rootCertName $nombreusuario"PublicKeyFile.cer"
 
$valorCert = Get-Content -Path $nombreusuario"PublicKeyFile.cer"
 
$publicCertData = $valorCert[0..($valorCert.count - 2)]
$publicCertData = $publicCertData[1..($publicCertData.count - 1)] | Out-String
 
write-host -foregroundcolor green "-----añadiendo cuenta de azure"
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName $subscriptionName
 
$vpnGW = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rgName -Name $vpnGWName  
Set-AzureRmVirtualNetworkGatewayVpnClientConfig -VirtualNetworkGateway $vpnGW -VpnClientAddressPool $vpnClientPool 
 
Add-AzureRmVpnClientRootCertificate -VpnClientRootCertificateName $rootCertName -VirtualNetworkGatewayName $vpnGWName -ResourceGroupName $rgName -PublicCertData $publicCertData
 
$downloadUrl = Get-AzureRmVpnClientPackage -ResourceGroupName $rgName -VirtualNetworkGatewayName $vpnGWName -ProcessorArchitecture Amd64  
write-host -foregroundcolor green "-----instalando cliente vpn"
Invoke-WebRequest -Uri $downloadUrl.Replace("""","") -OutFile "$directorioTrabajo\VPNclient.exe"
 
.\VPNclient.exe
write-host -foregroundcolor green "------------------------------------------------------------"
write-host -foregroundcolor green "SCRIPT FINALIZADO, VAYA A REDES Y CONECTESE A LA VPN, CONSULTAS A JOSE.YAPUR@L"
write-host -foregroundcolor green "------------------------------------------------------------"