Azure portalı, Azure CLI, Azure PowerShell, Azure Resource Manager (ARM) şablonu, Bicep şablonu ve Terraform kullanarak Azure Sanal Ağı oluşturmayı öğrenin. Aynı sanal ağdaki sanal makineler arasındaki bağlantıyı test etmek için iki sanal makine ve bir Azure Bastion konağı dağıtılır. Azure Bastion konağı, sanal makinelere ssl üzerinden doğrudan Azure portalında güvenli ve sorunsuz RDP ve SSH bağlantısı sağlar.
Sanal ağ, Azure'daki özel ağlar için temel yapı taşıdır. Azure Sanal Ağ, sanal makineler gibi Azure kaynaklarının birbirleriyle ve İnternet ile güvenli bir şekilde iletişim kurmasını sağlar.
Bu makaledeki kaynakların yer tutucularını değiştirmek için aşağıdaki değerleri kullanın:
Bir kaynak grubu oluşturun
Azure hesabınızla Azure portalında oturum açın.
Portalın üst kısmındaki arama kutusuna Kaynak grubu yazın. Arama sonuçlarında Kaynak grupları'nı seçin.
+Oluştur'u seçin.
Kaynak grubu oluştur'unTemel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
| Abonelik |
Aboneliğinizi seçin. |
| Kaynak grubu |
Kaynak-grubu< girin>. |
| Bölge |
Bölge'yi< seçin>. |
Seçin, gözden geçir ve oluştur.
Oluştur'i seçin.
Sanal ağ oluşturma
Portalın üst kısmındaki arama kutusuna Sanal ağ yazın. Arama sonuçlarında Sanal ağlar'ı seçin.
+Oluştur'u seçin.
Sanal ağ oluştur'un Temel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
|
Proje ayrıntıları |
|
| Abonelik |
Aboneliğinizi seçin. |
| Kaynak grubu |
<Kaynak grubunu seçin>. |
|
Örnek ayrıntıları |
|
| İsim |
Sanal ağ< girin>. |
| Bölge |
Bölge'yi< seçin>. |
Güvenlik sekmesine gitmek için İleri'yi seçin.
IP Adresleri sekmesine gitmek için İleri'yi seçin.
Alt ağlar'daki adres alanı kutusunda varsayılan alt ağı seçin.
Alt ağı düzenle bölümüne aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
|
Alt ağ ayrıntıları |
|
| Alt ağ şablonu |
Varsayılan Varsayılan değeri değiştirmeyin. |
| İsim |
Alt ağı<> giriniz. |
| Başlangıç adresi |
Varsayılan değeri 10.0.0.0 olarak bırakın. |
| Alt ağ boyutu |
Varsayılan değeri /24 (256 adres) olarak bırakın. |
Kaydetseçeneğini seçin.
Ekranın alt kısmındaki Gözden geçir + oluştur'u seçin ve doğrulama başarılı olduğunda Oluştur'u seçin.
Azure Bastion’ı dağıtma
Azure Bastion, özel IP adreslerini kullanarak güvenli kabuk (SSH) veya uzak masaüstü protokolü (RDP) üzerinden sanal ağınızdaki sanal makinelere (VM) bağlanmak için tarayıcınızı kullanır. Sanal makinelerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Azure Bastion hakkında daha fazla bilgi için bkz . Azure Bastion.
Uyarı
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.
Portalın üst kısmındaki arama kutusuna Bastion yazın. Arama sonuçlarında Bastions'ı seçin.
+Oluştur'u seçin.
Bastion Oluşturma'nınTemel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
|
Proje ayrıntıları |
|
| Abonelik |
Aboneliğinizi seçin. |
| Kaynak grubu |
Kaynak grubunu< seçin>. |
|
Örnek ayrıntıları |
|
| İsim |
Bastion< yazın>. |
| Bölge |
Bölge'yi< seçin>. |
| Katman |
Geliştirici'yi seçin. |
|
Sanal ağları yapılandırma |
|
| Sanal ağ |
Sanal ağ'ı< seçin>. |
Seçin, gözden geçir ve oluştur.
Oluştur'i seçin.
Sanal makine oluşturma
Aşağıdaki yordam, sanal ağda virtual-machine-1< ve virtual-machine-2 adlı> iki VM oluşturur:<>
Portalda Sanal makineler'i arayın ve seçin.
Sanal makineler'de, + Oluştur'u seçin ve ardından Azure sanal makinesini seçin.
Sanal makine oluştur'unTemel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
|
Proje ayrıntıları |
|
| Abonelik |
Aboneliğinizi seçin. |
| Kaynak grubu |
Kaynak grubunu< seçin>. |
|
Örnek ayrıntıları |
|
| Sanal makine ismi |
Girin <virtual-machine-1>. |
| Bölge |
Bölge'yi< seçin>. |
| Kullanılabilirlik seçenekleri |
Altyapı yedekliliği gerekmiyor seçeneğini seçin. |
| Güvenlik türü |
Standart varsayılanını değiştirmeyin. |
| Resim |
Ubuntu Server 22.04 LTS - x64 Gen2'yi seçin. |
| VM mimarisi |
Varsayılan ayar olarak x64'ü bırakın. |
| Boyut |
Bir boyut seçin. |
|
Yönetici hesabı |
|
| Doğrulama türü |
SSH ortak anahtarı'ni seçin. |
| Kullanıcı adı |
azureuser yazın. |
| SSH ortak anahtar kaynağı |
Yeni anahtar çifti oluştur'a tıklayın. |
| Anahtar çifti adı |
<virtual-machine-1>-key girin. |
|
Giriş bağlantı noktası kuralları |
|
| Genel Erişime Açık Gelen Bağlantı Noktaları |
Yok'a tıklayın. |
Ağ sekmesini seçin. Aşağıdaki bilgileri girin veya seçin:
| Ayarlar |
Değer |
|
Ağ arabirimi |
|
| Sanal ağ |
Sanal ağ'ı< seçin>. |
| Alt ağ (subnet) |
Alt ağı< (10.0.0.0/24) seçin>. |
| Halka Açık IP |
Yok'a tıklayın. |
| NIC ağ güvenlik grubu |
Gelişmiş'i seçin. |
| Ağ güvenlik grubunu yapılandırma |
Yeni Oluştur'u seçin.
Ad olarak network-security-group< girin>.
Gerisini varsayılan değerlerde bırakın ve Tamam'ı seçin. |
Ayarların geri kalanını varsayılan ayarlarda bırakın ve Gözden geçir ve oluştur'u seçin.
Ayarları gözden geçirin ve Oluştur'u seçin.
İlk sanal makinenin dağıtılması için bekleyin, ardından aşağıdaki ayarlarla ikinci bir sanal makine oluşturmak için önceki adımları yineleyin:
| Ayarlar |
Değer |
| Sanal makine ismi |
<virtual-machine-2> girin. |
| SSH ortak anahtar kaynağı |
Yeni anahtar çifti oluştur'a tıklayın. |
| Anahtar çifti adı |
<virtual-machine-2>-key girin. |
| Sanal ağ |
Sanal ağ'ı< seçin>. |
| Alt ağ (subnet) |
Alt ağı< (10.0.0.0/24) seçin>. |
| Halka Açık IP |
Yok'a tıklayın. |
| NIC ağ güvenlik grubu |
Gelişmiş'i seçin. |
| Ağ güvenlik grubunu yapılandırma |
Network-security-group< öğesini seçin>. |
Uyarı
Azure Bastion konağı olan bir sanal ağdaki sanal makinelerin 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 Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa 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.
Bir kaynak grubu oluşturun
New-AzResourceGroup kullanarak sanal ağ için bir kaynak grubu oluşturun. Azure bölgesinde resource-group adlı< bir kaynak grubu><oluşturmak için aşağıdaki kodu çalıştırın:>
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$rg = @{
Name = $resourceGroupName
Location = $location
}
New-AzResourceGroup @rg
Sanal ağ oluşturma
New-AzVirtualNetwork komutunu kullanarak IP adresi ön eki 10.0.0.0/16 olan <virtual-network> adlı bir sanal ağını <resource-group> kaynak grubunda ve <region> konumunda oluşturun:
# Variable declarations
$virtualNetworkName = 'vnet-1' # <virtual-network>
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vnet = @{
Name = $virtualNetworkName
ResourceGroupName = $resourceGroupName
Location = $location
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure, kaynakları sanal ağ içindeki bir alt ağa dağıtır. Adres ön eki 10.0.0.0/24 olan alt ağ adlı< bir alt ağ> yapılandırması oluşturmak için Add-AzVirtualNetworkSubnetConfig komutunu kullanın:
# Variable declarations
$subnetName = 'subnet-1' # <subnet>
$subnet = @{
Name = $subnetName
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
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 sanal makinelere bağlanmak için tarayıcınızı kullanır. Sanal makinelerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Azure 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.
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
Yapılandırmayı ayarlayın:
$virtualNetwork | Set-AzVirtualNetwork
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.
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$ip = @{
ResourceGroupName = $resourceGroupName
Name = 'public-ip'
Location = $location
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
AzureBastionSubnet'te yeni bir Temel SKU Bastion konağı oluşturmak için New-AzBastion komutunu kullanın:
# Variable declarations
$bastionName = 'bastion' # <bastion>
$resourceGroupName = 'test-rg' # <resource-group>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$bastion = @{
Name = $bastionName
ResourceGroupName = $resourceGroupName
PublicIpAddressRgName = $resourceGroupName
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = $resourceGroupName
VirtualNetworkName = $virtualNetworkName
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 sanal makineler oluşturabilirsiniz.
Sanal makine oluşturma
İlk sanal makineyi oluşturma
New-AzVM ile bir sanal makine oluşturun. Aşağıdaki örnek, <virtual-network> sanal ağında <virtual-machine-1> adlı bir sanal makine oluşturur.
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vm1Name = 'vm-1' # <virtual-machine-1>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$subnetName = 'subnet-1' # <subnet>
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vm1Name
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = $virtualNetworkName
SubnetName = $subnetName
PublicIpAddressName = "" # No public IP address
SshKeyName = "$vm1Name-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
İkinci sanal makineyi oluşturma
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vm2Name = 'vm-2' # <virtual-machine-2>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$subnetName = 'subnet-1' # <subnet>
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vm2Name
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = $virtualNetworkName
SubnetName = $subnetName
PublicIpAddressName = "" # No public IP address
SshKeyName = "$vm2Name-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
Azure'ın sanal makineleri oluşturması birkaç dakika sürer. Azure sanal makineleri oluşturmayı tamamladığında çıkışı PowerShell'e döndürür.
Uyarı
Bastion konağı olan bir sanal ağdaki sanal makinelerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve sanal makineler 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 sanal makinelerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için bkz. Azure Sanal Makinesinden genel bir IP adresini ayırma.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa 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.
Bir kaynak grubu oluşturun
Az group create komutunu kullanarak sanal ağı barındıracak bir kaynak grubu oluşturun. Azure bölgesinde resource-group adlı< bir kaynak grubu><oluşturmak için aşağıdaki kodu kullanın:>
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
location="eastus2" # <region>
az group create \
--name $resourceGroupName \
--location $location
Sanal ağ ve alt ağ oluşturma
az network vnet create komutunu kullanarak <resource-group> kaynak grubunda <subnet> adlı bir alt ağa sahip <virtual-network> adlı bir sanal ağ oluşturun:
# Variable declarations
virtualNetworkName="vnet-1" # <virtual-network>
resourceGroupName="test-rg" # <resource-group>
subnetName="subnet-1" # <subnet>
az network vnet create \
--name $virtualNetworkName \
--resource-group $resourceGroupName \
--address-prefix 10.0.0.0/16 \
--subnet-name $subnetName \
--subnet-prefixes 10.0.0.0/24
Azure Bastion’ı dağıtma
Azure Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki sanal makinelere bağlanmak için tarayıcınızı kullanır. Sanal makinelerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur.
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. Azure Bastion hakkında daha fazla bilgi için bkz. Azure Bastion nedir?.
Sanal ağınız için bir Bastion alt ağı oluşturmak için az network vnet subnet create komutunu kullanın. Bu alt ağ yalnızca Bastion kaynakları için ayrılmıştır ve AzureBastionSubnet olarak adlandırılmalıdır.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
virtualNetworkName="vnet-1" # <virtual-network>
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group $resourceGroupName \
--vnet-name $virtualNetworkName \
--address-prefix 10.0.1.0/26
Bastion için bir genel IP adresi oluşturun. Bu IP adresi, Bastion konağına internetten bağlanmak için kullanılır.
az network public-ip create komutunu, <resource-group> kaynak grubunda public-ip adlı bir genel IP adresi oluşturmak için kullanın.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
location="eastus2" # <region>
az network public-ip create \
--resource-group $resourceGroupName \
--name public-ip \
--sku Standard \
--location $location \
--zone 1 2 3
AzureBastionSubnet'te sanal ağınız için bastion konağı oluşturmak için az network bastion create komutunu kullanın:
# Variable declarations
bastionName="bastion" # <bastion>
resourceGroupName="test-rg" # <resource-group>
virtualNetworkName="vnet-1" # <virtual-network>
location="eastus2" # <region>
az network bastion create \
--name $bastionName \
--public-ip-address public-ip \
--resource-group $resourceGroupName \
--vnet-name $virtualNetworkName \
--location $location \
--sku Basic
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 sanal makineler oluşturabilirsiniz.
Sanal makine oluşturma
İlk sanal makineyi oluşturma
az vm create ile bir sanal makine oluşturun. Aşağıdaki örnek, <virtual-network> sanal ağında <virtual-machine-1> adlı bir sanal makine oluşturur. SSH anahtarları varsayılan bir anahtar konumunda zaten yoksa, komut bunları oluşturur. seçeneği --no-wait , bir sonraki adıma devam edebilmeniz için sanal makineyi arka planda oluşturur.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
vm1Name="vm-1" # <virtual-machine-1>
virtualNetworkName="vnet-1" # <virtual-network>
subnetName="subnet-1" # <subnet>
az vm create \
--resource-group $resourceGroupName \
--name $vm1Name \
--image Ubuntu2204 \
--vnet-name $virtualNetworkName \
--subnet $subnetName \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
İkinci sanal makineyi oluşturma
<Virtual-network> sanal ağında <virtual-machine-2> adlı bir sanal makine oluşturun.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
vm2Name="vm-2" # <virtual-machine-2>
virtualNetworkName="vnet-1" # <virtual-network>
subnetName="subnet-1" # <subnet>
az vm create \
--resource-group $resourceGroupName \
--name $vm2Name \
--image Ubuntu2204 \
--vnet-name $virtualNetworkName \
--subnet $subnetName \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys
Sanal makinenin oluşturulması birkaç dakika sürer.
Uyarı
Bastion konağı olan bir sanal ağdaki sanal makinelerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve sanal makineler 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 sanal makinelerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa 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.
Şablonu gözden geçir
Bu hızlı başlangıçta kullandığınız şablon Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.6.18.56646",
"templateHash": "10806234693722113459"
}
},
"parameters": {
"vnetName": {
"type": "string",
"defaultValue": "VNet1",
"metadata": {
"description": "VNet name"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address prefix"
}
},
"subnet1Prefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet 1 Prefix"
}
},
"subnet1Name": {
"type": "string",
"defaultValue": "Subnet1",
"metadata": {
"description": "Subnet 1 Name"
}
},
"subnet2Prefix": {
"type": "string",
"defaultValue": "10.0.1.0/24",
"metadata": {
"description": "Subnet 2 Prefix"
}
},
"subnet2Name": {
"type": "string",
"defaultValue": "Subnet2",
"metadata": {
"description": "Subnet 2 Name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-08-01",
"name": "[parameters('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet1Name')]",
"properties": {
"addressPrefix": "[parameters('subnet1Prefix')]"
}
},
{
"name": "[parameters('subnet2Name')]",
"properties": {
"addressPrefix": "[parameters('subnet2Prefix')]"
}
}
]
}
}
]
}
Şablon aşağıdaki Azure kaynaklarını tanımlar:
Şablonu dağıt
Resource Manager şablonunu Azure'a dağıtma:
Azure'da oturum açmak ve şablonu açmak için Azure'a dağıt'ı seçin. Şablon, iki alt ağa sahip bir sanal ağ oluşturur.
Portalda, İki Alt Ağ ile Sanal Ağ Oluştur sayfasında aşağıdaki değerleri girin veya seçin:
-
Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu adı için CreateVNetQS-rg girin ve tamam'ı seçin.
-
Sanal Ağ Adı: Yeni sanal ağ için bir ad girin.
Gözden geçir ve oluştur'u seçin ve ardından Oluştur seçeneğini belirleyin.
Dağıtım tamamlandığında, dağıttığınız kaynakları gözden geçirmek için Kaynağa git düğmesini seçin.
Dağıtılmış kaynakları gözden geçir.
Sanal ağ1 için ayarlar bölmelerine göz atarak sanal ağ ile oluşturduğunuz kaynakları keşfedin:
Genel Bakış sekmesinde 10.0.0.0/16'nın tanımlı adres alanı gösterilir.
Alt Ağlar sekmesi, subnet1 ve Subnet2'nin dağıtılan alt ağlarını şablondan uygun değerlerle gösterir.
Şablondaki bir sanal ağın JSON söz dizimi ve özellikleri hakkında bilgi edinmek için Microsoft.Network/virtualNetworks bölümüne bkz.
Sanal ağı ve sanal makineleri oluşturma
Bu hızlı başlangıç, sanal ağı, kaynak alt ağını ve sanal makineleri oluşturmak için Sanal ağdaki iki VM Bicep şablonunu Azure Resource Manager Hızlı Başlangıç Şablonları kullanarak oluşturur. Bicep şablonu aşağıdaki Azure kaynaklarını tanımlar:
Bicep dosyasını gözden geçirin:
@description('Admin username')
param adminUsername string
@description('Admin password')
@secure()
param adminPassword string
@description('Prefix to use for VM names')
param vmNamePrefix string = 'BackendVM'
@description('Location for all resources.')
param location string = resourceGroup().location
@description('Size of the virtual machines')
param vmSize string = 'Standard_D2s_v3'
var availabilitySetName = 'AvSet'
var storageAccountType = 'Standard_LRS'
var storageAccountName = uniqueString(resourceGroup().id)
var virtualNetworkName = 'vNet'
var subnetName = 'backendSubnet'
var loadBalancerName = 'ilb'
var networkInterfaceName = 'nic'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)
var numberOfInstances = 2
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
}
resource availabilitySet 'Microsoft.Compute/availabilitySets@2023-09-01' = {
name: availabilitySetName
location: location
sku: {
name: 'Aligned'
}
properties: {
platformUpdateDomainCount: 2
platformFaultDomainCount: 2
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: subnetName
properties: {
addressPrefix: '10.0.2.0/24'
}
}
]
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2023-09-01' = [for i in range(0, numberOfInstances): {
name: '${networkInterfaceName}${i}'
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
subnet: {
id: subnetRef
}
loadBalancerBackendAddressPools: [
{
id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')
}
]
}
}
]
}
dependsOn: [
virtualNetwork
loadBalancer
]
}]
resource loadBalancer 'Microsoft.Network/loadBalancers@2023-09-01' = {
name: loadBalancerName
location: location
sku: {
name: 'Standard'
}
properties: {
frontendIPConfigurations: [
{
properties: {
subnet: {
id: subnetRef
}
privateIPAddress: '10.0.2.6'
privateIPAllocationMethod: 'Static'
}
name: 'LoadBalancerFrontend'
}
]
backendAddressPools: [
{
name: 'BackendPool1'
}
]
loadBalancingRules: [
{
properties: {
frontendIPConfiguration: {
id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'LoadBalancerFrontend')
}
backendAddressPool: {
id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')
}
probe: {
id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'lbprobe')
}
protocol: 'Tcp'
frontendPort: 80
backendPort: 80
idleTimeoutInMinutes: 15
}
name: 'lbrule'
}
]
probes: [
{
properties: {
protocol: 'Tcp'
port: 80
intervalInSeconds: 15
numberOfProbes: 2
}
name: 'lbprobe'
}
]
}
dependsOn: [
virtualNetwork
]
}
resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' = [for i in range(0, numberOfInstances): {
name: '${vmNamePrefix}${i}'
location: location
properties: {
availabilitySet: {
id: availabilitySet.id
}
hardwareProfile: {
vmSize: vmSize
}
osProfile: {
computerName: '${vmNamePrefix}${i}'
adminUsername: adminUsername
adminPassword: adminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
createOption: 'FromImage'
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface[i].id
}
]
}
diagnosticsProfile: {
bootDiagnostics: {
enabled: true
storageUri: storageAccount.properties.primaryEndpoints.blob
}
}
}
}]
output location string = location
output name string = loadBalancer.name
output resourceGroupName string = resourceGroup().name
output resourceId string = loadBalancer.id
Bicep şablonunu dağıt
Bicep dosyasını yerel bilgisayarınıza main.bicep olarak kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın:
CLI
az group create \
--name TestRG \
--location eastus
az deployment group create \
--resource-group TestRG \
--template-file main.bicep
PowerShell
$rgParams = @{
Name = 'TestRG'
Location = 'eastus'
}
New-AzResourceGroup @rgParams
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'main.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görüntülenir.
Azure Bastion’ı dağıtma
Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki sanal makinelere bağlanmak için tarayıcınızı kullanır. Sanal makinelerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Azure Bastion hakkında daha fazla bilgi için bkz. Azure Bastion nedir?
Uyarı
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.
Sanal ağınızda Bastion'ı dağıtmak ve yapılandırmak için Azure Resource Manager Hızlı Başlangıç Şablonları'ndanHizmet Olarak Azure Bastion Bicep şablonunu kullanın. Bu Bicep şablonu aşağıdaki Azure kaynaklarını tanımlar:
Bicep dosyasını gözden geçirin:
@description('Name of new or existing vnet to which Azure Bastion should be deployed')
param vnetName string = 'vnet01'
@description('IP prefix for available addresses in vnet address space')
param vnetIpPrefix string = '10.1.0.0/16'
@description('Specify whether to provision new vnet or deploy to existing vnet')
@allowed([
'new'
'existing'
])
param vnetNewOrExisting string = 'new'
@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')
param bastionSubnetIpPrefix string = '10.1.1.0/26'
@description('Name of Azure Bastion resource')
param bastionHostName string
@description('Azure region for Bastion and virtual network')
param location string = resourceGroup().location
var publicIpAddressName = '${bastionHostName}-pip'
var bastionSubnetName = 'AzureBastionSubnet'
resource publicIp 'Microsoft.Network/publicIPAddresses@2022-01-01' = {
name: publicIpAddressName
location: location
sku: {
name: 'Standard'
}
properties: {
publicIPAllocationMethod: 'Static'
}
}
// if vnetNewOrExisting == 'new', create a new vnet and subnet
resource newVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' = if (vnetNewOrExisting == 'new') {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetIpPrefix
]
}
subnets: [
{
name: bastionSubnetName
properties: {
addressPrefix: bastionSubnetIpPrefix
}
}
]
}
}
// if vnetNewOrExisting == 'existing', reference an existing vnet and create a new subnet under it
resource existingVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' existing = if (vnetNewOrExisting == 'existing') {
name: vnetName
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2022-01-01' = if (vnetNewOrExisting == 'existing') {
parent: existingVirtualNetwork
name: bastionSubnetName
properties: {
addressPrefix: bastionSubnetIpPrefix
}
}
resource bastionHost 'Microsoft.Network/bastionHosts@2022-01-01' = {
name: bastionHostName
location: location
dependsOn: [
newVirtualNetwork
existingVirtualNetwork
]
properties: {
ipConfigurations: [
{
name: 'IpConf'
properties: {
subnet: {
id: subnet.id
}
publicIPAddress: {
id: publicIp.id
}
}
}
]
}
}
Bicep şablonunu dağıt
Bicep dosyasını yerel bilgisayarınıza bastion.bicep olarak kaydedin.
Dosyada aşağıdaki değişiklikleri yapmak için bir metin veya kod düzenleyicisi kullanın:
- 2. Satır: `
param vnetName string` ögesini `'vnet01'`den `'VNet'`ye değiştirin.
- 5. Satır:
param vnetIpPrefix string'yi '10.1.0.0/16''den '10.0.0.0/16''ye değiştirin.
- 12. Satır:
param vnetNewOrExisting string öğesini 'new''den 'existing''ye değiştirin.
- 15. Satır:
param bastionSubnetIpPrefix string öğesini '10.1.1.0/26''den '10.0.1.0/26''ye değiştirin.
- 18. Satır:
param bastionHostName string'yi param bastionHostName = 'VNet-bastion' olarak değiştirin.
Bicep dosyanızın ilk 18 satırı şu örnekteki gibi görünmelidir:
@description('Name of new or existing vnet to which Azure Bastion should be deployed')
param vnetName string = 'VNet'
@description('IP prefix for available addresses in vnet address space')
param vnetIpPrefix string = '10.0.0.0/16'
@description('Specify whether to provision new vnet or deploy to existing vnet')
@allowed([
'new'
'existing'
])
param vnetNewOrExisting string = 'existing'
@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')
param bastionSubnetIpPrefix string = '10.0.1.0/26'
@description('Name of Azure Bastion resource')
param bastionHostName = 'VNet-bastion'
bastion.bicep dosyasını kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın:
CLI
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görüntülenir.
Uyarı
Bastion konağı olan bir sanal ağdaki sanal makinelerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve sanal makineler 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 sanal makinelerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Dağıtılmış kaynakları gözden geçir.
Dağıtılan kaynakları gözden geçirmek için Azure CLI, Azure PowerShell veya Azure portalını kullanın:
CLI
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portal
Azure portalında kaynak gruplarını arayın ve seçin.
Kaynak grupları sayfasında, kaynak grupları listesinden TestRG'yi seçin.
TestRG'ninGenel Bakış sayfasında sanal ağ, iki sanal makine ve Bastion konağı dahil olmak üzere oluşturduğunuz tüm kaynakları gözden geçirin.
VNet sanal ağını seçin. Sanal ağın Genel Bakış sayfasında 10.0.0.0/16'nın tanımlı adres alanına dikkat edin.
Sol menüde Alt ağlar'ı seçin.
Alt ağlar sayfasında, bicep dosyalarından atanan değerlerle backendSubnet ve AzureBastionSubnet'in dağıtılan alt ağlarına dikkat edin.