W tym artykule pokazano, jak wdrożyć aplikację z podwójnym stosem (IPv4 + IPv6) przy użyciu usługi Standard Load Balancer na platformie Azure. Scenariusz obejmuje sieć wirtualną z podwójnym stosem oraz podsiecią podwójnego stosu, standardowy moduł równoważenia obciążenia z dwiema konfiguracjami frontonu (IPv4 + IPv6), maszyny wirtualne z kartami sieciowymi, które mają konfigurację podwójnego adresu IP, podwójne reguły grupy zabezpieczeń sieciowych oraz podwójne publiczne adresy IP.
Postępuj zgodnie z tymi instrukcjami w programie Azure PowerShell, aby wdrożyć aplikację z podwójnym stosem (IPv4 i IPv6) przy użyciu standardowego load balancera w Azure.
Tworzenie grupy zasobów
Przed utworzeniem sieci wirtualnej z podwójnym stosem należy utworzyć grupę zasobów za pomocą New-AzResourceGroup. Poniższy przykład tworzy grupę zasobów o nazwie myRGDualStack w lokalizacji wschodnia część USA.
$rg = New-AzResourceGroup `
-ResourceGroupName "dsRG1" `
-Location "east us"
Tworzenie publicznych adresów IP protokołów IPv4 i IPv6
Aby uzyskać dostęp do maszyn wirtualnych z Internetu, potrzebujesz publicznych adresów IP protokołu IPv4 i IPv6 dla modułu równoważenia obciążenia. Utwórz publiczne adresy IP za pomocą polecenia New-AzPublicIpAddress. Poniższy przykład tworzy publiczny adres IP IPv4 i IPv6 o nazwie dsPublicIP_v4 i dsPublicIP_v6 w grupie zasobów dsRG1 :
$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
Aby uzyskać dostęp do maszyn wirtualnych przy użyciu połączenia RDP, utwórz publiczne adresy IP protokołu IPV4 dla maszyn wirtualnych za pomocą polecenia New-AzPublicIpAddress.
$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
Utwórz standardowy Load Balancer
W tej sekcji skonfigurujesz podwójny adres IP frontendu (IPv4 i IPv6) oraz pulę adresów zaplecza dla równoważnika obciążenia, a następnie utworzysz Standardowy Load Balancer.
Tworzenie adresu IP frontonu
Utwórz adres IP frontonu za pomocą polecenia New-AzLoadBalancerFrontendIpConfig. W poniższym przykładzie są tworzone konfiguracje adresów IP frontonu IPv4 i IPv6 o nazwie dsLbFrontEnd_v4 i dsLbFrontEnd_v6:
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v4" `
-PublicIpAddress $PublicIP_v4
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PublicIpAddress $PublicIP_v6
Utwórz pulę adresów zaplecza za pomocą polecenia New-AzLoadBalancerBackendAddressPoolConfig dla maszyn wirtualnych wdrożonych później. Poniższy przykład obejmuje tworzenie pul adresów zaplecza o nazwie dsLbBackEndPool_v4 i dsLbBackEndPool_v6 w celu uwzględnienia maszyn wirtualnych z konfiguracjami kart sieciowych IPV4 i IPv6:
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"
Tworzenie sondy kondycji
Użyj polecenia Add-AzLoadBalancerProbeConfig , aby utworzyć sondę kondycji w celu monitorowania kondycji maszyn wirtualnych.
$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
Utwórz regułę równoważenia obciążenia
Reguła modułu równoważenia obciążenia służy do definiowania sposobu dystrybucji ruchu do maszyn wirtualnych. Zdefiniuj konfigurację adresu IP przedniego do obsługi ruchu przychodzącego oraz pulę adresów IP w zapleczu, która odbiera ruch, wraz z wymaganymi portami źródłowym i docelowym. Aby upewnić się, że tylko maszyny wirtualne w dobrej kondycji odbierają ruch, możesz opcjonalnie zdefiniować sondę kondycji. Podstawowy moduł równoważenia obciążenia używa sondy IPv4 do oceny kondycji zarówno punktów końcowych IPv4, jak i IPv6 na maszynach wirtualnych. Standardowy moduł równoważenia obciążenia obejmuje obsługę jawnych sond kondycji IPv6.
Utwórz regułę modułu równoważenia obciążenia przy użyciu polecenia Add-AzLoadBalancerRuleConfig. Poniższy przykład tworzy reguły modułu równoważenia obciążenia o nazwie dsLBrule_v4 i dsLBrule_v6 oraz równoważy ruch na porcie TCP 80 do konfiguracji adresów IP frontonu IPv4 i IPv6:
$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
Tworzenie modułu równoważenia obciążenia
Utwórz standardowy Load Balancer za pomocą polecenia New-AzLoadBalancer. Poniższy przykład tworzy publiczny Standardowy Load Balancer o nazwie myLoadBalancer przy użyciu konfiguracji IP frontonu IPv4 i IPv6, puli zaplecza oraz reguł równoważenia obciążenia utworzonych w poprzednich krokach.
$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
Tworzenie zasobów sieciowych
Przed wdrożeniem niektórych maszyn wirtualnych i przetestowania modułu równoważenia należy utworzyć pomocnicze zasoby sieciowe — zestaw dostępności, sieciową grupę zabezpieczeń, sieć wirtualną i wirtualne karty sieciowe.
Tworzenie zestawu dostępności
Aby poprawić wysoką dostępność aplikacji, umieść maszyny wirtualne w zestawie dostępności.
Aby utworzyć zestaw dostępności, użyj polecenia New-AzAvailabilitySet. W poniższym przykładzie zostanie utworzony zestaw dostępności o nazwie myAvailabilitySet:
$avset = New-AzAvailabilitySet `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsAVset" `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku aligned
Tworzenie sieciowej grupy zabezpieczeń
Utwórz sieciową grupę zabezpieczeń dla reguł, które zarządzają komunikacją przychodzącą i wychodzącą w sieci wirtualnej.
Tworzenie reguły sieciowej grupy zabezpieczeń dla portu 3389
Utwórz regułę sieciowej grupy zabezpieczeń, aby zezwolić na połączenia protokołu RDP za pośrednictwem portu 3389 przy użyciu polecenia New-AzNetworkSecurityRuleConfig.
$rule1 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleRDP' `
-Description 'Allow RDP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389
Utwórz regułę grupy zabezpieczeń sieci dla portu 80
Utwórz regułę sieciowej grupy zabezpieczeń, aby zezwolić na połączenia internetowe za pomocą portu 80 używając New-AzNetworkSecurityRuleConfig.
$rule2 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleHTTP' `
-Description 'Allow HTTP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80
Tworzenie sieciowej grupy zabezpieczeń
Utwórz sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup.
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsNSG1" `
-SecurityRules $rule1,$rule2
Tworzenie sieci wirtualnej
Utwórz sieć wirtualną przy użyciu polecenia New-AzVirtualNetwork. W poniższym przykładzie zostanie utworzona sieć wirtualna o nazwie dsVnet z podsiecią mySubnet:
# 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
Tworzenie kart sieciowych
Utwórz wirtualne karty sieciowe za pomocą New-AzNetworkInterface. W poniższym przykładzie są tworzone dwie wirtualne karty sieciowe z konfiguracjami IPv4 i IPv6. (Jedna wirtualna karta sieciowa na każdą maszynę wirtualną, którą tworzysz dla twojej aplikacji w kolejnych krokach).
$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
Tworzenie maszyn wirtualnych
Ustaw nazwę użytkownika i hasło administratora maszyn wirtualnych przy użyciu polecenia Get-Credential:
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VMs."
Następnie utwórz maszyny wirtualne za pomocą polecenia New-AzVM. Poniższy przykład tworzy dwie maszyny wirtualne i wymagane składniki sieci wirtualnej, jeśli jeszcze nie istnieją.
$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
Określanie adresów IP punktów końcowych IPv4 i IPv6
Pobierz wszystkie obiekty interfejsu sieciowego w grupie zasobów, aby podsumować adresy IP używane w tym wdrożeniu za pomocą polecenia get-AzNetworkInterface
. Ponadto uzyskaj adresy frontonu usługi Load Balancer dla punktów końcowych IPv4 i IPv6 za pomocą polecenia get-AzpublicIpAddress
.
$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
Na poniższej ilustracji przedstawiono przykładowe dane wyjściowe, które przedstawiają listę prywatnych adresów IPv4 i IPv6 dwóch maszyn wirtualnych oraz frontowych adresów IP IPv4 i IPv6 równoważnika obciążenia.
Zobacz sieć wirtualną o podwójnym stosie IPv6 w portalu Azure
Sieć wirtualną podwójnego stosu IPv6 można wyświetlić w witrynie Azure Portal w następujący sposób:
- Na pasku wyszukiwania portalu wprowadź ciąg dsVnet.
- Gdy sieć dsVnet pojawi się w wynikach wyszukiwania, wybierz ją. Uruchamia to stronę Przegląd dla dwustackowej sieci wirtualnej o nazwie dsVnet. Sieć wirtualna z podwójnym stosem pokazuje dwie karty sieciowe z konfiguracjami IPv4 i IPv6, które znajdują się w podsieci podwójnego stosu o nazwie dsSubnet.
Czyszczenie zasobów
Gdy grupa zasobów, maszyna wirtualna i wszystkie pokrewne zasoby nie będą już potrzebne, można je usunąć za pomocą polecenia Remove-AzResourceGroup.
Remove-AzResourceGroup -Name dsRG1
Postępuj zgodnie z tymi instrukcjami w Azure CLI, aby wdrożyć aplikację z podwójnym stosem (IPv4 + IPv6) przy użyciu usługi Standard Load Balancer na platformie Azure.
Tworzenie grupy zasobów
Przed utworzeniem sieci wirtualnej z podwójnym stosem należy utworzyć grupę zasobów za pomocą polecenia az group create. Poniższy przykład tworzy grupę zasobów o nazwie DsResourceGroup01 w lokalizacji eastus :
az group create \
--name DsResourceGroup01 \
--location eastus
Tworzenie publicznych adresów IP protokołu IPv4 i IPv6 dla modułu równoważenia obciążenia
Aby uzyskać dostęp do punktów końcowych IPv4 i IPv6 w Internecie, potrzebne są publiczne adresy IP protokołu IPv4 i IPv6 dla modułu równoważenia obciążenia. Utwórz publiczny adres IP za pomocą az network public-ip create. Poniższy przykład tworzy publiczny adres IP IPv4 i IPv6 o nazwie dsPublicIP_v4 i dsPublicIP_v6 w grupie zasobów DsResourceGroup01 :
# 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
Tworzenie publicznych adresów IP dla maszyn wirtualnych
Aby zdalnie uzyskać dostęp do maszyn wirtualnych w Internecie, potrzebne są publiczne adresy IP protokołu IPv4 dla maszyn wirtualnych. Utwórz publiczny adres IP za pomocą az network public-ip create.
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
Utwórz standardowy Load Balancer
W tej sekcji skonfigurujesz podwójny adres IP frontendu (IPv4 i IPv6) oraz pulę adresów zaplecza dla równoważnika obciążenia, a następnie utworzysz Standardowy Load Balancer.
Tworzenie modułu równoważenia obciążenia
Utwórz usługę Load Balancer w warstwie Standard za pomocą polecenia az network lb create o nazwie dsLB, która zawiera pulę frontend o nazwie dsLbFrontEnd_v4, pulę backend o nazwie dsLbBackEndPool_v4 skojarzoną z publicznym adresem IPv4 dsPublicIP_v4 utworzonym w poprzednim kroku.
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
Tworzenie frontonu IPv6
Utwórz adres IP frontonu IPV6 za pomocą az network lb frontend-ip create. Poniższy przykład tworzy konfigurację adresu IP frontonu o nazwie dsLbFrontEnd_v6 i dołącza adres dsPublicIP_v6 :
az network lb frontend-ip create \
--lb-name dsLB \
--name dsLbFrontEnd_v6 \
--resource-group DsResourceGroup01 \
--public-ip-address dsPublicIP_v6
Utwórz pule adresowe backend IPv6 za pomocą polecenia az network lb address-pool create. Poniższy przykład obejmuje tworzenie puli adresów zaplecza o nazwie dsLbBackEndPool_v6 w celu uwzględnienia maszyn wirtualnych z konfiguracjami kart interfejsu sieciowego IPv6:
az network lb address-pool create \
--lb-name dsLB \
--name dsLbBackEndPool_v6 \
--resource-group DsResourceGroup01
Tworzenie sondy kondycji
Utwórz sondę kondycji za pomocą polecenia az network lb probe create w celu monitorowania kondycji maszyn wirtualnych.
az network lb probe create -g DsResourceGroup01 --lb-name dsLB -n dsProbe --protocol tcp --port 3389
Utwórz regułę równoważenia obciążenia
Reguła modułu równoważenia obciążenia służy do definiowania sposobu dystrybucji ruchu do maszyn wirtualnych. Zdefiniuj konfigurację adresu IP przedniego do obsługi ruchu przychodzącego oraz pulę adresów IP w zapleczu, która odbiera ruch, wraz z wymaganymi portami źródłowym i docelowym.
Utwórz regułę modułu równoważenia obciążenia za pomocą polecenia az network lb rule create. Poniższy przykład tworzy reguły modułu równoważenia obciążenia o nazwie dsLBrule_v4 i dsLBrule_v6 oraz równoważy ruch na porcie TCP 80 do konfiguracji adresów IP frontonu IPv4 i IPv6:
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
Tworzenie zasobów sieciowych
Przed wdrożeniem niektórych maszyn wirtualnych należy utworzyć pomocnicze zasoby sieciowe — zestaw dostępności, sieciową grupę zabezpieczeń, sieć wirtualną i wirtualne karty sieciowe.
Tworzenie zestawu dostępności
Aby zwiększyć dostępność aplikacji, umieść maszyny wirtualne w zestawie dostępności.
Utwórz zestaw dostępności za pomocą polecenia `az vm availability-set create`. Poniższy przykład tworzy zestaw dostępności o nazwie dsAVset:
az vm availability-set create \
--name dsAVset \
--resource-group DsResourceGroup01 \
--location eastus \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Tworzenie sieciowej grupy zabezpieczeń
Utwórz sieciową grupę zabezpieczeń dla reguł, które zarządzają komunikacją przychodzącą i wychodzącą w sieci wirtualnej.
Tworzenie sieciowej grupy zabezpieczeń
Utwórz sieciową grupę zabezpieczeń za pomocą az network nsg create
az network nsg create \
--name dsNSG1 \
--resource-group DsResourceGroup01 \
--location eastus
Utwórz regułę sieciowej grupy zabezpieczeń dla połączeń przychodzących i wychodzących
Utwórz regułę grupy zabezpieczeń sieciowych, aby zezwolić na połączenia RDP przez port 3389, na połączenia dla ruchu internetowego przez port 80 oraz na połączenia wychodzące za pomocą az network nsg rule create.
# 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 "*"
Tworzenie sieci wirtualnej
Utwórz sieć wirtualną za pomocą polecenia az network vnet create. Poniższy przykład tworzy sieć wirtualną o nazwie dsVNET z podsieciami dsSubNET_v4 i dsSubNET_v6:
# 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
Tworzenie kart sieciowych
Twórz wirtualne karty sieciowe dla każdej maszyny wirtualnej za pomocą az network nic create. Poniższy przykład tworzy wirtualną kartę sieciową dla każdej maszyny wirtualnej. Każda karta sieciowa ma dwie konfiguracje adresów IP (1 konfiguracja IPv4, 1 konfiguracja IPv6). Utwórz konfigurację IPV6 za pomocą az network nic ip-config create.
# 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
Tworzenie maszyn wirtualnych
Utwórz maszyny wirtualne za pomocą az vm create. Poniższy przykład tworzy dwie maszyny wirtualne i wymagane składniki sieci wirtualnej, jeśli jeszcze nie istnieją.
Utwórz maszynę wirtualną dsVM0 w następujący sposób:
az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Utwórz maszynę wirtualną dsVM1 w następujący sposób:
az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Zobacz sieć wirtualną o podwójnym stosie IPv6 w portalu Azure
Sieć wirtualną podwójnego stosu IPv6 można wyświetlić w witrynie Azure Portal w następujący sposób:
- Na pasku wyszukiwania portalu wprowadź ciąg dsVnet.
- Gdy pozycja myVirtualNetwork pojawi się w wynikach wyszukiwania, wybierz ją. Uruchamia to stronę Przegląd dla dwustackowej sieci wirtualnej o nazwie dsVnet. Sieć wirtualna z podwójnym stosem pokazuje dwie karty sieciowe z konfiguracjami IPv4 i IPv6, które znajdują się w podsieci podwójnego stosu o nazwie dsSubnet.
Czyszczenie zasobów
Gdy grupa zasobów, maszyna wirtualna i wszystkie pokrewne zasoby nie będą już potrzebne, można je usunąć za pomocą polecenia az group delete.
az group delete --name DsResourceGroup01
Użyj szablonu opisanego w tym artykule, aby wdrożyć aplikację z podwójnym stosem (IPv4 + IPv6) przy użyciu Standardowego Load Balancer na platformie Azure.
Wymagane konfiguracje
Wyszukaj sekcje szablonu w szablonie, aby zobaczyć, gdzie powinny one wystąpić.
Przestrzeń adresów IPv6 dla sieci wirtualnej
Sekcja szablonu do dodania:
"addressSpace": {
"addressPrefixes": [
"[variables('vnetv4AddressRange')]",
"[variables('vnetv6AddressRange')]"
Podsieć IPv6 w przestrzeni adresowej sieci wirtualnej IPv6
Sekcja szablonu do dodania:
{
"name": "V6Subnet",
"properties": {
"addressPrefix": "[variables('subnetv6AddressRange')]"
}
Konfiguracja protokołu IPv6 dla karty sieciowej
Sekcja szablonu do dodania:
{
"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')]"
}
Reguły sieciowej grupy zabezpieczeń (NSG) protokołu IPv6
{
"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"
}
Konfiguracja warunkowa
Jeśli używasz wirtualnego urządzenia sieciowego, dodaj trasy IPv6 w tabeli tras. W przeciwnym razie ta konfiguracja jest opcjonalna.
{
"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"
}
Opcjonalna konfiguracja
Dostęp do Internetu IPv6 dla sieci wirtualnej
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Publiczne adresy IP protokołu IPv6
{
"apiVersion": "[variables('ApiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "lbpublicip-v6",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static",
"publicIPAddressVersion": "IPv6"
}
Fronton IPv6 dla modułu równoważenia obciążenia
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Pula adresów zaplecza IPv6 dla usługi Load Balancer
"backendAddressPool": {
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', 'loadBalancer'), '/backendAddressPools/LBBAP-v6')]"
},
"protocol": "Tcp",
"frontendPort": 8080,
"backendPort": 8080
},
"name": "lbrule-v6"
Reguły modułu równoważenia obciążenia IPv6 do kojarzenia portów przychodzących i wychodzących
{
"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')]"
}
Przykładowy kod JSON szablonu maszyny wirtualnej
Aby wdrożyć aplikację podwójnego stosu IPv6 w sieci wirtualnej platformy Azure przy użyciu szablonu usługi Azure Resource Manager, wyświetl tutaj przykładowy szablon.