이 문서에서는 Azure에서 표준 Load Balancer를 사용하여 이중 스택(IPv4 + IPv6) 애플리케이션을 배포하는 방법을 보여 줍니다. 이 시나리오에는 이중 스택 서브넷이 있는 이중 스택 가상 네트워크, 이중(IPv4 + IPv6) 프런트 엔드 구성이 있는 표준 Load Balancer, 이중 IP 구성이 있는 NIC가 있는 VM, 이중 네트워크 보안 그룹 규칙 및 이중 공용 IP가 포함됩니다.
Azure PowerShell의 다음 지침에 따라 Azure에서 표준 Load Balancer를 사용하여 이중 스택(IPv4 + IPv6) 애플리케이션을 배포합니다.
리소스 그룹 만들기
이중 스택 가상 네트워크를 만들려면 먼저 New-AzResourceGroup을 사용하여 리소스 그룹을 만들어야 합니다. 다음 예제에서는 미국 동부 위치에 myRGDualStack이라는 리소스 그룹을 만듭니다.
$rg = New-AzResourceGroup `
-ResourceGroupName "dsRG1" `
-Location "east us"
IPv4 및 IPv6 공용 IP 주소 만들기
인터넷에서 가상 머신에 액세스하려면 부하 분산 장치에 대한 IPv4 및 IPv6 공용 IP 주소가 필요합니다. New-AzPublicIpAddress를 사용하여 공용 IP 주소를 만듭니다. 다음 예에서는 dsRG1 리소스 그룹에 dsPublicIP_v4 및 dsPublicIP_v6이라는 IPv4 및 IPv6 공용 IP 주소를 만듭니다.
$PublicIP_v4 = New-AzPublicIpAddress `
-Name "dsPublicIP_v4" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv4 `
-Sku Standard
$PublicIP_v6 = New-AzPublicIpAddress `
-Name "dsPublicIP_v6" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv6 `
-Sku Standard
RDP 연결을 사용하여 가상 머신에 액세스하려면 New-AzPublicIpAddress를 사용하여 가상 머신에 대한 IPV4 공용 IP 주소를 만듭니다.
$RdpPublicIP_1 = New-AzPublicIpAddress `
-Name "RdpPublicIP_1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
$RdpPublicIP_2 = New-AzPublicIpAddress `
-Name "RdpPublicIP_2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
표준 Load Balancer 만들기
이 섹션에서는 부하 분산 장치의 이중 프런트 엔드 IP(IPv4 및 IPv6) 및 백 엔드 주소 풀을 구성한 다음, 표준 Load Balancer를 만듭니다.
프런트 엔드 IP 만들기
New-AzLoadBalancerFrontendIpConfig를 사용하여 프런트 엔드 IP를 만듭니다. 다음 예제에서는 dsLbFrontEnd_v4 및 dsLbFrontEnd_v6라는 IPv4 및 IPv6 프런트 엔드 IP 구성을 만듭니다.
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v4" `
-PublicIpAddress $PublicIP_v4
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PublicIpAddress $PublicIP_v6
나중에 배포된 가상 머신에 대한 New-AzLoadBalancerBackendAddressPoolConfig 를 사용하여 백 엔드 주소 풀을 만듭니다. 다음 예제에서는 IPV4 및 IPv6 NIC 구성이 모두 포함된 가상 머신을 포함하도록 dsLbBackEndPool_v4 및 dsLbBackEndPool_v6 백 엔드 주소 풀을 만듭니다.
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"
상태 프로브 만들기
Add-AzLoadBalancerProbeConfig를 사용하여 VM 상태를 모니터링하는 상태 프로브를 만듭니다.
$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
부하 분산 장치 규칙 만들기
부하 분산 장치 규칙은 VM으로 트래픽이 분산되는 방법을 정의하는 데 사용됩니다. 들어오는 트래픽에 대한 프런트 엔드 IP 구성 및 트래픽을 수신할 백 엔드 IP 풀과 필요한 원본 및 대상 포트를 함께 정의합니다. 정상 VM만 트래픽을 수신하도록 하려면 필요에 따라 상태 프로브를 정의할 수 있습니다. 기본 부하 분산 장치는 IPv4 프로브를 사용하여 VM의 IPv4 및 IPv6 엔드포인트의 상태를 둘 다 평가합니다. 표준 부하 분산 장치는 명시적으로 IPv6 상태 프로브를 지원합니다.
Add-AzLoadBalancerRuleConfig를 사용하여 부하 분산 장치 규칙을 만듭니다. 다음 예제에서는 dsLBrule_v4 및 dsLBrule_v6이라는 부하 분산 장치 규칙을 만들고 IPv4 및 IPv6 프런트 엔드 IP 구성에 대한 TCP 포트 80의 트래픽을 분산합니다.
$lbrule_v4 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v4" `
-FrontendIpConfiguration $frontendIPv4 `
-BackendAddressPool $backendPoolv4 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-probe $probe
$lbrule_v6 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v6" `
-FrontendIpConfiguration $frontendIPv6 `
-BackendAddressPool $backendPoolv6 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-probe $probe
부하 분산 장치 만들기
New-AzLoadBalancer를 사용하여 표준 Load Balancer를 만듭니다. 다음 예제는 이전 단계에서 만든 IPv4 및 IPv6 프런트 엔드 IP 구성, 백 엔드 풀, 부하 분산 규칙을 사용하여 myLoadBalancer라는 퍼블릭 표준 Load Balancer를 만듭니다.
$lb = New-AzLoadBalancer `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "MyLoadBalancer" `
-Sku "Standard" `
-FrontendIpConfiguration $frontendIPv4,$frontendIPv6 `
-BackendAddressPool $backendPoolv4,$backendPoolv6 `
-LoadBalancingRule $lbrule_v4,$lbrule_v6 `
-Probe $probe
네트워크 리소스 만들기
일부 VM을 배포하고 부하 분산 장치를 테스트하려면 먼저 지원되는 네트워크 리소스(가용성 집합, 네트워크 보안 그룹, 가상 네트워크 및 가상 NIC)를 만들어야 합니다.
가용성 집합 만들기
앱의 고가용성을 향상시키려면 VM을 가용성 집합에 배치합니다.
New-AzAvailabilitySet을 사용하여 가용성 집합을 만듭니다. 다음 예제는 myAvailabilitySet이라는 가용성 집합을 만듭니다.
$avset = New-AzAvailabilitySet `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsAVset" `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku aligned
네트워크 보안 그룹 만들기
가상 네트워크의 인바운드 및 아웃바운드 통신을 제어하는 규칙에 대한 네트워크 보안 그룹을 만듭니다.
포트 3389에 대한 네트워크 보안 그룹 규칙 만들기
포트 3389를 통해 RDP 연결을 허용하도록 New-AzNetworkSecurityRuleConfig를 사용하여 네트워크 보안 그룹 규칙을 만듭니다.
$rule1 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleRDP' `
-Description 'Allow RDP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389
포트 80에 대한 네트워크 보안 그룹 규칙 만들기
New-AzNetworkSecurityRuleConfig를 사용하여 포트 80을 통해 인터넷 연결을 허용하도록 네트워크 보안 그룹 규칙을 만듭니다.
$rule2 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleHTTP' `
-Description 'Allow HTTP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80
네트워크 보안 그룹 만들기
New-AzNetworkSecurityGroup을 사용하여 네트워크 보안 그룹을 만듭니다.
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsNSG1" `
-SecurityRules $rule1,$rule2
가상 네트워크 만들기
New-AzVirtualNetwork를 사용하여 가상 네트워크를 만듭니다. 다음 예제에서는 mySubnet을 사용하여 dsVnet이라는 가상 네트워크를 만듭니다.
# Create dual stack subnet
$subnet = New-AzVirtualNetworkSubnetConfig `
-Name "dsSubnet" `
-AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"
# Create the virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsVnet" `
-AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48" `
-Subnet $subnet
NIC 만들기
New-AzNetworkInterface를 사용하여 가상 NIC를 만듭니다. 다음 예제에서는 IPv4 및 IPv6 구성을 둘 다 사용하여 두 개의 가상 NIC를 만듭니다. (다음 단계에서 앱에 대해 만드는 각 VM에 대해 가상 NIC 하나씩)
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_1
$Ip6Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp6Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv6 `
-LoadBalancerBackendAddressPool $backendPoolv6
$NIC_1 = New-AzNetworkInterface `
-Name "dsNIC1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_2
$NIC_2 = New-AzNetworkInterface `
-Name "dsNIC2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
가상 머신 만들기
Get-Credential을 사용하여 VM의 관리자 사용자 이름과 암호를 설정합니다.
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VMs."
이제 New-AzVM을 사용하여 VM을 만들 수 있습니다. 다음 예제에서는 2개의 VM 및 아직 없는 경우 필요한 가상 네트워크 구성 요소를 만듭니다.
$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"
$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id 3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig1
$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id 3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig2
IPv4 및 IPv6 엔드포인트의 IP 주소 확인
get-AzNetworkInterface
를 사용하여 이 배포에 사용되는 IP를 요약하려면 리소스 그룹의 모든 네트워크 인터페이스 개체를 가져옵니다. 또한 get-AzpublicIpAddress
를 사용하여 IPv4 및 IPv6 엔드포인트의 Load Balancer 프런트 엔드 주소를 가져옵니다.
$rgName= "dsRG1"
$NICsInRG= get-AzNetworkInterface -resourceGroupName $rgName
write-host `nSummary of IPs in this Deployment:
write-host ******************************************
foreach ($NIC in $NICsInRG) {
$VMid= $NIC.virtualmachine.id
$VMnamebits= $VMid.split("/")
$VMname= $VMnamebits[($VMnamebits.count-1)]
write-host `nPrivate IP addresses for $VMname
$IPconfigsInNIC= $NIC.IPconfigurations
foreach ($IPconfig in $IPconfigsInNIC) {
$IPaddress= $IPconfig.privateipaddress
write-host " "$IPaddress
IF ($IPconfig.PublicIpAddress.ID) {
$IDbits= ($IPconfig.PublicIpAddress.ID).split("/")
$PipName= $IDbits[($IDbits.count-1)]
$PipObject= get-azPublicIpAddress -name $PipName -resourceGroup $rgName
write-host " "RDP address: $PipObject.IpAddress
}
}
}
write-host `nPublic IP addresses on Load Balancer:
(get-AzpublicIpAddress -resourcegroupname $rgName | where { $_.name -notlike "RdpPublicIP*" }).IpAddress
다음 그림은 두 VM의 프라이빗 IPv4 및 IPv6 주소와 Load Balancer의 프런트 엔드 IPv4 및 IPv6 IP 주소를 나열하는 샘플 출력을 보여 줍니다.

Azure Portal에서 IPv6 이중 스택 가상 네트워크 보기
다음과 같이 Azure Portal에서 IPv6 이중 스택 가상 네트워크를 볼 수 있습니다.
- 포털의 검색 창에 dsVnet을 입력합니다.
- 검색 결과에서 표시되는 dsVnet을 선택합니다. 그러면 dsVnet이라는 이중 스택 가상 네트워크의 개요 페이지가 시작됩니다. 이중 스택 가상 네트워크는 dsSubnet이라는 이중 스택 서브넷에 있는 IPv4 및 IPv6 구성을 모두 사용하여 두 개의 NIC를 표시합니다.
리소스 정리
더 이상 필요하지 않은 경우 Remove-AzResourceGroup 명령을 사용하여 리소스 그룹, VM 및 모든 관련 리소스를 제거할 수 있습니다.
Remove-AzResourceGroup -Name dsRG1
Azure CLI의 다음 지침에 따라 Azure에서 표준 Load Balancer를 사용하여 이중 스택(IPv4 + IPv6) 애플리케이션을 배포합니다.
리소스 그룹 만들기
이중 스택 가상 네트워크를 만들려면 먼저 az group create를 사용하여 리소스 그룹을 만들어야 합니다. 다음 예제에서는 동쪽 위치에 DsResourceGroup01이라는 리소스 그룹을 만듭니다.
az group create \
--name DsResourceGroup01 \
--location eastus
부하 분산 장치에 대한 IPv4 및 IPv6 공용 IP 주소 만들기
인터넷에서 IPv4 및 IPv6 엔드포인트에 액세스하려면 부하 분산 장치에 대한 IPv4 및 IPv6 공용 IP 주소가 필요합니다. "az network public-ip create"를 사용하여 공용 IP 주소를 만듭니다. 다음 예제에서는 DsResourceGroup01 리소스 그룹에 dsPublicIP_v4 및 dsPublicIP_v6 IPv4 및 IPv6 공용 IP 주소를 만듭니다.
# Create an IPV4 IP address
az network public-ip create \
--name dsPublicIP_v4 \
--resource-group DsResourceGroup01 \
--location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv4
# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6 \
--resource-group DsResourceGroup01 \
--location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv6
VM에 대한 공용 IP 주소 만들기
인터넷에서 VM에 원격으로 액세스하려면 VM에 대한 IPv4 공용 IP 주소가 필요합니다. az network public-ip create 명령을 사용하여 공용 IP 주소를 만듭니다.
az network public-ip create \
--name dsVM0_remote_access \
--resource-group DsResourceGroup01 \
--location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
az network public-ip create \
--name dsVM1_remote_access \
--resource-group DsResourceGroup01 \
--location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
표준 Load Balancer 만들기
이 섹션에서는 부하 분산 장치의 이중 프런트 엔드 IP(IPv4 및 IPv6) 및 백 엔드 주소 풀을 구성한 다음, 표준 Load Balancer를 만듭니다.
부하 분산 장치 만들기
az network lb create를 사용하여 dsLB이라는 표준 부하 분산 장치를 만들고, 프런트 엔드 풀 dsLbFrontEnd_v4와 이전 단계에서 만든 IPv4 공용 IP 주소 dsPublicIP_v4에 연결된 백엔드 풀 dsLbBackEndPool_v4를 포함합니다.
az network lb create \
--name dsLB \
--resource-group DsResourceGroup01 \
--sku Standard \
--location eastus \
--frontend-ip-name dsLbFrontEnd_v4 \
--public-ip-address dsPublicIP_v4 \
--backend-pool-name dsLbBackEndPool_v4
IPv6 프런트 엔드 만들기
az network lb frontend-ip create를 사용하여 IPV6 프런트 엔드 IP를 만듭니다. 다음 예제에서는 dsLbFrontEnd_v6 프런트 엔드 IP 구성을 만들고 dsPublicIP_v6 주소를 연결합니다.
az network lb frontend-ip create \
--lb-name dsLB \
--name dsLbFrontEnd_v6 \
--resource-group DsResourceGroup01 \
--public-ip-address dsPublicIP_v6
az network lb address-pool create를 사용하여 IPv6 백 엔드 주소 풀을 만듭니다. 다음 예제에서는 IPv6 NIC 구성이 있는 VM을 포함하도록 dsLbBackEndPool_v6 백 엔드 주소 풀을 만듭니다.
az network lb address-pool create \
--lb-name dsLB \
--name dsLbBackEndPool_v6 \
--resource-group DsResourceGroup01
상태 프로브 만들기
az network lb probe create를 사용하여 상태 프로브를 만들어 가상 머신의 상태를 모니터링합니다.
az network lb probe create -g DsResourceGroup01 --lb-name dsLB -n dsProbe --protocol tcp --port 3389
부하 분산 장치 규칙 만들기
부하 분산 장치 규칙은 VM으로 트래픽이 분산되는 방법을 정의하는 데 사용됩니다. 들어오는 트래픽에 대한 프런트 엔드 IP 구성 및 트래픽을 수신할 백 엔드 IP 풀과 필요한 원본 및 대상 포트를 함께 정의합니다.
az network lb rule create를 사용하여 부하 분산 장치 규칙을 만듭니다. 다음 예제에서는 dsLBrule_v4 및 dsLBrule_v6이라는 부하 분산 장치 규칙을 만들고 IPv4 및 IPv6 프런트 엔드 IP 구성에 대한 TCP 포트 80의 트래픽을 분산합니다.
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v4 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v4 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v4
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v6 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v6 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v6
네트워크 리소스 만들기
일부 VM을 배포하기 전에 가용성 집합, 네트워크 보안 그룹, 가상 네트워크 및 가상 NIC와 같은 지원 네트워크 리소스를 만들어야 합니다.
가용성 집합 만들기
앱의 가용성을 향상하려면 VM을 가용성 집합에 배치합니다.
az vm availability-set create를 사용하여 가용성 집합을 만듭니다. 다음 예제에서는 dsAVset이라는 가용성 집합을 만듭니다.
az vm availability-set create \
--name dsAVset \
--resource-group DsResourceGroup01 \
--location eastus \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
네트워크 보안 그룹 만들기
가상 네트워크의 인바운드 및 아웃바운드 통신을 제어하는 규칙에 대한 네트워크 보안 그룹을 만듭니다.
네트워크 보안 그룹 만들기
az network nsg create를 사용하여 네트워크 보안 그룹 만들기
az network nsg create \
--name dsNSG1 \
--resource-group DsResourceGroup01 \
--location eastus
인바운드 및 아웃바운드 연결에 대한 네트워크 보안 그룹 규칙 만들기
포트 3389를 통한 RDP 연결, 포트 80을 통한 인터넷 연결 및 az network nsg 규칙 만들기를 사용한 아웃바운드 연결을 허용하는 네트워크 보안 그룹 규칙을 만듭니다.
# Create inbound rule for port 3389
az network nsg rule create \
--name allowRdpIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 100 \
--description "Allow Remote Desktop In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges 3389
# Create inbound rule for port 80
az network nsg rule create \
--name allowHTTPIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 200 \
--description "Allow HTTP In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges 80 \
--destination-address-prefixes "*" \
--destination-port-ranges 80
# Create outbound rule
az network nsg rule create \
--name allowAllOut \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 300 \
--description "Allow All Out" \
--access Allow \
--protocol "*" \
--direction Outbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges "*"
가상 네트워크 만들기
az network vnet create를 사용하여 가상 네트워크를 만듭니다. 다음 예제는 서브넷 dsSubNET_v4 및 dsSubNET_v6를 포함한 가상 네트워크 dsVNET을 생성합니다:
# Create the virtual network
az network vnet create \
--name dsVNET \
--resource-group DsResourceGroup01 \
--location eastus \
--address-prefixes "10.0.0.0/16" "fd00:db8:deca::/48"
# Create a single dual stack subnet
az network vnet subnet create \
--name dsSubNET \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--address-prefixes "10.0.0.0/24" "fd00:db8:deca:deed::/64" \
--network-security-group dsNSG1
NIC 만들기
az network nic create를 사용하여 각 VM에 대한 가상 NIC를 만듭니다. 다음 예제에서는 각 VM에 대한 가상 NIC를 만듭니다. 각 NIC에는 두 개의 IP 구성(IPv4 구성 1개, IPv6 구성 1개)이 있습니다. az network nic ip-config create를 사용하여 IPV6 구성을 만듭니다.
# Create NICs
az network nic create \
--name dsNIC0 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM0_remote_access
az network nic create \
--name dsNIC1 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM1_remote_access
# Create IPV6 configurations for each NIC
az network nic ip-config create \
--name dsIp6Config_NIC0 \
--nic-name dsNIC0 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
az network nic ip-config create \
--name dsIp6Config_NIC1 \
--nic-name dsNIC1 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
가상 머신 만들기
az vm create를 사용하여 VM을 만듭니다. 다음 예제에서는 2개의 VM 및 아직 없는 경우 필요한 가상 네트워크 구성 요소를 만듭니다.
다음과 같이 가상 머신 dsVM0 을 만듭니다.
az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
다음과 같이 가상 머신 dsVM1 을 만듭니다.
az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Azure Portal에서 IPv6 이중 스택 가상 네트워크 보기
다음과 같이 Azure Portal에서 IPv6 이중 스택 가상 네트워크를 볼 수 있습니다.
- 포털의 검색 창에 dsVnet을 입력합니다.
- 검색 결과에 myVirtualNetwork가 표시되면 선택합니다. 그러면 dsVnet이라는 이중 스택 가상 네트워크의 개요 페이지가 시작됩니다. 이중 스택 가상 네트워크는 dsSubnet이라는 이중 스택 서브넷에 있는 IPv4 및 IPv6 구성을 모두 사용하여 두 개의 NIC를 표시합니다.
리소스 정리
더 이상 필요하지 않은 경우 az group delete 명령을 사용하여 리소스 그룹, VM 및 모든 관련된 리소스를 제거할 수 있습니다.
az group delete --name DsResourceGroup01
이 문서에 설명된 템플릿을 사용하여 Azure에서 표준 Load Balancer를 사용하여 이중 스택(IPv4 + IPv6) 애플리케이션을 배포합니다.
필수 구성
템플릿 내 섹션을 검색하여 그것들이 위치할 곳을 확인합니다.
가상 네트워크에 대한 IPv6 주소 공간
추가할 템플릿 섹션:
"addressSpace": {
"addressPrefixes": [
"[variables('vnetv4AddressRange')]",
"[variables('vnetv6AddressRange')]"
IPv6 가상 네트워크 addressSpace 내의 IPv6 서브넷
추가할 템플릿 섹션:
{
"name": "V6Subnet",
"properties": {
"addressPrefix": "[variables('subnetv6AddressRange')]"
}
NIC에 대한 IPv6 구성
추가할 템플릿 섹션:
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
IPv6 NSG(네트워크 보안 그룹) 규칙
{
"name": "default-allow-rdp",
"properties": {
"description": "Allow RDP",
"protocol": "Tcp",
"sourcePortRange": "33819-33829",
"destinationPortRange": "5000-6000",
"sourceAddressPrefix": "fd00:db8:deca:deed::/64",
"destinationAddressPrefix": "fd00:db8:deca:deed::/64",
"access": "Allow",
"priority": 1003,
"direction": "Inbound"
}
조건부 구성
네트워크 가상 어플라이언스 사용 중인 경우 경로 테이블에 IPv6 경로를 추가합니다. 그렇지 않으면 이 구성은 선택 사항입니다.
{
"type": "Microsoft.Network/routeTables",
"name": "v6route",
"apiVersion": "[variables('ApiVersion')]",
"location": "[resourceGroup().location]",
"properties": {
"routes": [
{
"name": "v6route",
"properties": {
"addressPrefix": "fd00:db8:deca:deed::/64",
"nextHopType": "VirtualAppliance",
"nextHopIpAddress": "fd00:db8:ace:f00d::1"
}
선택적 구성
가상 네트워크에 대한 IPv6 인터넷 액세스
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
IPv6 공용 IP 주소
{
"apiVersion": "[variables('ApiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "lbpublicip-v6",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static",
"publicIPAddressVersion": "IPv6"
}
Load Balancer용 IPv6 프런트 엔드
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Load Balancer용 IPv6 백 엔드 주소 풀
"backendAddressPool": {
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', 'loadBalancer'), '/backendAddressPools/LBBAP-v6')]"
},
"protocol": "Tcp",
"frontendPort": 8080,
"backendPort": 8080
},
"name": "lbrule-v6"
들어오는 포트와 나가는 포트를 연결하는 IPv6 부하 분산 장치 규칙
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
샘플 VM 템플릿 JSON
Azure Resource Manager 템플릿을 사용하여 Azure 가상 네트워크에 IPv6 이중 스택 애플리케이션을 배포하려면 여기에서 샘플 템플릿을 확인 합니다.