Azure PowerShell を使用してフロントエンド パブリック IPv6 アドレスで Application Gateway を構成する
Azure Application Gateway では、クライアントからのデュアル スタック (IPv4 および IPv6) フロントエンド接続がサポートされています。 IPv6 フロントエンド接続を使用するには、新しいアプリケーション ゲートウェイを作成する必要があります。 現時点では、既存の IPv4 のみのアプリケーション ゲートウェイをデュアル スタック (IPv4 および IPv6) アプリケーション ゲートウェイにアップグレードすることはできません。 また、現在、バックエンド IPv6 アドレスはサポートされていません。
IPv6 フロントエンドをサポートするには、デュアル スタック VNet を作成する必要があります。 このデュアル スタック VNet には、IPv4 と IPv6 の両方のサブネットがあります。 Azure VNet には既にデュアル スタック機能が提供されています。
概要
Azure PowerShell は、IPv6 Azure Application Gateway を作成するために使用されます。 正しく動作することを確認するためにテストが実行されます。
学習内容は次のとおりです。
- デュアルスタック ネットワークの設定
- IPv6 フロントエンドを使用してアプリケーション ゲートウェイを作成
- 既定のバックエンド プールを使用して仮想マシン スケール セットを作成
Azure PowerShell は、IPv6 Azure Application Gateway を作成し、正しく動作することを確認するためのテストを実行するため使用されます。 アプリケーション ゲートウェイでは、管理対象サーバーへの Web トラフィックの管理とセキュリティ保護が可能です。 仮想マシン スケール セットは、バックエンド サーバーが Web トラフィックを管理するためのものです。 スケール セットには、アプリケーション ゲートウェイの既定のバックエンド プールに追加された 2 つの仮想マシン インスタンスが含まれています。 アプリケーション ゲートウェイのコンポーネントの詳細については、Application Gateway コンポーネントに関する記事を参照してください。
また、Azure portal を使用してこのクイックスタートを完了することもできます。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。 バージョンを確認するには、Get-Module -ListAvailable Az
を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Login-AzAccount
を実行して Azure との接続を作成することも必要です。
リージョンと可用性
IPv6 Application Gateway は、Application Gateway v2 SKU がサポートされているすべてのパブリック クラウド リージョンで使用できます。 また、21Vianet によって運営される Microsoft Azure および Azure Government でもご利用いただけます
制限事項
- IPv4 と IPv6 の両方のアドレスを持つフロントエンドをサポートしているのは v2 SKU のみです
- IPv6 バックエンドは現在サポートされていません
- IPv6 プライベート リンクは現在サポートされていません
- IPv6 専用 Application Gateway は現在サポートされていません。 Application Gateway はデュアル スタックである必要があります (IPv6 と IPv4)
- Application Gateway イングレス コントローラー (AGIC) では、IPv6 構成はサポートされていません
- 既存の IPv4 アプリケーション ゲートウェイはデュアル スタック アプリケーション ゲートウェイにアップグレードできません
- IPv6 一致条件を含む WAF カスタム ルールは現在サポートされていません
リソース グループを作成する
リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 New-AzResourceGroup を使用して Azure リソース グループを作成します。
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
デュアルスタック サブネットとバックエンド サブネットを構成する
New-AzVirtualNetworkSubnetConfig を使用して、myBackendSubnet および myAGSubnet という名前のサブネットを構成します。
$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)
Application Gateway フロントエンドのパブリック 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 構成とフロントエンド ポートを作成する
New-AzApplicationGatewayIPConfiguration を使用して、前に作成した myAGSubnet をアプリケーション ゲートウェイに関連付けます。 New-AzApplicationGatewayFrontendIPConfig を使用して、myAGPublicIPAddress をアプリケーション ゲートウェイに割り当てます。
$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
バックエンド プールと設定の作成
New-AzApplicationGatewayBackendAddressPool を使用して、アプリケーション ゲートウェイに対して appGatewayBackendPool という名前のバックエンド プールを作成します。 New-AzApplicationGatewayBackendHttpSettings を使用して、バックエンド アドレス プールの設定を構成します。
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
既定のリスナーとルールの作成
アプリケーション ゲートウェイがバックエンド プールに対して適切にトラフィックをルーティングするためにはリスナーが必要です。 この例では、ルート URL でトラフィックをリッスンする基本的なリスナーを作成します。
New-AzApplicationGatewayHttpListener と、前に作成したフロントエンド構成およびフロントエンド ポートを使用して、myDefaultListener という名前のリスナーを作成します。 着信トラフィックに使用するバックエンド プールをリスナーが判断するには、ルールが必要です。 New-AzApplicationGatewayRequestRoutingRule を使用して、rule1 という名前の基本ルールを作成します。
$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
バックエンド サーバー
アプリケーション ゲートウェイを作成したら、Web サイトのホストとなるバックエンド仮想マシンを作成します。 バックエンドは、NIC、仮想マシン スケール セット、パブリック IP アドレス、内部 IP アドレス、完全修飾ドメイン名(FQDN)、および Azure App Service のようなマルチテナント バックエンドで構成できます。
2 つの仮想マシンの作成
この例では、アプリケーション ゲートウェイのバックエンド サーバーとして使用する 2 つの仮想マシンを作成します。 Azure によってアプリケーション ゲートウェイが正常に作成されたことを確認するために、仮想マシンには IIS がインストールされいます。 スケール セットは、IP アドレス設定を構成するときにバックエンド プールに割り当てられます。
仮想マシンを作成するには、先ほど作成した Application Gateway バックエンド プールの構成を Get-AzApplicationGatewayBackendAddressPool を使用して取得します。 この情報を使用すると、以下を実行できます。
- New-AzNetworkInterface を使用してネットワーク インターフェイスを作成します。
- New-AzVMConfig を使用して仮想マシンの構成を作成します。
- New-AzVM を使用して、仮想マシンを作成する。
Note
次のコード サンプルを実行して仮想マシンを作成するときに、Azure から資格情報の入力を求められます。 ユーザー名とパスワードを入力してください。VM の作成には数分かかります。
$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
}
Application Gateway のパブリック IP アドレスを検索する
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6
フロントエンド IPv6 アドレスに DNS 名を割り当てる
DNS 名を使用すると、IPv6 Application Gatewayのテストが簡単になります。 独自のドメインとレジストラーを使用してパブリック 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
アプリケーション ゲートウェイをテストする
以前は、アプリケーション ゲートウェイのパブリック IPv6 アドレスに DNS 名 myipv6appgw.eastus.cloudapp.azure.com を割り当てていました。 この接続をテストするには、次を行います。
- Invoke-WebRequest コマンドレットを使用して、IPv6 フロントエンドに要求を発行します。
- 応答を確認します。 myVM1 または myVM2 の有効な応答によって、アプリケーション ゲートウェイが正常に作成されたことが確認され、それによりバックエンドに正常に接続できます。 コマンドを複数回発行すると、ゲートウェイは負荷分散を行い、後続の要求には別のバックエンド サーバーが応答します。
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2
重要
DNS 名または IPv6 アドレスへの接続に失敗した場合は、デバイスから IPv6 アドレスを参照できないことが原因である可能性があります。 この接続の失敗が問題かどうかを確認するには、アプリケーション ゲートウェイの IPv4 アドレスもテストしてください。 IPv4 アドレスが正常に接続された場合、デバイスにパブリック IPv6 アドレスが割り当てられない可能性があります。 その場合は、デュアルスタック VM で接続のテストしてみてください。
リソースをクリーンアップする
必要がなくなったら、Remove-AzResourceGroup を使用して、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除します。
Remove-AzResourceGroup -Name myResourceGroupAG