Настройка Шлюз приложений с общедоступным IPv6-адресом внешнего интерфейса с помощью Azure PowerShell
Шлюз приложений Azure поддерживает интерфейсные подключения с двумя стеками (IPv4 и IPv6) от клиентов. Чтобы использовать интерфейсное подключение IPv6, необходимо создать новую Шлюз приложений. В настоящее время невозможно обновить существующие Шлюз приложений IPv4 до двух стека (IPv4 и IPv6) Шлюз приложений. Кроме того, в настоящее время серверные IPv6-адреса не поддерживаются.
Чтобы поддерживать интерфейсную поддержку IPv6, необходимо создать виртуальную сеть с двумя стеками. Эта виртуальная сеть с двойным стеком содержит подсети для IPv4 и IPv6. Виртуальные сети Azure уже предоставляют возможность двойного стека.
Обзор
Azure PowerShell используется для создания Шлюз приложений Azure IPv6. Тестирование выполняется для проверки правильности работы.
Узнайте следующие темы:
- Настройка сети с двумя стеками
- Создание шлюза приложений с интерфейсом 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-адресу шлюза приложений. Чтобы проверить это подключение, выполните указанные ниже действия.
- Используя командлет Invoke-WebRequest, отправьте запрос на интерфейс IPv6.
- Проверьте ответ. Допустимый ответ 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