{"id":2417,"date":"2018-08-31T19:02:49","date_gmt":"2018-08-31T17:02:49","guid":{"rendered":"http:\/\/miroslaw.borodziuk.eu\/?p=2417"},"modified":"2018-09-04T23:02:17","modified_gmt":"2018-09-04T21:02:17","slug":"konfigurowanie-sieci-wirtualnych","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2018\/08\/31\/konfigurowanie-sieci-wirtualnych\/","title":{"rendered":"Konfigurowanie sieci wirtualnych"},"content":{"rendered":"<p>Sieci wirtualne Azure (nazywane VNet) zapewniaj\u0105 wsparcie dla po\u0142\u0105cze\u0144 hybrydowych pomi\u0119dzy Azure a sieciami lokalnymi lub wewn\u0119trznie pomi\u0119dzy sieciami dzia\u0142aj\u0105cymi w chmurze. Mo\u017cliwe jest stawianie intranetu i wewn\u0119trznych load balancer\u00f3w.<\/p>\n<p><!--more--><\/p>\n<p><span style=\"color: #3366ff;\">Tworzenie sieci wirtualnych przy pomocy PowerShella<\/span><\/p>\n<p>Azure zabiera 5 adres\u00f3w IP z ka\u017cdej tworzonej podsieci IP. Zabierany jest standardowo adres sieci i adres broadcast. Dodatkowo zabierane s\u0105 do u\u017cytku wewn\u0119trznego pierwsze trzy adresy podsieci. Je\u017celi np. podsie\u0107 zaczyna si\u0119 od 192.168.0.0 to pierwszym mo\u017cliwym do wykorzystania adresem b\u0119dzie adres 192.168.0.4. Najmniejsz\u0105 mo\u017cliw\u0105 do wykorzystania sieci\u0105 IP w Azure jest zatem sie\u0107 z mask\u0105 29 bitow\u0105. Taka podsie\u0107 zapewni 3 mo\u017cliwe do u\u017cycia adresy IP, 5 adres\u00f3w zostanie &#8220;zabranych&#8221;.<\/p>\n<pre class=\"lang:ps decode:true\">$rgName=\"RG01\"\r\n$location =\"West Europe\"\r\n$subnets = @()\r\n$subnet1Name = \"Apps\"\r\n$subnet2Name = \"Data\"\r\n$subnet1AddressPrefix = \"10.0.0.0\/24\"\r\n$subnet2AddressPrefix = \"10.0.1.0\/24\"\r\n$vnetAddresssSpace = \"10.0.0.0\/16\"\r\n$VNETName = \"MyNet01\"\r\n\r\n$subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet1Name -AddressPrefix $subnet1AddressPrefix\r\n$subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet2Name -AddressPrefix $subnet2AddressPrefix\r\n\r\n$vnet = New-AzureRmVirtualNetwork -Name $VNETName -ResourceGroupName $rgName `\r\n-Location $location -AddressPrefix $vnetAddresssSpace -Subnet $subnets<\/pre>\n<p>Do cmdletu <code>New-AzureRmVirtualNetwork<\/code> mo\u017cna r\u00f3wnie\u017c doda\u0107 w\u0142asny serwer DNS zamiast DNSa dostarczanego przez Azure. U\u017cywamy do tego parametru: <code>-DNSServer<\/code>. Zmiany DNS mo\u017cna tak\u017ce dokona\u0107 w portalu Azure:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2423 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/AzureDNS1.jpg\" alt=\"\" width=\"567\" height=\"406\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/AzureDNS1.jpg 567w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/AzureDNS1-300x215.jpg 300w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/p>\n<p>Po zmianie DNS konieczny jest restart VM uruchomionych w sieci wirtualnej, w kt\u00f3rej zmieniamy serwer nazw. Bez restartu zmiany nie wejd\u0105 w \u017cycie. VM pobieraj\u0105 konfiguracj\u0119 z DHCP.<\/p>\n<p>Wy\u015bwietlenie utworzonych sieci wirtualnych wraz z podsieciami:<\/p>\n<pre class=\"lang:ps decode:true \">PS C:\\&gt; Get-AzureRmVirtualNetwork -ResourceGroupName $rgName\r\n\r\n\r\nName : MyNet01\r\nResourceGroupName : RG01\r\nLocation : westeurope\r\nId : \/subscriptions\/1edc1bf1-5d07-45fb-b894-fbedd581306c\/resourceGroups\/RG01\/providers\/Microsoft.Network\/virtualNetworks\/MyNet01\r\nEtag : W\/\"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5\"\r\nResourceGuid : 34ba8072-84dc-4a5a-8ec3-92239d8c7d75\r\nProvisioningState : Succeeded\r\nTags :\r\nAddressSpace : {\r\n\"AddressPrefixes\": [\r\n\"10.0.0.0\/16\"\r\n]\r\n}\r\nDhcpOptions : null\r\nSubnets : [\r\n{\r\n\"Name\": \"Data\",\r\n\"Etag\": \"W\/\\\"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5\\\"\",\r\n\"Id\": \"\/subscriptions\/1edc1bf1-5d07-45fb-b894-fbedd581306c\/resourceGroups\/RG01\/providers\/Microsoft.Network\/virtualNetworks\/MyNet01\/subnets\/Data\",\r\n\"AddressPrefix\": \"10.0.1.0\/24\",\r\n\"IpConfigurations\": [],\r\n\"ResourceNavigationLinks\": [],\r\n\"ServiceEndpoints\": [],\r\n\"ProvisioningState\": \"Succeeded\"\r\n},\r\n{\r\n\"Name\": \"Apps\",\r\n\"Etag\": \"W\/\\\"ad93b078-ca25-429d-a2e0-36d8bc3cc5a5\\\"\",\r\n\"Id\": \"\/subscriptions\/1edc1bf1-5d07-45fb-b894-fbedd581306c\/resourceGroups\/RG01\/providers\/Microsoft.Network\/virtualNetworks\/MyNet01\/subnets\/Apps\",\r\n\"AddressPrefix\": \"10.0.0.0\/24\",\r\n\"IpConfigurations\": [],\r\n\"ResourceNavigationLinks\": [],\r\n\"ServiceEndpoints\": [],\r\n\"ProvisioningState\": \"Succeeded\"\r\n}\r\n]\r\nVirtualNetworkPeerings : []\r\nEnableDdosProtection : false\r\nDdosProtectionPlan : null\r\nEnableVmProtection : false<\/pre>\n<p>Zmiany w konfiguracji sieci i zakresy adresacji mog\u0105 by\u0107 dokonane tylko wtedy gdy nie ma do podsieci pod\u0142\u0105czonego \u017cadnego urz\u0105dzenia.<\/p>\n<p>Aby nasza infrastruktura w chmurze mia\u0142a \u0142\u0105czno\u015b\u0107 z nasz\u0105 lokaln\u0105 infrastruktur\u0105 potrzebujemy jeszcze utworzy\u0107 podsie\u0107 dla bramy.<\/p>\n<pre class=\"lang:ps decode:true\">$subnet3Name = \"GatewaySubnet\"\r\n$subnet3AddressPrefix = \"10.0.100.0\/28\"\r\nNew-AzureRmVirtualNetworkSubnetConfig -Name $subnet3Name -AddressPrefix $subnet3AddressPrefix\r\n\r\nName : GatewaySubnet\r\nId :\r\nEtag :\r\nProvisioningState :\r\nAddressPrefix : 10.0.100.0\/28\r\nIpConfigurations : null\r\nResourceNavigationLinks : null\r\nNetworkSecurityGroup : null\r\nRouteTable : null\r\nServiceEndpoints : null\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Trasy zdefiniowane przez u\u017cytkownika (UDR &#8211; User Definied Routes)<\/span><\/p>\n<p>Azure domy\u015blnie zestawia routing:<\/p>\n<ul>\n<li>Wewn\u0105trz danej podsieci<\/li>\n<li>Pomi\u0119dzy jedn\u0105 podsieci\u0105 a drug\u0105 podsieci\u0105 w ramach jednej sieci wirtualnej<\/li>\n<li>VM do internetu<\/li>\n<li>Pomi\u0119dzy r\u00f3\u017cnymi sieciami wirtualnymi przez bram\u0119 VPN<\/li>\n<li>Pomi\u0119dzy r\u00f3\u017cnymi sieciami wirtualnymi przez peering<\/li>\n<li>Pomi\u0119dzy sieci\u0105 wirtualn\u0105 w Azure a sieci\u0105 lokaln\u0105 przez bram\u0119 VPN<\/li>\n<\/ul>\n<p>Azure zestawia domy\u015blnie trasy tylko w typowych scenariuszach. Zdarzaj\u0105 si\u0119 jednak sytuacje gdy to my chcemy kontrolowa\u0107 trasowanie. W takim przypadku mo\u017cemy tabel\u0119 routingu stworzy\u0107 sami. Mo\u017cna to zrobi\u0107 w portalu Azure klikaj\u0105c:<\/p>\n<p><code>+ Create resource -&gt; Networking -&gt; Route table<\/code><\/p>\n<p>A tak\u017ce przez PowerShella:<\/p>\n<pre class=\"lang:ps decode:true \">Get-AzureRmRouteTable `\r\n-ResourceGroupName $rgName `\r\n-Name 'MyRouteTable' `\r\n| Add-AzureRmRouteConfig `\r\n-Name 'MyRouteTable' `\r\n-AddressPrefix 10.0.0.0\/24 `\r\n-NextHopType \"VirtualAppliance\" `\r\n-NextHopIpAddress 10.0.2.4 `\r\n| Set-AzureRmRouteTable<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">\u0141\u0105czenie sieci wirtualnych przez peering (komunikacja r\u00f3wnorz\u0119dna)<br \/>\n<\/span><\/p>\n<p>Sieci wirtualne (VNet) zlokalizowane w tym\u00a0 samym regionie mo\u017cna po\u0142\u0105czy\u0107 zestawiaj\u0105c peering. Peerowane sieci nie mog\u0105 mie\u0107 pokrywaj\u0105cych si\u0119 adresacji. Dodajmy drug\u0105 sie\u0107 wirtualn\u0105:<\/p>\n<pre class=\"lang:ps decode:true\">$rgName=\"RG01\"\r\n$location =\"West Europe\"\r\n$subnets = @()\r\n$subnet3Name = \"Subnet1\"\r\n$subnet4Name = \"Subnet2\"\r\n$subnet3AddressPrefix = \"172.16.0.0\/24\"\r\n$subnet4AddressPrefix = \"172.16.1.0\/24\"\r\n$vnetAddresssSpace = \"172.16.0.0\/12\"\r\n$VNETName = \"MyNet02\"\r\n\r\n$subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet3Name -AddressPrefix $subnet3AddressPrefix\r\n$subnets = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet4Name -AddressPrefix $subnet4AddressPrefix\r\n\r\n$vnet = New-AzureRmVirtualNetwork -Name $VNETName -ResourceGroupName $rgName ` -Location $location -AddressPrefix $vnetAddresssSpace -Subnet $subnets<\/pre>\n<p>W portalu Azure mo\u017cna ustawi\u0107 peering dla sieci MyNet02:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2428 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/Azure-VNet-Peering.jpg\" alt=\"\" width=\"567\" height=\"567\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-VNet-Peering.jpg 567w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-VNet-Peering-150x150.jpg 150w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-VNet-Peering-300x300.jpg 300w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-VNet-Peering-100x100.jpg 100w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/p>\n<p>Aby peering zadzia\u0142a\u0142 trzeba zrobi\u0107 to samo dla sieci MyNet01. Zr\u00f3bmy to w Powershellu.<\/p>\n<pre class=\"lang:ps decode:true \">$rgName=\"RG01\"\r\n\r\n$vneta = Get-AzureRmVirtualNetwork `\r\n-Name MyNet01 `\r\n-ResourceGroupName $rgName\r\n\r\n$vnetb = Get-AzureRmVirtualNetwork `\r\n-Name MyNet02 `\r\n-ResourceGroupName $rgName\r\n\r\nAdd-AzureRmVirtualNetworkPeering `\r\n-Name 'MyNet01-to-MyNet02' `\r\n-VirtualNetwork $vneta `\r\n-RemoteVirtualNetworkId $vnetb.id<\/pre>\n<p>&nbsp;<\/p>\n<p>Wi\u0119cej o sieciach wirtualnych w Azure:<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-network\/\">https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-network\/<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sieci wirtualne Azure (nazywane VNet) zapewniaj\u0105 wsparcie dla po\u0142\u0105cze\u0144 hybrydowych pomi\u0119dzy Azure a sieciami lokalnymi lub wewn\u0119trznie pomi\u0119dzy sieciami dzia\u0142aj\u0105cymi w chmurze. Mo\u017cliwe jest stawianie intranetu i wewn\u0119trznych load balancer\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":2420,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2417"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2417"}],"version-history":[{"count":13,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2417\/revisions"}],"predecessor-version":[{"id":2434,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2417\/revisions\/2434"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media\/2420"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2417"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}