Настройка Point-to-Site соединения к Azure

2016-09-06, 20:30 / Argon

Осуществляется по статье Configure a Point-to-Site connection to a VNet using PowerShell. Практически всё очевидно и понятно, кроме момента с выделением пула адресов для клиентов VPN и того, как быть с самоподписанными сертификатами.

Пул адресов для клиентов VPN

Задаётся как адресное пространство (подсеть) вида 10.18.18.0/24. Пул адресов для клиентов VPN должен удовлетворять следующим правилам:

  • не должен пересекаться с address space виртуальной сети (VNet), для который он настраивается
  • не должен пересекаться с address space сетей (local network gateway, другие виртуальные сети), к которым подключена виртуальная сеть

Когда Point-to-Site соединение между клиентом и шлюзом (virtual network gateway) установлено, клиент получает IP адрес из назначенного пула. При этом сетевое взаимодействие между виртуальной сетью и подсетью VPN полностью маршрутизируется в обе стороны, никаких NAT и сетевой фильтрации нет (если иное не задано в NSG). Поэтому при планировании гибридной сети нужно учитывать, что если потребуется иметь доступ из подсети VPN к подключенной к VNet локальной сети (on-premise), то на локальном сетевом оборудовании должны быть прописаны соответствующие маршруты не только на address space для VNet, но и на VPN pool.

Зачем может пондобиться доступ из VPN address pool в on-premise сеть? Кроме очевидного бесплатного VPN от Azure, подключения Point-to-Site также используют App Services (веб-сайты) для интеграции с VNet, но это уже отдельная история…

Самоподписанные сертификаты

Если нет надобности использовать свой полноценный PKI, можно использовать само-подписанные сертификаты, это описано в статье Working with self-signed certificates for Point-to-Site connections. В примерах команд используется устаревшее средство makecert, и нужно сильно заморочиться, чтобы его скачать и установить. Более того, синтаксис makecert для меня так и остался непостижим.

Если у вас есть Windows 10, то обновлённая команда PowerShell New-SelfSignedCertificate позволяет всё сделать намного проще.

1. Нам нужно создать корневой SSL сертификат, по которому Azure Gateway будет проверять доверие к клиентским сертификатам.

$CertNotBefore = [datetime]::Today
$CertNotAfter = ([datetime]::Today).AddYears(100)
$CertLocation = 'Cert:\CurrentUser\My'

$CertRootCA = New-SelfSignedCertificate -CertStoreLocation $CertLocation -NotBefore $CertNotBefore -NotAfter $CertNotAfter -Subject 'CN=RootCA' -KeyUsage CertSign

2. Импортировать наш корневой сертификат в хранилище доверенных на локальном компьютере, чтобы выпущенные им сертификаты признавались доверенными.

$CertRootCA | Export-Certificate -Type CERT -FilePath 'root.cer'

Import-Certificate -FilePath 'root.cer' -CertStoreLocation Cert:\CurrentUser\Root

3. Для своего клиента VPN выпустить сертификат, подписанный корневым.

$CertClient = New-SelfSignedCertificate -CertStoreLocation $CertLocation -NotBefore $CertNotBefore -NotAfter $CertNotAfter -Signer $CertRootCA -Subject 'CN=Client'

4. Корневой сертификат сохранить в виде строки и загрузить в конфигурацию шлюза Azure.

$CertBytes = $CertRootCA.Export('Cert')

$CertString =[System.Convert]::ToBase64String($CertBytes)

Add-AzureRmVpnClientRootCertificate -ResourceGroupName RGName -VirtualNetworkGatewayname GatewayName -VpnClientRootCertificateName 'root.cer' -PublicCertData $CertString

5. Получить ссылку на персональный установщик клиента VPN.

Get-AzureRmVpnClientPackage -ResourceGroupName RGName -VirtualNetworkGatewayName GatewayName -ProcessorArchitecture Amd64

6. Скачать и установить клиент VPN. Можно пользоваться.



Добавить комментарий