Настройка подключения "точка — сеть" к виртуальной сети с использованием проверки подлинности RADIUS: PowerShell

В этой статье описано, как создать виртуальную сеть с подключением "точка — сеть" (P2S) с использованием проверки подлинности RADIUS. Эта конфигурация доступна только для модели развертывания Resource Manager. Ее можно создать с помощью PowerShell или портала Azure.

VPN-шлюз "точка — сеть" (P2S) позволяет создать безопасное подключение к виртуальной сети с отдельного клиентского компьютера. Так вы можете подключиться к виртуальной сети из удаленного расположения, например, если вы работаете из дома или участвуете в конференции. Такая конфигурация также эффективна для использования вместо VPN-подключения "сеть — сеть" при наличии небольшого количества клиентов, которым требуется подключение к виртуальной сети.

VPN-подключение "точка — сеть" устанавливается на устройствах Windows и Mac. Эта статья поможет вам настроить конфигурацию P2S, которая использует сервер RADIUS для проверки подлинности. См. сведения о выполнении проверки подлинности с помощью другого метода:

Для подключения P2S не требуется VPN-устройство или общедоступный IP-адрес. P2S создает VPN-подключение по протоколу SSTP (Secure Socket Tunneling Protocol), OpenVPN или IKEv2.

  • SSTP — это VPN-туннель на основе TLS, который поддерживается только на клиентских платформах Windows. Он может проходить через брандмауэры, что делает его отличным вариантом для подключения устройств Windows к Azure из любого расположения. На стороне сервера поддерживается только протокол TLS версии 1.2. Для повышения производительности, масштабируемости и безопасности рекомендуется использовать протокол OpenVPN.

  • Протокол OpenVPN® — это VPN-протокол на основе SSL/TLS. Это решение для VPN-подключений на основе TLS позволяет проходить через брандмауэры, так как большинство брандмауэров открывают для исходящего трафика TCP-порт 443, которым пользуется TLS. OpenVPN можно использовать для подключения с устройств Android, iOS (начиная с версии 11.0), Windows, Linux и Mac (macOS, начиная с версии 10.13).

  • IKEv2 VPN — решение VPN на основе стандартов IPsec. VPN IKEv2 можно использовать для подключения с устройств Windows, Linux и Mac (macOS версии 10.11 и выше).

Для этой конфигурации требуется следующее:

  • VPN-шлюз с маршрутизацией на основе маршрутов.
  • Сервер RADIUS для аутентификации пользователей. Сервер RADIUS можно развернуть локально или в виртуальной сети Azure. Можно также настроить два сервера RADIUS для обеспечения высокой доступности.
  • Пакет конфигурации профиля VPN-клиента. Пакет конфигурации профиля клиента VPN — это пакет, который вы создаете. Он предоставляет параметры, необходимые для подключения P2S VPN-клиента.

Сведения об аутентификации домена Active Directory (AD) для VPN-подключений типа "точка — сеть"

Если используется аутентификация домена AD, пользователи могут входить в Azure с помощью учетных данных домена организации. Для этой проверки требуется сервер RADIUS, который интегрирован с сервером AD. Организации могут также использовать существующие серверы RADIUS.

Сервер RADIUS можно развернуть локально или в виртуальной сети Azure. Во время аутентификации VPN-шлюз выступает в качестве транзитного и переадресовывает сообщения аутентификации между сервером RADIUS и подключаемым устройством. Очень важно, чтобы VPN-шлюз мог связаться с сервером RADIUS. Если сервер RADIUS развернут локально, требуется VPN-подключение "сеть — сеть" между Azure и локальной сетью.

Сервер RADIUS можно интегрировать не только с Active Directory, но и с другими системами внешних идентификаторов. Благодаря этому доступно множество вариантов проверки подлинности для P2S VPN, включая параметры MFA. Список систем идентификаторов для интеграции см. в документации поставщика сервера RADIUS.

Diagram of RADIUS authentication P2S connection.

Внимание

С локальным сервером RADIUS можно установить только VPN-подключение "сеть — сеть". Подключение ExpressRoute использовать нельзя.

Подготовка

Убедитесь в том, что у вас уже есть подписка Azure. Если у вас нет подписки Azure, вы можете активировать преимущества для подписчиков MSDN или зарегистрировать бесплатную учетную запись.

Работа с Azure PowerShell

В этой статье используются командлеты PowerShell. Для запуска командлетов можно использовать Azure Cloud Shell. Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, просто выберите Open Cloudshell в правом верхнем углу блока кода. Кроме того, Cloud Shell можно открыть в отдельной вкладке браузера. Для этого перейдите на страницу https://shell.azure.com/powershell. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте их в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить код.

Кроме того, вы можете установить и запускать командлеты Azure PowerShell локально на компьютере. Командлеты PowerShell часто обновляются. Если вы не установили последнюю версию, значения, указанные в инструкциях, могут завершиться ошибкой. Чтобы узнать, какая версия Azure PowerShell установлена на вашем компьютере, используйте командлет Get-Module -ListAvailable Az. Если необходимо выполнить установку или обновление, см. статью об установке модуля Azure PowerShell.

Пример значений

Эти примеры значений можно использовать для создания тестовой среды или анализа примеров из этой стать. Вы можете использовать эти пошаговые инструкции, используя указанные в них значения, или же изменить значения в соответствии со своей средой.

  • Имя: VNet1
  • Адресное пространство: 10.1.0.0/16 и 10.254.0.0/16.
    Чтобы продемонстрировать, что эта конфигурация будет работать с несколькими адресными пространствами, в этом примере мы используем несколько адресных пространств. Но для этой конфигурации не требуется несколько адресных пространств.
  • Имя подсети: FrontEnd.
    • Адресное пространство подсети: 10.1.0.0/24.
  • Имя подсети: BackEnd.
    • Диапазон адресов подсети: 10.254.1.0/24.
  • Имя подсети: GatewaySubnet.
    Имя подсети GatewaySubnet обязательно для работы VPN-шлюза.
    • Диапазон адресов подсети шлюза: 10.1.255.0/27.
  • Пул адресов VPN-клиента: 172.16.201.0/24.
    VPN-клиенты, которые подключаются к виртуальной сети с помощью этого подключения P2S, получают IP-адреса из пула адресов VPN-клиента.
  • Подписка: если у вас есть несколько подписок, убедитесь, что используется правильная.
  • Группа ресурсов: TestRG1.
  • Расположение: восточная часть США.
  • DNS-сервер: IP-адрес DNS-сервера, который нужно использовать для разрешения имен в виртуальной сети. (необязательно).
  • Имя шлюза: Vnet1GW.
  • Имя общедоступного IP-адреса: VNet1GWPIP.
  • Тип VPN: RouteBased.

1. Задание переменных

Объявите переменные, которые вы хотите использовать. Используйте следующий пример, подставив собственные значения в соответствующих параметрах. Если вы закроете сеанс PowerShell/Cloud Shell в любой момент во время упражнения, просто скопируйте и снова вставьте значения, чтобы повторно объявить переменные.

$VNetName  = "VNet1"
$FESubName = "FrontEnd"
$BESubName = "Backend"
$GWSubName = "GatewaySubnet"
$VNetPrefix1 = "10.1.0.0/16"
$VNetPrefix2 = "10.254.0.0/16"
$FESubPrefix = "10.1.0.0/24"
$BESubPrefix = "10.254.1.0/24"
$GWSubPrefix = "10.1.255.0/27"
$VPNClientAddressPool = "172.16.201.0/24"
$RG = "TestRG1"
$Location = "East US"
$GWName = "VNet1GW"
$GWIPName = "VNet1GWPIP"
$GWIPconfName = "gwipconf1"

2. Создание группы ресурсов, виртуальной сети и общедоступного IP-адреса

Выполните инструкции ниже, чтобы создать группу ресурсов и виртуальную сеть в группе ресурсов с тремя подсетями. При замене значений важно, чтобы вы назвали подсеть шлюза именем GatewaySubnet. Если вы используете другое имя, создание шлюза завершится сбоем.

  1. Создать группу ресурсов.

    New-AzResourceGroup -Name "TestRG1" -Location "East US"
    
  2. Создайте конфигурации подсети для виртуальной сети, присвоив им имена FrontEnd, BackEnd и GatewaySubnet. Эти префиксы должны быть частью объявленного адресного пространства виртуальной сети.

    $fesub = New-AzVirtualNetworkSubnetConfig -Name "FrontEnd" -AddressPrefix "10.1.0.0/24"  
    $besub = New-AzVirtualNetworkSubnetConfig -Name "Backend" -AddressPrefix "10.254.1.0/24"  
    $gwsub = New-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -AddressPrefix "10.1.255.0/27"
    
  3. Создание виртуальной сети.

    В этом примере параметр сервера -DnsServer является необязательным. Указание значения не создает новый DNS-сервер. Необходимо указать IP-адрес DNS-сервера, который может разрешать имена для ресурсов, к которым вы подключаетесь из своей виртуальной сети. В этом примере мы использовали частный IP-адрес, но, скорее всего, это не IP-адрес вашего DNS-сервера. Подставьте собственные значения. Указанное значение используется для ресурсов, развертываемых в виртуальной сети, а не для подключений типа "точка — сеть".

    New-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1" -Location "East US" -AddressPrefix "10.1.0.0/16","10.254.0.0/16" -Subnet $fesub, $besub, $gwsub -DnsServer 10.2.1.3
    
  4. VPN-шлюз должен иметь общедоступный IP-адрес. Сначала запросите ресурс IP-адреса, а затем укажите его при создании шлюза виртуальной сети. IP-адрес динамически назначается ресурсу при создании VPN-шлюза. В настоящее время VPN-шлюз поддерживает только динамическое выделение общедоступных IP-адресов. Вы не можете запросить назначение статического общедоступного IP-адреса. Однако это не означает, что IP-адрес изменяется после назначения VPN-шлюзу. Общедоступный IP-адрес изменяется только после удаления и повторного создания шлюза. При изменении размера, сбросе или других внутренних операциях обслуживания или обновления IP-адрес VPN-шлюза не изменяется.

    Укажите переменные, чтобы подать запрос на динамически назначенный общедоступный IP-адрес.

    $vnet = Get-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1"  
    $subnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet 
    $pip = New-AzPublicIpAddress -Name "VNet1GWPIP" -ResourceGroupName "TestRG1" -Location "East US" -AllocationMethod Dynamic 
    $ipconf = New-AzVirtualNetworkGatewayIpConfig -Name "gwipconf1" -Subnet $subnet -PublicIpAddress $pip
    

3. Настройка сервера RADIUS

Прежде чем создавать и настраивать шлюз виртуальной сети, необходимо правильно настроить сервер RADIUS для проверки подлинности.

  1. Если вы еще не развернули сервер RADIUS, сделайте это. Инструкции по развертыванию см. в руководстве по установке, которое предоставлено поставщиком RADIUS.  
  2. Настройте VPN-шлюз как клиент RADIUS на сервере RADIUS. При добавлении клиента RADIUS укажите подсеть шлюза виртуальной сети, которую вы создали.
  3. После настройки сервера RADIUS получите его IP-адрес и общий секрет, который клиенты RADIUS будут использовать для обмена данными с сервером RADIUS. Если сервер RADIUS находится в виртуальной сети Azure, используйте IP-адрес центра сертификации виртуальной машины сервера RADIUS.

Статья Сервер политики сети (NPS) содержит сведения о настройке сервера RADIUS (NPS) под управлением Windows для аутентификации домена AD.

4. Создание VPN-шлюза

Настройте и создайте VPN-шлюз для своей виртуальной сети.

  • Параметру -GatewayType должно быть задано значение "Vpn", а параметру -VpnType — "RouteBased".
  • Создание VPN-шлюза может занять 45 минут и более в зависимости от выбранного номера SKU шлюза.
New-AzVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG `
-Location $Location -IpConfigurations $ipconf -GatewayType Vpn `
-VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw1

5. Добавление пула адресов сервера и клиента RADIUS

  • -RadiusServer можно указать с помощью имени или IP-адреса. Если вы укажете имя и сервер находится в локальной среде, VPN-шлюз может не разрешить имя. В таком случае рекомендуем указать IP-адрес сервера.
  • Параметр -RadiusSecret должен соответствовать настроенному параметру на сервере RADIUS.
  • -VpnClientAddressPool — это диапазон, из которого VPN-клиенты будут получать IP-адреса при подключении. Используйте диапазон частных IP-адресов, который не пересекается с локальным расположением, из которого выполнено подключение, или с виртуальной сетью, к которой вы хотите подключиться. Настройте достаточное количество адресов в пуле.  
  1. Создайте безопасную строку секрета RADIUS.

    $Secure_Secret=Read-Host -AsSecureString -Prompt "RadiusSecret"
    
  2. Появится запрос на ввод секрета RADIUS. Символы, которые вы вводите, не будут отображаться. Вместо них вы увидите символы *.

    RadiusSecret:***
    
  3. Добавьте пул адресов VPN-клиента и сведения о сервере RADIUS.

    Для конфигураций SSTP:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "SSTP" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    Для конфигураций OpenVPN®:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway -VpnClientRootCertificates @()
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "OpenVPN" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    Для конфигураций IKEv2:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "IKEv2" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    Для конфигураций SSTP и IKEv2:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol @( "SSTP", "IkeV2" ) `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    Чтобы указать два сервера RADIUS, используйте следующий синтаксис. При необходимости измените значение параметра -VpnClientProtocol

    $radiusServer1 = New-AzRadiusServer -RadiusServerAddress 10.1.0.15 -RadiusServerSecret $radiuspd -RadiusServerScore 30
    $radiusServer2 = New-AzRadiusServer -RadiusServerAddress 10.1.0.16 -RadiusServerSecret $radiuspd -RadiusServerScore 1
    
    $radiusServers = @( $radiusServer1, $radiusServer2 )
    
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $actual -VpnClientAddressPool 201.169.0.0/16 -VpnClientProtocol "IkeV2" -RadiusServerList $radiusServers
    

6. Настройка клиента VPN и подключение

Пакеты конфигурации профиля VPN-клиента содержат параметры, которые помогают настроить профили VPN-клиента для подключения к виртуальной сети Azure.

См. сведения о создании пакета конфигурации VPN-клиента и настройке VPN-клиента:

После настройки клиента VPN установите подключение к Azure.

Проверка подключения

  1. Чтобы проверить, активно ли VPN-подключение, откройте окно командной строки от имени администратора и выполните команду ipconfig/all.

  2. Просмотрите результаты. Обратите внимание, что полученный вами IP-адрес — это один из адресов в пуле адресов VPN-клиента подключения P2S, указанном в конфигурации. Вы должны увидеть результат, аналогичный приведенному ниже.

    PPP adapter VNet1:
       Connection-specific DNS Suffix .:
       Description.....................: VNet1
       Physical Address................:
       DHCP Enabled....................: No
       Autoconfiguration Enabled.......: Yes
       IPv4 Address....................: 172.16.201.3(Preferred)
       Subnet Mask.....................: 255.255.255.255
       Default Gateway.................:
       NetBIOS over Tcpip..............: Enabled
    

Устранение неполадок подключения типа "точка — сеть" описывается в разделе Устранение неполадок подключения типа "точка — сеть" Azure.

Подключение к виртуальной машине

Вы можете подключиться к виртуальной машине, развернутой в виртуальной сети, создав Подключение удаленного рабочего стола на виртуальной машине. Лучший способ проверить, можете ли вы подключиться к своей виртуальной машине, — подключиться, используя частный IP-адрес, а не имя компьютера. Таким образом, вы проверяете, можете ли вы подключиться, а не правильно ли настроено разрешение имен.

  1. Найдите частный IP-адрес. Частный IP-адрес виртуальной машины можно найти, просматривая свойства виртуальной машины в портал Azure или с помощью PowerShell.

    • портал Azure. Найдите виртуальную машину в портал Azure. Просмотрите свойства виртуальной машины. Там будет указан частный IP-адрес.

    • PowerShell. Используйте пример для просмотра списка виртуальных машин и частных IP-адресов из групп ресурсов. Вам не нужно изменять этот пример перед использованием.

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. Убедитесь, что вы подключены к виртуальной сети.

  3. Откройте Подключение удаленного рабочего стола, введя Подключение RDP или удаленный рабочий стол в поле поиска на панели задач. Затем выберите Подключение удаленного рабочего стола. Вы также можете открыть Подключение удаленного mstsc рабочего стола с помощью команды в PowerShell.

  4. В сеансе подключения к удаленному рабочему столу введите частный IP-адрес виртуальной машины. Вы можете выбрать "Показать параметры" , чтобы настроить другие параметры, а затем подключиться.

Если у вас возникли проблемы с подключением к виртуальной машине через VPN-подключение, проверка следующие моменты:

  • Убедитесь, что вы используете активное VPN-подключение.
  • Убедитесь, что подключаетесь к частному IP-адресу виртуальной машины.
  • Если вы можете подключиться к виртуальной машине с помощью частного IP-адреса, но не имени компьютера, убедитесь, что dns настроен правильно. Дополнительные сведения о том, как работает разрешение имен для виртуальных машин, см. в разделе "Разрешение имен" для виртуальных машин.

Дополнительные сведения о подключениях RDP см. в статье Устранение неполадок с подключением к виртуальной машине Azure через удаленный рабочий стол.

  • Убедитесь, что пакет конфигурации VPN-клиента был создан после IP-адресов DNS-сервера, заданных для виртуальной сети. Если вы обновили IP-адреса DNS-сервера, создайте и установите новый пакет конфигурации VPN-клиента.

  • Используйте ipconfig, чтобы проверить IPv4-адрес, назначенный Ethernet-адаптеру на компьютере, с которого выполняется подключение. Если IP-адрес находится в диапазоне адресов виртуальной сети, к которой выполняется подключение, или в диапазоне адресов VPNClientAddressPool, адресное пространство перекрывается. В таком случае сетевой трафик не достигает Azure и остается в локальной сети.

Вопросы и ответы

Ответы на часто задаваемые вопросы см. в разделе "Точка — сеть" — проверка подлинности RADIUS.

Следующие шаги

Установив подключение, можно добавить виртуальные машины в виртуальные сети. Дополнительные сведения о виртуальных машинах см. здесь. Дополнительные сведения о сетях и виртуальных машинах см. в статье Azure и Linux: обзор сетей виртуальных машин.