Cerrar
InicioNetworkingAlways On VPNMicrosoft Azure: Always On VPN + Windows 10 Pro + GPO (Parte II)

Microsoft Azure: Always On VPN + Windows 10 Pro + GPO (Parte II)

Ya hace unas semanas había publicado como configurar AlwaysOn VPN con los servicios de VPN de Azure (Microsoft Azure: Always On VPN + Windows 10 Pro + GPO), evitando así tener que “implementar” el servidor nosotros. Todo esto con una versión de Windows 10 no “preparada” para este tipo de conexiones, puesto que lo habíamos hecho con Windows 10 Pro y no la versión Enterprise que es la que permite de forma nativa lanzar la conexión VPN de forma automática sin tener que tirar de “ingenio” (tareas programadas). Pues bien, tirando nuevamente de “ingenio” + experiencia, vamos a ver como podemos lograr el siguiente objetivo.

  • No lanzar la conexión VPN cuando estemos en alguna ubicación la cual ya está conectada a Azure mediante VPN

Si ya estamos dentro de una red la cual ya está conectada a Azure vía VPN, no necesitamos (ni debemos) que los equipos quieran conectar la VPN Point-to-Site que tienen automatizada su conexión. Para esto, hemos comentado anteriormente, vamos a tirar de “ingenio” + experiencia, porque vamos comprobar que estamos en la red local o directamente conectado (vía VPN) como lo logra DirectAccess, tirando de una consulta DNS + PING y todo ello con un simple script de PowerShell. Pero antes y como casi siempre, una pequeña topología para entender este artículo:

Como podemos apreciar, la idea es que los equipos traten de resolver registro DNS (ejemplo: alwaysonvpn.dominio.com), lanzarle un ping a las IPs que resuelve y si la respuesta es True entonces sabremos que el equipo está dentro de la red y tiene acceso a dichos hosts. En mi caso, lo que he hecho es lo siguiente:

  • Crear un registro DNS en el dominio interno de la red el cual  tiene como nombre alwaysonvpn + nombre del dominio, de esta forma, sabemos que ese registro DNS lo estamos utilizando para este servicio. Los registros son de tipo A (pero podéis utilizar un CNAME sin problema), el cual tiene como IP la IP de un controlador de dominio. Puedes poner la IP de cualquier HOSTS que sabes que va a responder siempre, o más bien que siempre debería responder (sino está en el DC en la red .. malo 🙂 ).
  • Crear un sencillo script que ejecuta un comando de test de conexión (Test-NetConnection) y que compruebe si la salida es True o False del resultado de PingSucceeded. Si el resultado es True entonces el ping ha sido exitoso, por lo tanto estás dentro de la red, puesto que supone que a ese equipo solo llegas cuando estás dentro de la red o conectado vía VPN.
  • Modificar la tarea programada que teníamos configurada para lanzar la conexión VPN con el comando rasphone -d NombreConexión para que ahora ejecute un script de PowerShell, desde el cual comprobaremos si estamos o no en la red local.

Aquí os dejo el código del script:

Aquí os dejo el código del script para copiar/pegar si queréis:

$checkConnection = Test-NetConnection <registroFQDN>
if($checkConnection.PingSucceeded){
Write-Host “OK estás dentro de la red”
}else{
rasphone -d <NombreConexiónVPN>
}

Ahora guardamos el script en la misma carpeta de red donde tenemos el resto de ficheros los cuales copiamos con la GPO hacia cada equipo, de tal forma que así la ejecución dicho script es siempre con ficheros ubicados localmente. Para que no haya lugar a dudas, aquí os dejo la configuración de como se copian ficheros de la red hacia los equipos:

Y esta sería la carpeta de red donde tengo los ficheros, recordad que … los equipos del dominio tienen que tener permisos para acceder en modo de lectura a esta carpeta:

Ahora la GPO lo copiará a la carpeta local de cada equipo que le hayamos dicho y, luego en la tarea programada lo ejecutaremos desde allí. En mi caso, con la GPO copio los ficheros de configuración y ahora de conexión de la VPN en la carpeta C:\Windows\VPNProfile:

Pues ahora, solo toca que la tarea se ejecute según lo hayamos definido (revisar el articulo Microsoft Azure: Always On VPN + Windows 10 Pro + GPO donde lo indico) y ahora, el script hará su trabajo. Si el resultado del PingSucceeded del comando Test-NetConnection es igual a True, es que estáis dentro de la red y sino estáis fuera y así es donde el script intentará conecta la VPN: rasphone -d NombreConexiónVPN.

Claramente el registro DNS debéis crearlo en la vuestros servidores DNS locales, de tal forma que cuando los equipos estén en la red local podrán consultar dicho registro.

El script sólo comprueba una dirección IP, pero se puede complicar o más bien optimizar, si agregamos la posibilidad de que realice el test de conexión a varias IPs, porque si alguna de ellas responde, estáis dentro de la red.

Se pueden buscar más formas de chequear si estamos o no dentro de alguna red local o conectado mediante VPN, pero esta es la más parecida a lo que hace “DirectAccess con el NRPT”.

Espero que os sea de utilidad, ahora, como siempre, os toca probarlo a vosotros!!!

Microsoft Azure File
Microsoft Teams: Con
NO HAY COMENTARIOS

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This