Bu hızlı başlangıçta Azure portalı, Azure CLI, PowerShell, Bicep, ARM şablonu ve Terraform kullanarak NAT ağ geçidi oluşturmayı öğrenin. NAT Gateway hizmeti, Azure'daki sanal makineler için giden bağlantı sağlar.
NAT ağ geçidi oluşturma
NAT ağ geçidi kaynağını ve diğer kaynakları dağıtmadan önce, dağıtılan kaynakları içermesi için bir kaynak grubu gerekir. Aşağıdaki adımlarda bir kaynak grubu, NAT ağ geçidi kaynağı ve bir genel IP adresi oluşturursunuz. Bir veya daha fazla genel IP adresi kaynağı, genel IP ön eki veya her ikisini birden kullanabilirsiniz.
Genel IP ön ekleri ve NAT ağ geçidi hakkında bilgi için bkz . NAT ağ geçidini yönetme.
Portalın üst kısmındaki arama kutusuna NAT ağ geçidi girin. Arama sonuçlarında NAT ağ geçitleri'ni seçin.
+Oluştur'u seçin.
Ağ adresi çevirisi (NAT) ağ geçidi oluştur bölümünde, Temel Bilgiler sekmesinde bu bilgileri girin veya seçin:
Ayarlar |
Değer |
Proje Ayrıntıları |
|
Abonelik |
Azure aboneliğinizi seçin. |
Kaynak Grubu |
Yeni Oluştur'u seçin.
test-rg girin.
Tamam'ı seçin. |
Örnek ayrıntıları |
|
NAT ağ geçidi adı |
nat-gateway girin |
Bölge |
Doğu ABD 2'yi seçin |
Kullanılabilirlik Alanı |
Bölge Yok'a tıklayın. |
TCP boşta kalma zaman aşımı (dakika) |
Varsayılan değeri 4 olarak bırakın. |
Kullanılabilirlik alanları ve NAT ağ geçidi hakkında bilgi için bkz . NAT ağ geçidi ve kullanılabilirlik alanları.
Giden IP sekmesini seçin veya sayfanın en altındaki Sonraki: Giden IP düğmesini seçin.
Giden IP sekmesinde aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Genel IP adresleri |
Yeni bir genel IP adresi oluştur'u seçin.
Ad alanına public-ip-nat girin.
Tamam'ı seçin. |
Gözden Geçir + oluştur sekmesini seçin veya sayfanın en altındaki mavi Gözden Geçir + oluştur düğmesini seçin.
Oluştur'i seçin.
Sanal ağ ve bastion host oluştur
Aşağıdaki yordam kaynak alt ağına, Azure Bastion alt ağına ve Azure Bastion konağına sahip bir sanal ağ oluşturur.
Portalda Sanal ağlar'ı arayın ve seçin.
Sanal ağlar sayfasında + 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 |
(ABD) Doğu ABD 2'yi seçin. |
Güvenlik sekmesine gitmek için İleri'yi seçin.
Güvenlik sekmesinin Azure Bastion bölümünde Azure Bastion'ı Etkinleştir'i seçin.
Azure Bastion, özel IP adreslerini kullanarak güvenli kabuk (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. 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.
Azure Bastion'da aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Azure Bastion sunucu adı |
Bastion yazın. |
Azure Bastion genel IP adresi |
Genel IP adresi oluştur seçeneğini belirleyin.
Ad alanına public-ip-bastion yazın.
Tamam'ı 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ünde aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Alt ağ amacı |
Varsayılan Varsayılan değeri değiştirmeyin. |
İsim |
subnet-1'i girin. |
IPv4 |
|
IPv4 adres aralığı |
Varsayılan değeri 10.0.0.0/16 olarak bırakın. |
Başlangıç adresi |
Varsayılan değeri 10.0.0.0 olarak bırakın. |
Boyut |
Varsayılan /24(256 adres) olarak bırakın. |
Güvenlik |
|
NAT Geçidi |
nat-gateway'i seçin. |
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.
Test sanal makinesi oluşturma
Aşağıdaki yordam, sanal ağda vm-1 adlı bir test sanal makinesi (VM) oluşturur.
Portalda Sanal makineler'i arayın ve seçin.
Sanal makineler seçeneğinde, + Oluştur'u seçin, ardından Azure sanal makinesi oluşturun.
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ü |
Parola'ya tıklayın. |
Kullanıcı adı |
azureuser yazın. |
Şifre |
Bir parola girin. |
Parolayı onaylayın |
Parolayı yeniden girin. |
Giriş bağlantı noktası kuralları |
|
Genel Erişime Açık Gelen Bağlantı Noktaları |
Yok'a tıklayın. |
Sayfanın üst kısmındaki Ağ sekmesini seçin.
Ağ sekmesine 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.
Uyarı
Savunma 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 herhangi bir VM'den 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 ile bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
Aşağıdaki örnek, eastus2 konumunda test-rg adlı bir kaynak grubu oluşturur:
$rsg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rsg
NAT ağ geçidini oluşturma
Bu bölümde NAT ağ geçidini ve destekleyici kaynakları oluşturun.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'public-ip-nat'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1,2,3
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus2'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create subnet config and associate NAT gateway to subnet##
$subnet = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host ##
$ip = @{
Name = 'public-ip'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1,2,3
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Savunma ana bilgisayarının kurulumu birkaç dakika sürebilir. Sonraki bölüme geçmeden önce ana bilgisayarın kurulmasını bekleyin.
Sanal makine oluşturma
Bu bölümde, NAT ağ geçidini test etmek ve giden bağlantının genel IP adresini doğrulamak için bir sanal makine oluşturacaksınız.
# 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 network interface for virtual machine ##
$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 virtual machine ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Sonraki bölüme geçmeden önce sanal makine oluşturma işleminin tamamlanmasını bekleyin.
Bir kaynak grubu oluşturun
az group create komutuyla bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
az group create \
--name test-rg \
--location eastus2
NAT ağ geçidini oluşturma
Bu bölümde NAT ağ geçidini ve destekleyici kaynakları oluşturun.
Ortak IP adresi oluşturma
İnternet'e erişmek için NAT ağ geçidi için bir veya daha fazla genel IP adresine ihtiyacınız vardır. Genel IP adresi kaynağı oluşturmak için az network public-ip create komutunu kullanın.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3
NAT ağ geçidi kaynağı oluşturma
az network nat gateway create komutunu kullanarak bir NAT ağ geçidi kaynağı oluşturun. NAT ağ geçidi, önceki adımda oluşturulan genel IP adresini kullanır. Boşta kalma süresi 10 dakika olarak ayarlanır.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Sanal ağ ve alt ağ oluşturma
az network vnet create komutunu kullanarak subnet-1 adlı bir alt ağ ile vnet-1 adlı bir sanal ağ oluşturun. Sanal ağın IP adresi alanı 10.0.0.0/16'dır. Sanal ağ içindeki alt ağ 10.0.0.0/24'dür.
az network vnet create \
--resource-group test-rg \
--name vnet-1 \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.0.0.0/24
Azure Bastion alt ağı oluşturma
az network vnet subnet create komutunu kullanarak AzureBastionSubnet adlı bir Azure Bastion alt ağı oluşturun:
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
NAT ağ geçidini alt ağ ile ilişkilendirme
AZ network vnet subnet update komutunu kullanarak NAT ağ geçidini alt ağ ile ilişkilendirin:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--nat-gateway nat-gateway
Bastion konağı için genel IP adresi oluşturma
az network public-ip create komutunu kullanarak Bastion konağı için bir genel IP adresi oluşturun:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Bastion host oluşturma
az network bastion create komutunu kullanarak Azure Bastion konağını oluşturun:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Bastion sunucunun kurulumu birkaç dakika sürebilir. Sonraki bölüme geçmeden önce Bastion sunucusunun hazır olmasını bekleyin.
Sanal makine oluşturma
NAT ağ geçidini test etmek ve giden bağlantının genel IP adresini doğrulamak için vm-1 adlı bir sanal makine oluşturun.
az vm create komutunu kullanın:
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--admin-username azureuser \
--authentication-type password \
--public-ip-address "" \
--subnet subnet-1 \
--vnet-name vnet-1
Sonraki bölüme geçmeden önce sanal makine oluşturma işleminin tamamlanmasını bekleyin.
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon deklaratif sözdizimi kullanır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalında açılır.
Şablonu gözden geçir
Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.
Bu şablon, bir ... oluşturmak için yapılandırılmıştır.
Sanal ağ
NAT ağ geçidi kaynağı
Ubuntu sanal makinesi
Ubuntu sanal makinesi NAT ağ geçidi kaynağıyla ilişkilendirilmiş bir alt ağa dağıtılır.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "15583664434476061565"
}
},
"parameters": {
"vmname": {
"type": "string",
"defaultValue": "vm-1",
"metadata": {
"description": "Name of the virtual machine"
}
},
"vmsize": {
"type": "string",
"defaultValue": "Standard_D2s_v3",
"metadata": {
"description": "Size of the virtual machine"
}
},
"vnetname": {
"type": "string",
"defaultValue": "vnet-1",
"metadata": {
"description": "Name of the virtual network"
}
},
"subnetname": {
"type": "string",
"defaultValue": "subnet-1",
"metadata": {
"description": "Name of the subnet for virtual network"
}
},
"vnetaddressspace": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address space for virtual network"
}
},
"vnetsubnetprefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet prefix for virtual network"
}
},
"natgatewayname": {
"type": "string",
"defaultValue": "nat-gateway",
"metadata": {
"description": "Name of the NAT gateway"
}
},
"networkinterfacename": {
"type": "string",
"defaultValue": "nic-1",
"metadata": {
"description": "Name of the virtual machine nic"
}
},
"publicipname": {
"type": "string",
"defaultValue": "public-ip-nat",
"metadata": {
"description": "Name of the NAT gateway public IP"
}
},
"nsgname": {
"type": "string",
"defaultValue": "nsg-1",
"metadata": {
"description": "Name of the virtual machine NSG"
}
},
"adminusername": {
"type": "string",
"metadata": {
"description": "Administrator username for virtual machine"
}
},
"adminpassword": {
"type": "securestring",
"metadata": {
"description": "Administrator password for virtual machine"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Name of resource group"
}
}
},
"resources": [
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2021-05-01",
"name": "[parameters('nsgname')]",
"location": "[parameters('location')]",
"properties": {
"securityRules": [
{
"name": "SSH",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 300,
"direction": "Inbound"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[parameters('publicipname')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[parameters('vmname')]",
"location": "[parameters('location')]",
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmsize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "Canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts-gen2",
"version": "latest"
},
"osDisk": {
"osType": "Linux",
"name": "[format('{0}_disk1', parameters('vmname'))]",
"createOption": "FromImage",
"caching": "ReadWrite",
"managedDisk": {
"storageAccountType": "Premium_LRS"
},
"diskSizeGB": 30
}
},
"osProfile": {
"computerName": "[parameters('vmname')]",
"adminUsername": "[parameters('adminusername')]",
"adminPassword": "[parameters('adminpassword')]",
"linuxConfiguration": {
"disablePasswordAuthentication": false,
"provisionVMAgent": true
},
"allowExtensionOperations": true
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[parameters('vnetname')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetaddressspace')]"
]
},
"subnets": [
{
"name": "[parameters('subnetname')]",
"properties": {
"addressPrefix": "[parameters('vnetsubnetprefix')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
},
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
],
"enableDdosProtection": false,
"enableVmProtection": false
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
]
},
{
"type": "Microsoft.Network/natGateways",
"apiVersion": "2021-05-01",
"name": "[parameters('natgatewayname')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2021-05-01",
"name": "[format('{0}/{1}', parameters('vnetname'), 'subnet-1')]",
"properties": {
"addressPrefix": "[parameters('vnetsubnetprefix')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
},
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetname'))]"
]
},
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[parameters('networkinterfacename')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig-1",
"properties": {
"privateIPAddress": "10.0.0.4",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetname'), 'subnet-1')]"
},
"primary": true,
"privateIPAddressVersion": "IPv4"
}
}
],
"enableAcceleratedNetworking": false,
"enableIPForwarding": false,
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgname'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgname'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetname'), 'subnet-1')]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('natgatewayname')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
}
}
}
Şablonda dokuz Azure kaynağı tanımlanır:
Şablonu dağıt
Portal
Dağıtılmış kaynakları gözden geçir.
Azure portalınaoturum açın.
Sol bölmeden Kaynak grupları'nı seçin.
Önceki bölümde oluşturduğunuz kaynak grubunu seçin. Varsayılan kaynak grubu adı myResourceGroupNAT'dir
Kaynak grubunda aşağıdaki kaynakların oluşturulduğunu doğrulayın:
PowerShell
$location = Read-Host -Prompt "Enter the location (i.e. westcentralus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json"
$resourceGroupName = "myResourceGroupNAT"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
Azure Komut Satırı Arayüzü (Azure CLI)
read -p "Enter the location (i.e. westcentralus): " location
resourceGroupName="myResourceGroupNAT"
templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json"
az group create \
--name $resourceGroupName \
--location $location
az deployment group create \
--resource-group $resourceGroupName \
--template-uri $templateUri
Bicep dosyasını gözden geçir
Bu hızlı başlangıçta kullanılan Bicep dosyası, Azure Hızlı Başlangıç Şablonları'ndan alınmıştır.
Bu Bicep dosyası aşağıdakini oluşturacak şekilde yapılandırılmıştır:
Sanal ağ
NAT ağ geçidi kaynağı
Ubuntu sanal makinesi
Ubuntu VM, NAT ağ geçidi kaynağıyla ilişkili bir alt ağa dağıtılır.
@description('Name of the virtual machine')
param vmname string = 'vm-1'
@description('Size of the virtual machine')
param vmsize string = 'Standard_D2s_v3'
@description('Name of the virtual network')
param vnetname string = 'vnet-1'
@description('Name of the subnet for virtual network')
param subnetname string = 'subnet-1'
@description('Address space for virtual network')
param vnetaddressspace string = '10.0.0.0/16'
@description('Subnet prefix for virtual network')
param vnetsubnetprefix string = '10.0.0.0/24'
@description('Name of the NAT gateway')
param natgatewayname string = 'nat-gateway'
@description('Name of the virtual machine nic')
param networkinterfacename string = 'nic-1'
@description('Name of the NAT gateway public IP')
param publicipname string = 'public-ip-nat'
@description('Name of the virtual machine NSG')
param nsgname string = 'nsg-1'
@description('Administrator username for virtual machine')
param adminusername string
@description('Administrator password for virtual machine')
@secure()
param adminpassword string
@description('Name of resource group')
param location string = resourceGroup().location
resource nsg 'Microsoft.Network/networkSecurityGroups@2021-05-01' = {
name: nsgname
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: {
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '22'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 300
direction: 'Inbound'
}
}
]
}
}
resource publicip 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicipname
location: location
sku: {
name: 'Standard'
}
properties: {
publicIPAddressVersion: 'IPv4'
publicIPAllocationMethod: 'Static'
idleTimeoutInMinutes: 4
}
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmname
location: location
properties: {
hardwareProfile: {
vmSize: vmsize
}
storageProfile: {
imageReference: {
publisher: 'Canonical'
offer: '0001-com-ubuntu-server-jammy'
sku: '22_04-lts-gen2'
version: 'latest'
}
osDisk: {
osType: 'Linux'
name: '${vmname}_disk1'
createOption: 'FromImage'
caching: 'ReadWrite'
managedDisk: {
storageAccountType: 'Premium_LRS'
}
diskSizeGB: 30
}
}
osProfile: {
computerName: vmname
adminUsername: adminusername
adminPassword: adminpassword
linuxConfiguration: {
disablePasswordAuthentication: false
provisionVMAgent: true
}
allowExtensionOperations: true
}
networkProfile: {
networkInterfaces: [
{
id: networkinterface.id
}
]
}
}
}
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetname
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetaddressspace
]
}
subnets: [
{
name: subnetname
properties: {
addressPrefix: vnetsubnetprefix
natGateway: {
id: natgateway.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
]
enableDdosProtection: false
enableVmProtection: false
}
}
resource natgateway 'Microsoft.Network/natGateways@2021-05-01' = {
name: natgatewayname
location: location
sku: {
name: 'Standard'
}
properties: {
idleTimeoutInMinutes: 4
publicIpAddresses: [
{
id: publicip.id
}
]
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: 'subnet-1'
properties: {
addressPrefix: vnetsubnetprefix
natGateway: {
id: natgateway.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource networkinterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkinterfacename
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig-1'
properties: {
privateIPAddress: '10.0.0.4'
privateIPAllocationMethod: 'Dynamic'
subnet: {
id: subnet.id
}
primary: true
privateIPAddressVersion: 'IPv4'
}
}
]
enableAcceleratedNetworking: false
enableIPForwarding: false
networkSecurityGroup: {
id: nsg.id
}
}
}
output location string = location
output name string = natgateway.name
output resourceGroupName string = resourceGroup().name
output resourceId string = natgateway.id
Bicep dosyasında dokuz Azure kaynağı tanımlanır:
Bicep dosyasını yükle
Bicep dosyasını, yerel bilgisayarınıza main.bicep olarak kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın.
Azure Komut Satırı Arayüzü (Azure CLI)
az group create --name exampleRG --location eastus
az deployment group create --resource-group exampleRG --template-file main.bicep --parameters adminusername=<admin-name>
PowerShell
New-AzResourceGroup -Name exampleRG -Location eastus
New-AzResourceGroupDeployment -ResourceGroupName exampleRG -TemplateFile ./main.bicep -adminusername "<admin-name>"
Uyarı
admin-name değerini sanal makinenin yönetici kullanıcı adıyla değiştirin<.> Ayrıca adminpassword girmeniz de istenir.
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir mesaj görmelisiniz.
Dağıtılmış kaynakları gözden geçir.
Kaynak grubundaki dağıtılan kaynakları listelemek için Azure portalını, Azure CLI'yı veya Azure PowerShell'i kullanın.
Azure Komut Satırı Arayüzü (Azure CLI)
az resource list --resource-group exampleRG
PowerShell
Get-AzResource -ResourceGroupName exampleRG
Bu bölümde NAT ağ geçidini test edin. İlk olarak NAT ağ geçidinin genel IP'sini bulursunuz. Ardından test sanal makinesine bağlanır ve NAT ağ geçidi üzerinden giden bağlantıyı doğrularsınız.