Configurar túneis de dispositivo VPN no cliente Windows

A VPN Always On oferece a capacidade de criar um perfil de VPN dedicado para dispositivo ou computador. As conexões VPN Always On contêm dois tipos de túneis:

  • O túnel do dispositivo se conecta a servidores VPN especificados antes que os usuários façam logon no dispositivo. Os cenários de conectividade de pré-logon e de gerenciamento de dispositivos usam o túnel do dispositivo.

  • O túnel do usuário se conecta somente depois que um usuário faz logon no dispositivo. O túnel do usuário permite que os usuários acessem recursos da organização por meio de servidores VPN.

Ao contrário do túnel do usuário, que só se conecta depois que um usuário faz logon no dispositivo ou no computador, o túnel do dispositivo permite que a VPN estabeleça conectividade antes que o usuário faça logon. O túnel do dispositivo e o túnel do usuário operam de forma independente com seus perfis VPN, podem estar conectados ao mesmo tempo e podem usar métodos de autenticação diferentes e outras definições de configuração de VPN conforme apropriado. O túnel do usuário é compatível com SSTP e IKEv2, e o túnel do dispositivo é compatível somente com IKEv2 sem suporte para fallback do SSTP.

O túnel do usuário tem suporte em dispositivos ingressados no domínio, não ingressados no domínio (grupo de trabalho) ou ingressados no Microsoft Entra ID para permitir cenários corporativos e BYOD. Está disponível em todas as edições do Windows e os recursos da plataforma estão disponíveis para terceiros por meio do suporte ao plug-in da VPN UWP.

O túnel do dispositivo só pode ser configurado em dispositivos ingressados no domínio no Windows 10 Enterprise ou Education versão 1709 ou posterior. Não há suporte para o controle de terceiros do túnel do dispositivo. Se apenas um túnel de dispositivo for usado em um sistema, você poderá configurar uma NRPT (Tabela de Política de Resolução de Nomes). Se um túnel de usuário e um túnel de dispositivo forem usados em um sistema, você poderá usar a NRPT (Tabela de Política de Resolução de Nomes) somente no túnel do usuário.

O túnel do dispositivo não é compatível com a função de forçar túnel. Você deve configurá-lo como túnel dividido. |

Pré-requisitos

Habilite a autenticação de certificado do computador para conexões VPN e defina uma autoridade de certificação raiz para autenticar conexões de VPN de entrada.

$VPNRootCertAuthority = "Common Name of trusted root certification authority"
$RootCACert = (Get-ChildItem -Path cert:LocalMachine\root | Where-Object {$_.Subject -Like "*$VPNRootCertAuthority*" })
Set-VpnAuthProtocol -UserAuthProtocolAccepted Certificate, EAP -RootCertificateNameToAccept $RootCACert -PassThru

Recursos e requisitos do túnel de dispositivo

Configuração do túnel do dispositivo de VPN

O exemplo de XML de perfil abaixo fornece boas recomendações para cenários em que somente pulls iniciados pelo cliente são necessários no túnel do dispositivo. Os filtros de tráfego são aproveitados para restringir o túnel do dispositivo somente ao tráfego de gerenciamento. Essa configuração funciona bem para Windows Update, cenários típicos de atualização de GP (Política de Grupo) e do Microsoft Endpoint Configuration Manager, bem como conectividade VPN para o primeiro logon sem credenciais armazenadas em cache ou cenários de redefinição de senha.

Para casos de push iniciados pelo servidor, como WinRM (Gerenciamento Remoto do Windows), GPUpdate Remoto e cenários de atualização remotos do Configuration Manager, você deve permitir o tráfego de entrada no túnel do dispositivo, para que os filtros de tráfego não possam ser usados. Se você ativar filtros de tráfego no perfil do túnel do dispositivo, o túnel do dispositivo negará o tráfego de entrada. Essa limitação será removida em versões futuras.

Exemplo de profileXML de VPN

Veja a seguir o exemplo de profileXML de VPN.

<VPNProfile>
  <NativeProfile>
<Servers>vpn.contoso.com</Servers>
<NativeProtocolType>IKEv2</NativeProtocolType>
<Authentication>
  <MachineMethod>Certificate</MachineMethod>
</Authentication>
<RoutingPolicyType>SplitTunnel</RoutingPolicyType>
 <!-- disable the addition of a class based route for the assigned IP address on the VPN interface -->
<DisableClassBasedDefaultRoute>true</DisableClassBasedDefaultRoute>
  </NativeProfile>
  <!-- use host routes(/32) to prevent routing conflicts -->
  <Route>
<Address>10.10.0.2</Address>
<PrefixSize>32</PrefixSize>
  </Route>
  <Route>
<Address>10.10.0.3</Address>
<PrefixSize>32</PrefixSize>
  </Route>
<!-- traffic filters for the routes specified above so that only this traffic can go over the device tunnel -->
  <TrafficFilter>
<RemoteAddressRanges>10.10.0.2, 10.10.0.3</RemoteAddressRanges>
  </TrafficFilter>
<!-- need to specify always on = true -->
  <AlwaysOn>true</AlwaysOn>
<!-- new node to specify that this is a device tunnel -->
 <DeviceTunnel>true</DeviceTunnel>
<!--new node to register client IP address in DNS to enable manage out -->
<RegisterDNS>true</RegisterDNS>
</VPNProfile>

Dependendo das necessidades de cada cenário de implantação específico, outro recurso de VPN que pode ser configurado com o túnel do dispositivo é a Detecção de rede confiável.

 <!-- inside/outside detection -->
  <TrustedNetworkDetection>corp.contoso.com</TrustedNetworkDetection>

Implantação e Teste

Você pode configurar túneis de dispositivo usando um script do Windows PowerShell e usando a ponte WMI (Instrumentação de Gerenciamento do Windows). O túnel do dispositivo de VPN Always On deve ser configurado no contexto da conta do SISTEMA LOCAL. Para fazer isso, será necessário usar o PsExec, uma das PsTools incluídas no conjunto de utilitários Sysinternals.

Para obter recomendações sobre como implantar um perfil por dispositivo (.\Device)em comparação com por usuário(.\User), consulte Usar scripts do PowerShell com o provedor de ponte WMI.

Execute o seguinte comando do Windows PowerShell para verificar se você implantou com êxito um perfil de dispositivo:

Get-VpnConnection -AllUserConnection

A saída exibe uma lista dos perfis VPN implantados em todo o dispositivo.

Exemplo de script do Windows PowerShell

Você pode usar o script do Windows PowerShell a seguir para ajudar a criar seu próprio script de criação de perfil.

Param(
[string]$xmlFilePath,
[string]$ProfileName
)

$a = Test-Path $xmlFilePath
echo $a

$ProfileXML = Get-Content $xmlFilePath

echo $XML

$ProfileNameEscaped = $ProfileName -replace ' ', '%20'

$Version = 201606090004

$ProfileXML = $ProfileXML -replace '<', '&lt;'
$ProfileXML = $ProfileXML -replace '>', '&gt;'
$ProfileXML = $ProfileXML -replace '"', '&quot;'

$nodeCSPURI = './Vendor/MSFT/VPNv2'
$namespaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_VPNv2_01"

$session = New-CimSession

try
{
$newInstance = New-Object Microsoft.Management.Infrastructure.CimInstance $className, $namespaceName
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("ParentID", "$nodeCSPURI", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("InstanceID", "$ProfileNameEscaped", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("ProfileXML", "$ProfileXML", 'String', 'Property')
$newInstance.CimInstanceProperties.Add($property)

$session.CreateInstance($namespaceName, $newInstance)
$Message = "Created $ProfileName profile."
Write-Host "$Message"
}
catch [Exception]
{
$Message = "Unable to create $ProfileName profile: $_"
Write-Host "$Message"
exit
}
$Message = "Complete."
Write-Host "$Message"

Recursos adicionais

Veja a seguir recursos adicionais para ajudar na implantação da VPN.

Recursos de configuração de cliente VPN

Veja a seguir os recursos de configuração do cliente VPN.

Recursos do gateway do servidor de acesso remoto

Veja a seguir os recursos de Gateway do RAS (Servidor de Acesso Remoto).

Importante

Ao usar o túnel de dispositivo com um gateway RAS da Microsoft, você precisará configurar o servidor RRAS para dar suporte à autenticação de certificado de computador IKEv2 habilitando o método de autenticação Permitir autenticação de certificado do computador para IKEv2, conforme descrito aqui. Depois que essa configuração estiver habilitada, é altamente recomendável que o cmdlet Set-VpnAuthProtocol do PowerShell, junto com o parâmetro opcional RootCertificateNameToAccept, seja usado para garantir que as conexões RRAS IKEv2 sejam permitidas apenas para certificados de cliente VPN que são encadeados a uma autoridade de certificação raiz interna/privada definida explicitamente. Como alternativa, o repositório de Autoridades de certificação raiz confiáveis no servidor RRAS deve ser alterado para garantir que ele não contenha autoridades de certificação pública, conforme discutido aqui. Também pode ser necessário que métodos semelhantes sejam considerados para outros gateways de VPN.