Поделиться через


Настройка Шлюз приложений с общедоступным IPv6-адресом внешнего интерфейса с помощью Azure PowerShell

Шлюз приложений Azure поддерживает интерфейсные подключения с двумя стеками (IPv4 и IPv6) от клиентов. Чтобы использовать интерфейсное подключение IPv6, необходимо создать новую Шлюз приложений. В настоящее время невозможно обновить существующие Шлюз приложений IPv4 до двух стека (IPv4 и IPv6) Шлюз приложений. Кроме того, в настоящее время серверные IPv6-адреса не поддерживаются.

Чтобы поддерживать интерфейсную поддержку IPv6, необходимо создать виртуальную сеть с двумя стеками. Эта виртуальная сеть с двойным стеком содержит подсети для IPv4 и IPv6. Виртуальные сети Azure уже предоставляют возможность двойного стека.

Обзор

Azure PowerShell используется для создания Шлюз приложений Azure IPv6. Тестирование выполняется для проверки правильности работы.

Узнайте следующие темы:

Azure PowerShell используется для создания Шлюз приложений Azure IPv6 и тестирования для обеспечения правильной работы. Шлюз приложений может управлять и защищать веб-трафик на обслуживаемые серверы. Масштабируемый набор виртуальных машин предназначен для серверных серверов для управления веб-трафиком. Масштабируемый набор содержит два экземпляра виртуальной машины, которые добавляются в внутренний пул шлюза приложений по умолчанию. Дополнительные сведения о компонентах шлюза приложений см. в разделе "Компоненты шлюза приложений".

Вы также можете выполнить это краткое руководство с помощью портал Azure.

Необходимые компоненты

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Чтобы установить и использовать PowerShell локально для работы с этой статьей, вам понадобится модуль Azure PowerShell 1.0.0 или более поздней версии. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Login-AzAccount, чтобы создать подключение к Azure.

Регионы и доступность

IPv6 Шлюз приложений доступен для всех общедоступных облачных регионов, где поддерживается номер SKU Шлюз приложений версии 2. Она также доступна в Microsoft Azure под управлением 21Vianet и Azure для государственных организаций

Ограничения

  • Только номер SKU версии 2 поддерживает интерфейс с IPv4 и IPv6-адресами.
  • Серверные серверы IPv6 в настоящее время не поддерживаются
  • В настоящее время приватный канал IPv6 не поддерживается
  • В настоящее время Шлюз приложений только IPv6 не поддерживается. Шлюз приложений должен быть двойным стеком (IPv6 и IPv4)
  • Шлюз приложений контроллер входящего трафика (AGIC) не поддерживает конфигурацию IPv6
  • Существующие Шлюз приложений IPv4 не могут быть обновлены до двух Шлюз приложений стека
  • Пользовательские правила WAF с условием соответствия IPv6 в настоящее время не поддерживаются

Создание или изменение группы ресурсов

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Создайте группу ресурсов Azure с помощью командлета New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

Настройка подсети двойного стека и серверной подсети

Настройте подсети с именами myBackendSubnet и myAGSubnet, выполнив командлет New-AzVirtualNetworkSubnetConfig.

$AppGwSubnetPrefix = @("10.0.0.0/24", "ace:cab:deca::/64")
$appgwSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet -AddressPrefix $AppGwSubnetPrefix
$backendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet -AddressPrefix  10.0.1.0/24

Создание виртуальной сети двойного стека

$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)

Создание общедоступных IP-адресов интерфейса Шлюз приложений

$pipv4 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress4 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv4' `
-Force

$pipv6 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress6 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv6' `
-Force

Создание ip-конфигураций и портов

Свяжите созданную ранее подсеть myAGSubnet со шлюзом приложений, используя командлет New-AzApplicationGatewayIPConfiguration. Назначьте шлюзу приложений адрес myAGPublicIPAddress с помощью командлета New-AzApplicationGatewayFrontendIPConfig.

$vnet   = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myAGSubnet
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfigv4 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv4Config `
-PublicIPAddress $pipv4
$fipconfigv6 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv6Config `
-PublicIPAddress $pipv6
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myAGFrontendIPv6Config `
-Port 80

Создание серверного пула и настройка параметров

Создайте серверный пул с именем appGatewayBackendPool для шлюза приложений с помощью командлета New-AzApplicationGatewayBackendAddressPool. Настройте параметры для внутренних пулов адресов, используя командлет New-AzApplicationGatewayBackendHttpSettings.

$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30

Создание прослушивателя по умолчанию и правила

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

Создайте прослушиватель mydefaultListener с конфигурацией внешнего интерфейса и интерфейсным портом, созданными ранее, используя командлет New-AzApplicationGatewayHttpListener. Правило требуется для того, чтобы указать прослушивателю, какой внутренний пул использовать для входящего трафика. Создайте базовое правило rule1 с помощью командлета New-AzApplicationGatewayRequestRoutingRule.

$listenerv4 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv4 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv4 `
-FrontendPort $frontendport
$listenerv6 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv6 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv6 `
-FrontendPort $frontendport
$frontendRulev4 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv4 `
-RuleType Basic `
-Priority 10 `
-HttpListener $listenerv4 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolSettings 
$frontendRulev6 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv6 `
-RuleType Basic `
-Priority 1 `
-HttpListener $listenerv6 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolsettings

Создание шлюза приложений

Теперь, когда вы создали необходимые вспомогательные ресурсы, можно указать параметры для шлюза приложений с помощью New-AzApplicationGatewaySku. Новый шлюз приложений создается с помощью New-AzApplicationGateway. Создание шлюза приложений занимает несколько минут.

$sku = New-AzApplicationGatewaySku `
  -Name Standard_v2 `
  -Tier Standard_v2 `
  -Capacity 2
New-AzApplicationGateway `
-Name myipv6AppGW `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $backendPool `
-BackendHttpSettingsCollection $poolsettings `
-FrontendIpConfigurations @($fipconfigv4, $fipconfigv6) `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners @($listenerv4, $listenerv6) `
-RequestRoutingRules @($frontendRulev4, $frontendRulev6) `
-Sku $sku `
-Force

Внутренние серверы

Теперь, когда вы создали шлюз приложений, вы можете создать серверные виртуальные машины для размещения веб-сайтов. Серверная часть может состоять из сетевых адаптеров, масштабируемых наборов виртуальных машин, общедоступных IP-адресов, внутренних IP-адресов, полных доменных имен (FQDN) и мультитенантных серверных серверов, таких как служба приложение Azure.

Создание двух виртуальных машин

В этом примере вы создадите две виртуальные машины, которые будут использоваться как внутренние серверы для шлюза приложений. Службы IIS устанавливаются на виртуальных машинах, чтобы убедиться, что Azure успешно создал шлюз приложений. Масштабируемый набор назначается внутреннему пулу при настройке параметров IP-адреса.

Чтобы создать виртуальные машины, мы получаем недавно созданную конфигурацию внутреннего пула Шлюз приложений с помощью Get-AzApplicationGatewayBackendAddressPool. Эта информация используется в следующих целях:

  • Создайте сетевой интерфейс с помощью командлета New-AzNetworkInterface.
  • Создайте конфигурацию виртуальной машины, используя командлет New-AzVMConfig.
  • Создайте виртуальные машины с помощью New-AzVM.

Примечание.

При запуске следующего примера кода для создания виртуальных машин Azure запрашивает учетные данные. Введите имя пользователя и пароль. Создание виртуальных машин занимает несколько минут.

$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myipv6AppGW
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
  $nic = New-AzNetworkInterface `
    -Name myNic$i `
    -ResourceGroupName myResourceGroupAG `
    -Location EastUS `
    -Subnet $subnet `
    -ApplicationGatewayBackendAddressPool $backendpool
  $vm = New-AzVMConfig `
    -VMName myVM$i `
    -VMSize Standard_DS2_v2
  Set-AzVMOperatingSystem `
    -VM $vm `
    -Windows `
    -ComputerName myVM$i `
    -Credential $cred
  Set-AzVMSourceImage `
    -VM $vm `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
  Add-AzVMNetworkInterface `
    -VM $vm `
    -Id $nic.Id
  Set-AzVMBootDiagnostic `
    -VM $vm `
    -Disable
  New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
  Set-AzVMExtension `
    -ResourceGroupName myResourceGroupAG `
    -ExtensionName IIS `
    -VMName myVM$i `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS
}

Поиск общедоступного IP-адреса Шлюз приложений

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6

Назначение DNS-имени интерфейсным IPv6-адресу

DNS-имя упрощает тестирование шлюза приложений IPv6. Вы можете назначить общедоступное DNS-имя с помощью собственного домена и регистратора или создать имя в azure.com.

Используйте следующие команды, чтобы назначить имя в azure.com. Имя имеет метку, указанную + регион + cloudapp.azure.com. В этом примере запись AAAA myipv6appgw создается в пространстве имен eastus.cloudapp.azure.com:

$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp

Тестирование шлюза приложений

Ранее мы назначили DNS-имя myipv6appgw.eastus.cloudapp.azure.com общедоступному IPv6-адресу шлюза приложений. Чтобы проверить это подключение, выполните указанные ниже действия.

  1. Используя командлет Invoke-WebRequest, отправьте запрос на интерфейс IPv6.
  2. Проверьте ответ. Допустимый ответ myVM1 или myVM2 проверяет успешность создания шлюза приложений и может успешно подключиться к серверной части. При выполнении команды несколько раз подсистема балансировки нагрузки шлюза отвечает на последующие запросы с другого серверного сервера.
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2

Внимание

Если подключение к DNS-имени или IPv6-адресу завершается ошибкой, это может быть связано с тем, что вы не можете просматривать IPv6-адреса с устройства. Чтобы проверить, является ли проблема вашей проблемой, также проверьте адрес IPv4 шлюза приложений. Если IPv4-адрес успешно подключается, скорее всего, у вас нет общедоступного IPv6-адреса, назначенного устройству. В этом случае можно попробовать проверить подключение с помощью виртуальной машины с двумя стеками.

Очистка ресурсов

Если группа ресурсов, виртуальная машина и все связанные с ними ресурсы вам больше не требуются, их можно удалить. Для этого выполните командлет Remove-AzResourceGroup.

Remove-AzResourceGroup -Name myResourceGroupAG

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