Démarrage rapide : utiliser Azure PowerShell pour créer un réseau virtuel

Ce démarrage rapide vous explique comment créer un réseau virtuel à l’aide d’Azure PowerShell. Vous créez ensuite deux machines virtuelles dans le réseau, vous vous y connectez en toute sécurité à partir d’Internet et vous commencez une communication privée entre elles.

Un réseau virtuel est l’élément de construction fondamental pour les réseaux privés dans Azure. Le réseau virtuel Microsoft Azure permet à des ressources Azure, comme des machines virtuelles, de communiquer de manière sécurisée entre elles et sur Internet.

Diagramme des ressources créées dans le guide de démarrage rapide du réseau virtuel.

Prérequis

  • Compte Azure avec un abonnement actif. Vous pouvez créer un compte gratuitement.

  • Azure Cloud Shell ou Azure PowerShell.

    Les étapes de ce démarrage rapide exécutent les applets de commande Azure PowerShell de manière interactive dans Azure Cloud Shell. Pour exécuter les commandes dans le Cloud Shell, sélectionnez Ouvrir Cloudshell dans le coin supérieur droit d’un bloc de code. Sélectionnez Copier pour copier le code, puis collez-le dans Cloud Shell pour l’exécuter. Vous pouvez exécuter Azure Cloud Shell à partir du Portail Azure.

    Vous pouvez également installer Azure PowerShell localement pour exécuter les applets de commande. Les étapes de cet article nécessitent le module Azure PowerShell version 5.4.1 ou ultérieure. Exécutez Get-Module -ListAvailable Az pour rechercher la version installée. Si vous devez effectuer une mise à niveau, consultez Mise à jour d’Azure PowerShell.

    Si vous exécutez PowerShell localement, exécutez Connect-AzAccount pour vous connecter à Azure.

Créer un groupe de ressources

Utilisez New-AzResourceGroup pour créer un groupe de ressources afin d’héberger le réseau virtuel. Exécutez le code suivant pour créer un groupe de ressources nommé test-rg dans la région eastus2 Azure :

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

Créez un réseau virtuel

  1. Utilisez New-AzVirtualNetwork pour créer un réseau virtuel nommé vnet-1 avec le préfixe d’adresse IP 10.0.0.0/16 dans le groupe de ressources test-rg et l’emplacement eastus2 :

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure déploie des ressources vers un sous-réseau au sein d’un réseau virtuel. Utilisez Add-AzVirtualNetworkSubnetConfig pour créer une configuration de sous-réseau nommée subnet-1 avec un préfixe d’adresse 10.0.0.0/24 :

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Associez la configuration du sous-réseau au réseau virtuel en utilisant Set-AzVirtualNetwork :

    $virtualNetwork | Set-AzVirtualNetwork
    

Déployer Azure Bastion

Azure Bastion utilise votre navigateur pour se connecter aux machines virtuelles de votre réseau virtuel via le protocole SSH (Secure Shell) ou le protocole 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 plus d’informations sur Bastion, consultez Qu’est-ce qu’Azure Bastion ?.

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.

  1. Configurez le sous-réseau Bastion pour votre réseau virtuel. Ce sous-réseau est exclusivement réservé aux ressources Azure Bastion et doit être nommé BastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Définissez la configuration :

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Créez une adresse IP publique pour Bastion. L’hôte Bastion utilise l’adresse IP publique pour accéder à SSH et RDP sur le port 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Utilisez la commande New-AzBastion pour créer un hôte Bastion de référence SKU Standard dans AzureBastionSubnet :

    $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 des ressources Bastion prend environ 10 minutes. Vous pouvez créer des machines virtuelles dans la section suivante lors du déploiement de Bastion sur votre réseau virtuel.

Créer des machines virtuelles

Utilisez New-AzVM pour créer deux machines virtuelles nommées vm-1 et vm-2 dans le sous-réseau subnet-1 du réseau virtuel. Lorsque vous êtes invité à entrer des informations d’identification, renseignez des noms d’utilisateur et des mots de passe pour les machines virtuelles.

  1. Pour créer la première machine virtuelle, utilisez le code suivant :

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

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

Conseil

Vous pouvez utiliser l’option -AsJob pour créer une machine virtuelle en arrière-plan pendant que vous poursuivez d’autres tâches. Par exemple, exécutez New-AzVM @vm1 -AsJob. Lorsqu’Azure commence la création de la machine virtuelle en arrière-plan, vous obtenez quelque chose similaire à l’entrée suivante :

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

Il ne faut que quelques minutes à Azure pour créer les machines virtuelles. Une fois qu’Azure a fini de créer les machines virtuelles, l’application retourne la sortie vers PowerShell.

Notes

Les adresses IP publiques ne sont pas nécessaires pour les machines virtuelles d’un réseau virtuel avec un hôte Bastion. 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 de n’importe laquelle des machines virtuelles dans 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 avez créées, au moyen de groupes de machines virtuelles identiques 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.

Connexion à une machine virtuelle

  1. Dans le portail, recherchez et sélectionnez Machines virtuelles.

  2. Dans la page Machines virtuelles, sélectionnez vm-1.

  3. Dans les informations de Vue d’ensemble de vm-1, sélectionnez Se connecter.

  4. Dans la page Se connecter à la machine virtuelle, sélectionnez l’onglet Bastion.

  5. Sélectionnez Utiliser Bastion.

  6. Entrez le nom d’utilisateur et le mot de passe que vous avez créés lors de la création de la machine virtuelle, puis sélectionnez Se connecter.

Démarrer la communication entre les machines virtuelles

  1. À l’invite bash pour vm-1, entrez ping -c 4 vm-2.

    Vous recevez une réponse similaire au message suivant :

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. Fermez la connexion Bastion à vm-1.

  3. Répétez les étapes décrites dans Se connecter à une machine virtuelle pour vous connecter à vm-2.

  4. À l’invite bash pour vm-2, entrez ping -c 4 vm-1.

    Vous recevez une réponse similaire au message suivant :

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. Fermez la connexion Bastion à vm-2.

Nettoyer les ressources

Lorsque vous en avez terminé avec le réseau virtuel et les machines virtuelles, utilisez Remove-AzResourceGroup pour supprimer le groupe de ressources et toutes ses ressources :

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

Étapes suivantes

Dans ce démarrage rapide, vous avez créé un réseau virtuel avec un sous-réseau par défaut contenant deux machines virtuelles. Vous avez déployé Azure Bastion et vous l’avez utilisé pour vous connecter aux machines virtuelles, ensuite vous avez communiqué de manière sécurisée entre les machines virtuelles. Pour plus d’informations sur les paramètres de réseau virtuel, consultez Créer, changer ou supprimer un réseau virtuel.