다음을 통해 공유


Azure PowerShell을 사용하여 프런트 엔드 공용 IPv6 주소로 Application Gateway 구성

Azure Application Gateway는 클라이언트의 이중 스택(IPv4 및 IPv6) 프런트 엔드 연결을 지원합니다. IPv6 프런트 엔드 연결을 사용하려면 새 Application Gateway를 만들어야 합니다. 현재는 기존 IPv4 전용 Application Gateway를 이중 스택(IPv4 및 IPv6) Application Gateway로 업그레이드할 수 없습니다. 또한 현재 백 엔드 IPv6 주소는 지원되지 않습니다.

IPv6 프런트 엔드 지원을 지원하려면 이중 스택 VNet을 만들어야 합니다. 이 이중 스택 VNet에는 IPv4 및 IPv6 모두에 대한 서브넷이 있습니다. Azure VNet은 이미 이중 스택 기능을 제공합니다.

개요

Azure PowerShell은 IPv6 Azure Application Gateway를 만드는 데 사용됩니다. 올바르게 작동하는지 확인하기 위해 테스트가 수행됩니다.

다음 방법에 대해 설명합니다.

Azure PowerShell은 IPv6 Azure 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가 지원되는 모든 퍼블릭 클라우드 지역에서 사용할 수 있습니다. 21VianetAzure Government에서 운영하는 Microsoft Azure에서도 사용할 수 있습니다.

제한 사항

  • v2 SKU만 IPv4 및 IPv6 주소가 모두 있는 프런트 엔드를 지원합니다.
  • IPv6 백 엔드는 현재 지원되지 않습니다.
  • IPv6 프라이빗 링크는 현재 지원되지 않습니다.
  • IPv6 전용 Application Gateway는 현재 지원되지 않습니다. Application Gateway는 이중 스택(IPv6 및 IPv4)이어야 합니다.
  • AGIC(Application Gateway 수신 컨트롤러)는 IPv6 구성을 지원하지 않습니다.
  • 기존 IPv4 Application Gateway는 이중 스택 Application Gateway로 업그레이드할 수 없습니다.
  • IPv6 일치 조건이 있는 WAF 사용자 지정 규칙은 현재 지원되지 않습니다.

리소스 그룹 만들기

리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. New-AzResourceGroup을 사용하여 Azure 리소스 그룹을 만듭니다.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

이중 스택 서브넷 및 백 엔드 서브넷 구성

New-AzVirtualNetworkSubnetConfig를 사용하여 myBackendSubnetmyAGSubnet이라는 서브넷을 구성합니다.

$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

Application Gateway 만들기

이제 필요한 지원 리소스를 만들었으므로 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

백 엔드 서버

애플리케이션 게이트웨이를 만들었으므로 웹 사이트를 호스트할 백 엔드 가상 머신을 만들 수 있습니다. 백 엔드는 NIC, 가상 머신 확장 집합, 공용 IP 주소, 내부 IP 주소, FQDN(정규화된 도메인 이름) 및 다중 테넌트 백 엔드(예: Azure App Service)로 구성될 수 있습니다.

두 개의 가상 머신 만들기

이 예제에서는 애플리케이션 게이트웨이의 백 엔드 서버로 사용되는 두 개의 가상 머신을 만듭니다. Azure가 애플리케이션 게이트웨이를 성공적으로 만들었는지 확인할 수 있도록 가상 머신에 IIS를 설치합니다. IP 주소 설정을 구성할 때 확장 집합을 백 엔드 풀에 할당합니다.

가상 머신을 만들려면 Get-AzApplicationGatewayBackendAddressPool을 사용하여 최근에 만든 Application Gateway 백 엔드 풀 구성을 가져옵니다. 이 정보는 다음을 사용합니다.

  • New-AzNetworkInterface를 사용하여 네트워크 인터페이스를 만듭니다.
  • New-AzVMConfig를 사용하여 가상 머신 구성을 만듭니다.
  • New-AzVM을 사용하여 가상 머신을 만듭니다.

참고 항목

가상 머신을 만드는 다음 코드 샘플을 실행하면 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 애플리케이션 게이트웨이에 대한 테스트가 더 쉬워집니다. 사용자 고유의 도메인 및 등록 기관에서 공용 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 cmdlet을 사용하여 IPv6 프런트 엔드에 요청을 실행합니다.
  2. 응답을 확인합니다. myVM1 또는 myVM2의 응답이 유효하면 애플리케이션 게이트웨이가 성공적으로 만들어졌으며 백 엔드에 성공적으로 연결할 수 있다는 의미입니다. 명령을 여러 번 실행하면 게이트웨이가 부하를 분산하고 다른 백 엔드 서버의 후속 요청에 응답합니다.
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2

Important

DNS 이름 또는 IPv6 주소에 대한 연결이 실패하는 경우 디바이스에서 IPv6 주소를 찾아볼 수 없기 때문일 수 있습니다. 이것이 문제인지 확인하려면 애플리케이션 게이트웨이의 IPv4 주소도 테스트합니다. IPv4 주소가 성공적으로 연결되면 디바이스에 할당된 공용 IPv6 주소가 없을 수 있습니다. 이 경우 이중 스택 VM을 사용하여 연결을 테스트해 볼 수 있습니다.

리소스 정리

더 이상 필요하지 않은 경우 Remove-AzResourceGroup 명령을 사용하여 리소스 그룹, 애플리케이션 게이트웨이 및 모든 관련 리소스를 제거합니다.

Remove-AzResourceGroup -Name myResourceGroupAG

다음 단계