Dans ce guide de démarrage rapide, découvrez comment créer une passerelle NAT à l’aide du portail Azure, d’Azure CLI, de PowerShell, de Bicep, du modèle ARM et de Terraform. Le service NAT Gateway fournit une connectivité sortante pour des machines virtuelles dans Azure.
Créer une passerelle NAT.
Avant de déployer la ressource de passerelle NAT et les autres ressources, un groupe de ressources est requis pour contenir les ressources déployées. Dans les étapes suivantes, vous créez un groupe de ressources, une ressource de passerelle NAT et une adresse IP publique. Vous pouvez utiliser une ou plusieurs ressources d’adresse IP publique, des préfixes d’adresse IP publique, ou ces deux options à la fois.
Pour plus d’informations sur les préfixes d’adresses IP publiques et une passerelle NAT, consultez Gérer la passerelle NAT.
Dans la zone de recherche située en haut du portail, entrez Passerelle NAT. Sélectionnez Passerelle NAT dans les résultats de la recherche.
Sélectionnez + Créer.
Dans Créer une passerelle NAT (traduction d’adresses réseau) , entrez ou sélectionnez les informations suivantes sous l’onglet Informations de base :
Paramètre |
Valeur |
Détails du projet |
|
Abonnement |
Sélectionnez votre abonnement Azure. |
Groupe de ressources |
Sélectionnez Créer nouveau.
Entrez test-rg.
Sélectionnez OK. |
Détails de l’instance |
|
Nom de la passerelle NAT |
Entrer nat-gateway |
Région |
Sélectionnez USA Est 2 |
Zone de disponibilité |
Sélectionnez Aucune zone. |
Délai d’inactivité TCP (minutes) |
Conservez la valeur par défaut 4. |
Pour plus d’informations sur les zones de disponibilité et la passerelle NAT, consultez Passerelle NAT et zones de disponibilité.
Sélectionnez l’onglet IP sortante, ou sélectionnez le bouton Suivant : IP sortante situé au bas de la page.
Sous l’onglet IP sortante, entrez ou sélectionnez les informations suivantes :
Paramètre |
Valeur |
Adresses IP publiques |
Sélectionnez Créer une adresse IP publique.
Dans Nom, entrez public-ip-nat.
Sélectionnez OK. |
Sélectionnez l’onglet Vérifier + créer, ou sélectionnez le bouton bleu Vérifier + créer situé au bas de la page.
Cliquez sur Créer.
Créer un réseau virtuel et un hôte bastion
La procédure suivante crée un réseau virtuel avec un sous-réseau de ressources, un sous-réseau Azure Bastion et un hôte Azure Bastion.
Dans le portail, recherchez et sélectionnez Réseaux virtuels.
Dans la page Réseaux virtuels, sélectionnez + Créer.
Sous l’onglet Général de la page Créer un réseau virtuel, entrez ou sélectionnez les informations suivantes :
Réglage |
Valeur |
Détails du projet |
|
Abonnement |
Sélectionnez votre abonnement. |
groupe de ressources |
Sélectionnez test-rg. |
Détails de l’instance |
|
Nom |
Entrez vnet-1. |
Région |
Sélectionnez (États-Unis) USA Est 2. |
Sélectionnez Suivant pour passer à l’onglet Sécurité.
Sélectionnez Activer Azure Bastion dans la section Azure Bastion de l’onglet Sécurité.
Azure Bastion utilise votre navigateur web pour se connecter aux machines virtuelles de votre réseau virtuel au moyen de SSH (Secure Shell) ou RDP (Remote Desktop Protocol) à l’aide de leurs adresses IP privées. Les machines virtuelles ne requièrent pas d’adresse IP publique, de logiciel client ou de configuration spéciale. Pour obtenir plus d’informations sur Azure Bastion, voir Azure Bastion
Remarque
Le tarif horaire commence à partir du moment où Bastion est déployé, quelle que soit l’utilisation des données sortantes. Pour plus d’informations, consultez Tarifications et Références SKU. Si vous déployez Bastion dans le cadre d’un tutoriel ou d’un test, nous vous recommandons de supprimer cette ressource après l’avoir utilisée.
Saisissez ou sélectionnez les informations suivantes dans Azure Bastion :
Réglage |
Valeur |
Nom d’hôte Azure Bastion |
Entrez bastion. |
Adresse IP publique Azure Bastion |
Sélectionnez Créer une adresse IP publique.
Saisissez public-ip-bastion dans le champ Nom.
Sélectionnez OK. |
Sélectionnez Suivant pour passer à l’onglet Adresses IP.
Dans la zone Espace d’adressage de Sous-réseaux, sélectionnez le sous-réseau par défaut.
Dans Modifier le sous-réseau, entrez ou sélectionnez les informations suivantes :
Réglage |
Valeur |
Objectif du sous-réseau |
Laissez la valeur par défaut Par défaut. |
Nom |
Entrez subnet-1. |
IPv4 |
|
Plage d'adresses IPv4 |
Conservez la valeur par défaut 10.0.0.0/16. |
Adresse de début |
Laissez la valeur par défaut sur 10.0.0.0. |
Taille |
Laissez la valeur par défaut sur /24(256 adresses). |
Sécurité |
|
Passerelle NAT |
Sélectionnez nat-gateway. |
Cliquez sur Enregistrer.
Sélectionnez Vérifier + créer dans la partie inférieure de l’écran, puis une fois la validation réussie, sélectionnez Créer.
Créer une machine virtuelle de test
La procédure suivante crée une machines virtuelles de test (VM) nommée vm-1 dans le réseau virtuel.
Dans le portail, recherchez et sélectionnez Machines virtuelles.
Dans Machines virtuelles, sélectionnez + Créer, puis Machine virtuelle Azure.
Sous l’onglet Général de la page Créer une machine virtuelle, entrez ou sélectionnez les informations suivantes :
Réglage |
Valeur |
Détails du projet |
|
Abonnement |
Sélectionnez votre abonnement. |
groupe de ressources |
Sélectionnez test-rg. |
Détails de l’instance |
|
Nom de la machine virtuelle |
Entrez vm-1. |
Région |
Sélectionnez USA Est 2. |
Options de disponibilité |
Sélectionnez Aucune redondance d’infrastructure requise. |
Type de sécurité |
Conservez la valeur par défaut Standard. |
Image |
Sélectionnez Ubuntu Server 22.04 LTS - x64 Gen2. |
Architecture de machine virtuelle |
Laissez la valeur par défaut x64. |
Taille |
Sélectionnez une taille. |
Compte d’administrateur |
|
Type d’authentification |
Sélectionnez Mot de passe. |
Nom d’utilisateur |
Saisissez azureuser. |
Mot de passe |
Entrez un mot de passe. |
Confirmer le mot de passe |
Entrez de nouveau le mot de passe. |
Règles des ports d’entrée |
|
Ports d’entrée publics |
Sélectionnez Aucun. |
Sélectionnez l’onglet Réseau en haut de la page.
Entrez ou sélectionnez les informations suivantes sous l’onglet Réseau :
Réglage |
Valeur |
Interface réseau |
|
Réseau virtuel |
Sélectionnez vnet-1. |
Sous-réseau |
Sélectionnez subnet-1 (10.0.0.0/24). |
Adresse IP publique |
Sélectionnez Aucun. |
Groupe de sécurité réseau de la NIC |
Sélectionnez Avancé. |
Configurer un groupe de sécurité réseau |
Sélectionnez Créer nouveau.
Entrez nsg-1 pour le nom.
Pour le reste, laissez les valeurs par défaut et sélectionnez OK. |
Pour les autres paramètres, laissez les valeurs par défaut, puis sélectionnez Vérifier + créer.
Passez en revue les paramètres, puis sélectionnez Créer.
Remarque
Les machines virtuelles d’un réseau virtuel avec un hôte bastion n’ont pas besoin d’adresses IP publiques. Bastion fournit l’adresse IP publique et les machines virtuelles utilisent des adresses IP privées pour communiquer au sein du réseau. Vous pouvez supprimer les adresses IP publiques des machines virtuelles des réseaux virtuels hébergés par bastion. Pour plus d’informations, consultez Dissocier une adresse IP publique d’une machine virtuelle Azure.
Remarque
Azure fournit une adresse IP d’accès sortant par défaut pour les machines virtuelles qui n’ont pas d’adresse IP publique ou qui se trouvent dans le pool de back-ends d’un équilibreur de charge Azure de base interne. Le mécanisme d’adresse IP d’accès sortant par défaut fournit une adresse IP sortante qui n’est pas configurable.
L’adresse IP de l’accès sortant par défaut est désactivée quand l’un des événements suivants se produit :
- Une adresse IP publique est affectée à la machine virtuelle.
- La machine virtuelle est placée dans le pool principal d’un équilibreur de charge standard, avec ou sans règles de trafic sortant.
- Une ressource Azure NAT Gateway est attribuée au sous-réseau de la machine virtuelle.
Les machines virtuelles que vous créez à l'aide d'ensembles de machines virtuelles en mode d’orchestration flexible n’ont pas d’accès sortant par défaut.
Pour plus d’informations sur les connexions sortantes dans Azure, consultez Accès sortant par défaut dans Azure et Utiliser SNAT (Source Network Address Translation) pour les connexions sortantes.
Créer un groupe de ressources
Créez un groupe de ressources avec New-AzResourceGroup. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
L’exemple suivant crée un groupe de ressources nommé test-rg à l’emplacement eastus2 :
$rsg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rsg
Créer la passerelle NAT
Dans cette section, créez la passerelle NAT et les ressources de prise en charge.
## 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
Le déploiement de l’hôte bastion peut prendre plusieurs minutes. Attendez la fin du déploiement de l’hôte bastion avant de passer à la section suivante.
Créer une machine virtuelle
Dans cette section, vous allez créer une machine virtuelle pour tester la passerelle NAT et vérifier l’adresse IP publique de la connexion sortante.
# 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
Attendez la fin de la création de la machine virtuelle avant de passer à la section suivante.
Créer un groupe de ressources
Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
az group create \
--name test-rg \
--location eastus2
Créer la passerelle NAT
Dans cette section, créez la passerelle NAT et les ressources de prise en charge.
Création d’une adresse IP publique
Pour accéder à Internet, vous avez besoin d’une ou de plusieurs adresses IP publiques pour la passerelle NAT. Utiliser la commande az network public-ip create permet de créer une ressource d’adresse IP publique.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3
Créer une ressource de passerelle NAT
Créez une ressource de passerelle NAT à l’aide d’az network nat gateway create. La passerelle NAT utilise l’adresse IP publique créée à l’étape précédente. Le délai d’inactivité est défini sur 10 minutes.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Créer un réseau virtuel et un sous-réseau
Créez un réseau virtuel nommé vnet-1 avec un sous-réseau nommé sous-réseau-1 à l’aide d’az network vnet create. L’espace d’adressage IP pour le réseau virtuel est 10.0.0.0/16. Un sous-réseau au sein du réseau virtuel est 10.0.0.0/24.
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
Créer un sous-réseau Azure Bastion
Créez un sous-réseau Azure Bastion nommé AzureBastionSubnet à l’aide d’az network vnet subnet create :
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Associer la passerelle NAT au sous-réseau
Associez la passerelle NAT au sous-réseau à l’aide d’az network vnet subnet update :
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--nat-gateway nat-gateway
Créer une adresse IP publique pour l’hôte Bastion
Créez une adresse IP publique pour l’hôte Bastion à l’aide d’az network public-ip create :
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Créer un hôte Bastion
Créez l’hôte Azure Bastion à l’aide d’az network bastion create :
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Le déploiement de l’hôte bastion peut prendre plusieurs minutes. Attendez la fin du déploiement de l’hôte bastion avant de passer à la section suivante.
Créer une machine virtuelle
Créez une machine virtuelle nommée vm-1 pour tester la passerelle NAT et vérifier l’adresse IP publique de la connexion sortante. Utilisez az vm create :
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
Attendez la fin de la création de la machine virtuelle avant de passer à la section suivante.
Un modèle Azure Resource Manager est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez votre déploiement prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
Si votre environnement remplit les prérequis et que vous êtes déjà familiarisé avec l’utilisation des modèles ARM, sélectionnez le bouton Déployer sur Azure. Le modèle s’ouvre dans le portail Azure.
Vérifier le modèle
Le modèle utilisé dans ce démarrage rapide est tiré des modèles de démarrage rapide Azure.
Ce modèle est configuré pour créer les éléments suivants :
La machine virtuelle Ubuntu est déployée sur un sous-réseau associé à la ressource de passerelle NAT.
{
"$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'))]"
}
}
}
Neuf ressources Azure sont définies dans le modèle :
Déployer le modèle
Portail
Passer en revue les ressources déployées
Connectez-vous au portail Azure.
Sélectionnez Groupes de ressources dans le volet gauche.
Sélectionnez le groupe de ressources que vous avez créé dans la section précédente. Le nom du groupe de ressources par défaut est myResourceGroupNAT.
Vérifiez que les ressources suivantes ont été créées dans le groupe de ressources :
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 CLI (Interface de ligne de commande Azure)
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
Examiner le fichier Bicep
Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide Azure.
Ce fichier Bicep est configuré pour créer :
La machine virtuelle Ubuntu est déployée sur un sous-réseau associé à la ressource de passerelle NAT.
@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
Neuf ressources Azure sont définies dans le fichier Bicep :
Déployer le fichier Bicep
Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.
Déployez le fichier Bicep à l’aide d’Azure CLI ou d’Azure PowerShell.
Azure CLI (Interface de ligne de commande Azure)
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>"
Remarque
Remplacez <admin-name> par le nom d’utilisateur de l’administrateur de la machine virtuelle. Vous serez également invité à entrer adminpassword.
Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.
Passer en revue les ressources déployées
Utilisez le portail Azure, Azure CLI ou Azure PowerShell pour répertorier les ressources déployées dans le groupe de ressources.
Azure CLI (Interface de ligne de commande Azure)
az resource list --resource-group exampleRG
PowerShell
Get-AzResource -ResourceGroupName exampleRG
Dans cette section, nous testons la passerelle NAT. Nous découvrez d’abord l’IP publique de la passerelle NAT. Nous vous connectez ensuite à la machine virtuelle de test et vérifiez la connexion sortante via la passerelle NAT.
Pour plus d’informations sur Azure NAT Gateway, consultez la ressource suivante :