Azure portalı, Azure CLI, Azure PowerShell, Azure Resource Manager (ARM) şablonu, Bicep şablonu ve Terraform kullanarak Azure Sanal Ağ (VNet) 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.
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 |
test-rg girin. |
| Bölge |
Doğu ABD 2’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 |
test-rg öğesini seçin. |
|
Örnek ayrıntıları |
|
| İsim |
vnet-1 girin. |
| Bölge |
Doğu ABD 2’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 |
subnet-1'i girin. |
| 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 |
test-rg öğesini seçin. |
|
Örnek ayrıntıları |
|
| İsim |
Bastion yazın. |
| Bölge |
Doğu ABD 2’yi seçin. |
| Katman |
Geliştirici'yi seçin. |
|
Sanal ağları yapılandırma |
|
| Sanal ağ |
vnet-1'i 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 vm-1 ve vm-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şturmanın 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 |
test-rg öğesini seçin. |
|
Örnek ayrıntıları |
|
| Sanal makine ismi |
vm-1'i girin. |
| Bölge |
Doğu ABD 2’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ı |
vm-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ğ |
vnet-1'i seçin. |
| Alt ağ (subnet) |
subnet-1 (10.0.0.0/24) öğesini 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 nsg-1 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 |
Girin vm-2. |
| SSH ortak anahtar kaynağı |
Yeni anahtar çifti oluştur'a tıklayın. |
| Anahtar çifti adı |
vm-2-key girin. |
| Sanal ağ |
vnet-1'i seçin. |
| Alt ağ (subnet) |
subnet-1 (10.0.0.0/24) öğesini 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 |
nsg-1'i 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ğı 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
New-AzVirtualNetwork komutunu kullanarak test-rg kaynak grubunda ve eastus2 konumunda IP adresi ön eki 10.0.0.0/16 olan 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
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
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.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
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:
$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 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, vnet-1 sanal ağında vm-1 adlı bir sanal makine oluşturur.
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "eastus2"
Name = "vm-1"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-1-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
İkinci sanal makineyi oluşturma
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "eastus2"
Name = "vm-2"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-2-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 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
Az group create komutunu 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 kullanın:
az group create \
--name test-rg \
--location eastus2
Sanal ağ ve alt ağ oluşturma
az network vnet create komutunu kullanarak test-rg kaynak grubunda subnet-1 adlı bir alt ağa sahip vnet-1adlı bir sanal ağ oluşturun:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--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.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--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 test-rg kaynak grubunda public-ip adlı bir genel IP adresi oluşturmak için kullanın:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--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:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2 \
--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, vnet-1 sanal ağında vm-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.
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
İkinci sanal makineyi oluşturma
vnet-1 sanal ağında vm-2 adlı bir sanal makine oluşturun.
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--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ıçta sanal ağı, kaynak alt ağını ve sanal makineleri oluşturmak için Azure Resource Manager Hızlı Başlangıç Şablonları'ndanVNET Bicep'te İki VM şablonu kullanılmaktadır. 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.