Hızlı Başlangıç: Sanal ağ oluşturmak için Azure PowerShell kullanma

Bu hızlı başlangıçta Azure PowerShell kullanarak sanal ağ oluşturma işlemi gösterilmektedir. Ardından ağda iki sanal makine (VM) oluşturur, İnternet'ten VM'lere güvenli bir şekilde bağlanır ve VM'ler arasında özel iletişim başlatırsınız.

Sanal ağ, Azure'daki özel ağlar için temel yapı taşıdır. Azure Sanal Ağ, VM'ler gibi Azure kaynaklarının birbirleriyle ve İnternet ile güvenli bir şekilde iletişim kurmasını sağlar.

Sanal ağ hızlı başlangıcında oluşturulan kaynakların diyagramı.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturabilirsiniz.

  • Azure Cloud Shell veya Azure PowerShell.

    Bu hızlı başlangıçtaki adımlar, Azure Cloud Shell'de Azure PowerShell cmdlet'lerini etkileşimli olarak çalıştırır. Cloud Shell'de komutları çalıştırmak için kod bloğunun sağ üst köşesindeki CloudShell'i Aç'ı seçin. Kodu kopyalamak için Kopyala'yı seçin ve çalıştırmak için Cloud Shell'e yapıştırın. Cloud Shell'i Azure portalından da çalıştırabilirsiniz.

    Cmdlet'leri çalıştırmak için Azure PowerShell'i yerel olarak da yükleyebilirsiniz. Bu makaledeki adımlar Için Azure PowerShell modülü sürüm 5.4.1 veya üzeri gerekir. Yüklü sürümünüzü bulmak için komutunu çalıştırın Get-Module -ListAvailable Az . Yükseltmeniz gerekiyorsa bkz . Azure PowerShell modülünü güncelleştirme.

    PowerShell'i yerel olarak çalıştırıyorsanız Azure'a bağlanmak için komutunu çalıştırın Connect-AzAccount .

Kaynak grubu oluşturma

New-AzResourceGroup kullanarak sanal ağı barındıracak bir kaynak grubu oluşturun. eastus2 Azure bölgesinde test-rg adlı bir kaynak grubu oluşturmak için aşağıdaki kodu çalıştırın:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

Sanal ağ oluşturma

  1. New-AzVirtualNetwork komutunu kullanarak test-rg kaynak grubunda ve eastus2 konumunda IP adresi ön eki 10.0.0.0/16olan vnet-1 adlı bir sanal ağ oluşturun:

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure, kaynakları sanal ağ içindeki bir alt ağa dağıtır. Adres ön eki 10.0.0.0/24 olan subnet-1 adlı bir alt ağ yapılandırması oluşturmak için Add-AzVirtualNetworkSubnetConfig komutunu kullanın:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Set-AzVirtualNetwork komutunu kullanarak alt ağ yapılandırmasını sanal ağ ile ilişkilendirin:

    $virtualNetwork | Set-AzVirtualNetwork
    

Azure Bastion’ı dağıtma

Azure Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki VM'lere bağlanmak için tarayıcınızı kullanır. VM'lerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.

Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.

  1. Sanal ağınız için bir Bastion alt ağı yapılandırın. Bu alt ağ yalnızca Bastion kaynakları için ayrılmıştır ve AzureBastionSubnet olarak adlandırılmalıdır.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Yapılandırmayı ayarlayın:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Bastion için bir genel IP adresi oluşturun. Bastion konağı, 443 numaralı bağlantı noktası üzerinden SSH ve RDP'ye erişmek için genel IP'yi kullanır.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. AzureBastionSubnet'te yeni bir Standart SKU Bastion konağı oluşturmak için New-AzBastion komutunu kullanın:

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

Bastion kaynaklarının dağıtılması yaklaşık 10 dakika sürer. Bastion sanal ağınıza dağıtılırken sonraki bölümde VM'ler oluşturabilirsiniz.

Sanal makineleri oluşturma

New-AzVM kullanarak sanal ağın alt ağı-1 alt ağında vm-1 ve vm-2 adlı iki VM oluşturun. Kimlik bilgileri istendiğinde VM'ler için kullanıcı adlarını ve parolaları girin.

  1. İlk VM'yi oluşturmak için aşağıdaki kodu kullanın:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-1"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-1"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-1"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    
  2. İkinci VM'yi oluşturmak için aşağıdaki kodu kullanın:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-2"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-2"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-2"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    

İpucu

Diğer görevlere -AsJob devam ederken arka planda vm oluşturmak için seçeneğini kullanabilirsiniz. Örneğin, komutunu çalıştırın New-AzVM @vm1 -AsJob. Azure arka planda VM oluşturmaya başladığında aşağıdaki çıkışa benzer bir şey elde edersiniz:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM

Azure'ın VM'leri oluşturması birkaç dakika sürer. Azure VM'leri oluşturmayı tamamladığında PowerShell'e çıkış döndürür.

Not

Bastion konağı olan bir sanal ağdaki VM'lerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve VM'ler ağ içinde iletişim kurmak için özel IP'ler kullanır. Bastion tarafından barındırılan sanal ağlardaki tüm VM'lerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için bkz . Azure VM'den genel IP adresini ilişkilendirme.

Not

Azure, genel IP adresi atanmamış veya bir iç temel Azure yük dengeleyicinin arka uç havuzunda yer alan VM'ler için varsayılan bir giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.

Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:

Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.

Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.

Sanal makineye bağlanma

  1. Portalda Sanal makineler'i arayın ve seçin.

  2. Sanal makineler sayfasında vm-1'i seçin.

  3. vm-1'e genel bakış bilgilerinde Bağlan'i seçin.

  4. Sanal makineye Bağlan sayfasında Bastion sekmesini seçin.

  5. Bastion Kullan'ı seçin.

  6. VM'yi oluştururken oluşturduğunuz kullanıcı adını ve parolayı girin ve Bağlan seçin.

VM'ler arasında iletişimi başlatma

  1. vm-1 için bash istemine girinping -c 4 vm-2.

    Aşağıdaki iletiye benzer bir yanıt alırsınız:

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. Vm-1 ile Bastion bağlantısını kapatın.

  3. vm-2'ye bağlanmak için sanal makineye Bağlan adımlarını yineleyin.

  4. vm-2 için bash istemine girinping -c 4 vm-1.

    Aşağıdaki iletiye benzer bir yanıt alırsınız:

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. Vm-2 ile Bastion bağlantısını kapatın.

Kaynakları temizleme

Sanal ağı ve VM'leri bitirdiğinizde, kaynak grubunu ve tüm kaynaklarını kaldırmak için Remove-AzResourceGroup kullanın:

Remove-AzResourceGroup -Name 'test-rg' -Force

Sonraki adımlar

Bu hızlı başlangıçta, iki VM içeren varsayılan alt ağa sahip bir sanal ağ oluşturdunuz. Azure Bastion'ı dağıttınız ve vm'lere bağlanmak ve VM'ler arasında güvenli bir şekilde iletişim kurmak için kullandınız. Sanal ağ ayarları hakkında daha fazla bilgi edinmek için bkz . Sanal ağ oluşturma, değiştirme veya silme.