Sieci wirtualne Azure (nazywane VNet) zapewniają wsparcie dla połączeń hybrydowych pomiędzy Azure a sieciami lokalnymi lub wewnętrznie pomiędzy sieciami działającymi w chmurze. Możliwe jest stawianie intranetu i wewnętrznych load balancerów.
Tworzenie sieci wirtualnych przy pomocy PowerShella
Azure zabiera 5 adresów IP z każdej tworzonej podsieci IP. Zabierany jest standardowo adres sieci i adres broadcast. Dodatkowo zabierane są do użytku wewnętrznego pierwsze trzy adresy podsieci. Jeżeli np. podsieć zaczyna się od 192.168.0.0 to pierwszym możliwym do wykorzystania adresem będzie adres 192.168.0.4. Najmniejszą możliwą do wykorzystania siecią IP w Azure jest zatem sieć z maską 29 bitową. Taka podsieć zapewni 3 możliwe do użycia adresy IP, 5 adresów zostanie “zabranych”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$rgName="RG01" $location ="West Europe" $subnets = @() $subnet1Name = "Apps" $subnet2Name = "Data" $subnet1AddressPrefix = "10.0.0.0/24" $subnet2AddressPrefix = "10.0.1.0/24" $vnetAddresssSpace = "10.0.0.0/16" $VNETName = "MyNet01" $subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet1Name -AddressPrefix $subnet1AddressPrefix $subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet2Name -AddressPrefix $subnet2AddressPrefix $vnet = New-AzureRmVirtualNetwork -Name $VNETName -ResourceGroupName $rgName ` -Location $location -AddressPrefix $vnetAddresssSpace -Subnet $subnets |
Do cmdletu New-AzureRmVirtualNetwork
można również dodać własny serwer DNS zamiast DNSa dostarczanego przez Azure. Używamy do tego parametru: -DNSServer
. Zmiany DNS można także dokonać w portalu Azure:
Po zmianie DNS konieczny jest restart VM uruchomionych w sieci wirtualnej, w której zmieniamy serwer nazw. Bez restartu zmiany nie wejdą w życie. VM pobierają konfigurację z DHCP.
Wyświetlenie utworzonych sieci wirtualnych wraz z podsieciami:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
PS C:\> Get-AzureRmVirtualNetwork -ResourceGroupName $rgName Name : MyNet01 ResourceGroupName : RG01 Location : westeurope Id : /subscriptions/1edc1bf1-5d07-45fb-b894-fbedd581306c/resourceGroups/RG01/providers/Microsoft.Network/virtualNetworks/MyNet01 Etag : W/"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5" ResourceGuid : 34ba8072-84dc-4a5a-8ec3-92239d8c7d75 ProvisioningState : Succeeded Tags : AddressSpace : { "AddressPrefixes": [ "10.0.0.0/16" ] } DhcpOptions : null Subnets : [ { "Name": "Data", "Etag": "W/\"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5\"", "Id": "/subscriptions/1edc1bf1-5d07-45fb-b894-fbedd581306c/resourceGroups/RG01/providers/Microsoft.Network/virtualNetworks/MyNet01/subnets/Data", "AddressPrefix": "10.0.1.0/24", "IpConfigurations": [], "ResourceNavigationLinks": [], "ServiceEndpoints": [], "ProvisioningState": "Succeeded" }, { "Name": "Apps", "Etag": "W/\"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5\"", "Id": "/subscriptions/1edc1bf1-5d07-45fb-b894-fbedd581306c/resourceGroups/RG01/providers/Microsoft.Network/virtualNetworks/MyNet01/subnets/Apps", "AddressPrefix": "10.0.0.0/24", "IpConfigurations": [], "ResourceNavigationLinks": [], "ServiceEndpoints": [], "ProvisioningState": "Succeeded" } ] VirtualNetworkPeerings : [] EnableDdosProtection : false DdosProtectionPlan : null EnableVmProtection : false |
Zmiany w konfiguracji sieci i zakresy adresacji mogą być dokonane tylko wtedy gdy nie ma do podsieci podłączonego żadnego urządzenia.
Aby nasza infrastruktura w chmurze miała łączność z naszą lokalną infrastrukturą potrzebujemy jeszcze utworzyć podsieć dla bramy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$subnet3Name = "GatewaySubnet" $subnet3AddressPrefix = "10.0.100.0/28" New-AzureRmVirtualNetworkSubnetConfig -Name $subnet3Name -AddressPrefix $subnet3AddressPrefix Name : GatewaySubnet Id : Etag : ProvisioningState : AddressPrefix : 10.0.100.0/28 IpConfigurations : null ResourceNavigationLinks : null NetworkSecurityGroup : null RouteTable : null ServiceEndpoints : null |
Trasy zdefiniowane przez użytkownika (UDR – User Definied Routes)
Azure domyślnie zestawia routing:
- Wewnątrz danej podsieci
- Pomiędzy jedną podsiecią a drugą podsiecią w ramach jednej sieci wirtualnej
- VM do internetu
- Pomiędzy różnymi sieciami wirtualnymi przez bramę VPN
- Pomiędzy różnymi sieciami wirtualnymi przez peering
- Pomiędzy siecią wirtualną w Azure a siecią lokalną przez bramę VPN
Azure zestawia domyślnie trasy tylko w typowych scenariuszach. Zdarzają się jednak sytuacje gdy to my chcemy kontrolować trasowanie. W takim przypadku możemy tabelę routingu stworzyć sami. Można to zrobić w portalu Azure klikając:
+ Create resource -> Networking -> Route table
A także przez PowerShella:
1 2 3 4 5 6 7 8 9 |
Get-AzureRmRouteTable ` -ResourceGroupName $rgName ` -Name 'MyRouteTable' ` | Add-AzureRmRouteConfig ` -Name 'MyRouteTable' ` -AddressPrefix 10.0.0.0/24 ` -NextHopType "VirtualAppliance" ` -NextHopIpAddress 10.0.2.4 ` | Set-AzureRmRouteTable |
Łączenie sieci wirtualnych przez peering (komunikacja równorzędna)
Sieci wirtualne (VNet) zlokalizowane w tym samym regionie można połączyć zestawiając peering. Peerowane sieci nie mogą mieć pokrywających się adresacji. Dodajmy drugą sieć wirtualną:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$rgName="RG01" $location ="West Europe" $subnets = @() $subnet3Name = "Subnet1" $subnet4Name = "Subnet2" $subnet3AddressPrefix = "172.16.0.0/24" $subnet4AddressPrefix = "172.16.1.0/24" $vnetAddresssSpace = "172.16.0.0/12" $VNETName = "MyNet02" $subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet3Name -AddressPrefix $subnet3AddressPrefix $subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet4Name -AddressPrefix $subnet4AddressPrefix $vnet = New-AzureRmVirtualNetwork -Name $VNETName -ResourceGroupName $rgName ` -Location $location -AddressPrefix $vnetAddresssSpace -Subnet $subnets |
W portalu Azure można ustawić peering dla sieci MyNet02:
Aby peering zadziałał trzeba zrobić to samo dla sieci MyNet01. Zróbmy to w Powershellu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$rgName="RG01" $vneta = Get-AzureRmVirtualNetwork ` -Name MyNet01 ` -ResourceGroupName $rgName $vnetb = Get-AzureRmVirtualNetwork ` -Name MyNet02 ` -ResourceGroupName $rgName Add-AzureRmVirtualNetworkPeering ` -Name 'MyNet01-to-MyNet02' ` -VirtualNetwork $vneta ` -RemoteVirtualNetworkId $vnetb.id |
Więcej o sieciach wirtualnych w Azure:
https://docs.microsoft.com/en-us/azure/virtual-network/