Assegnare più indirizzi IP alle macchine virtuali usando l'interfaccia della riga di comando di Azure 2.0

Una macchina virtuale di Azure può essere associata a una o più interfacce di rete. A ogni scheda di interfaccia di rete possono essere assegnati uno o più indirizzi IP pubblici o privati, statici e dinamici. L'assegnazione di più indirizzi IP a una VM consente di:

  • Ospitare più siti Web o servizi con indirizzi IP e certificati SSL diversi in un singolo server.
  • Fungere da appliance virtuale di rete, ad esempio un firewall o un servizio di bilanciamento del carico.
  • Aggiungere qualsiasi indirizzo IP per qualsiasi scheda di interfaccia di rete a un pool back-end di Azure Load Balancer. In passato, era possibile aggiungere a un pool di back-end solo gli indirizzi IP primari per la scheda di interfaccia di rete primaria. Per altre informazioni su come bilanciare il carico di più configurazioni IP, leggere l'articolo Load balancing multiple IP configurations (Bilanciamento del carico di più configurazioni IP).

Ogni scheda di interfaccia di rete collegata a una macchina virtuale dispone di una o più configurazioni IP associate. A ogni configurazione viene assegnato un indirizzo IP privato statico o dinamico. Ogni configurazione può anche avere una risorsa di indirizzo IP pubblico associata. Una risorsa indirizzo IP pubblico dispone di un indirizzo IP dinamico o statico pubblico assegnato. Per altre informazioni sugli indirizzi IP in Azure, leggere l'articolo sugli indirizzi IP in Azure.

Sono previsti limiti per il numero di indirizzi IP privati che possono essere assegnati a una scheda di rete e per il numero di indirizzi IP pubblici che possono essere usati in una sottoscrizione di Azure. Per informazioni dettagliate, vedere l'articolo Limiti di Azure.

Questo articolo spiega come creare una macchina virtuale (VM) tramite il modello di distribuzione Azure Resource Manager usando l'interfaccia della riga di comando di Azure 2.0. Non è possibile a assegnare più indirizzi IP alle risorse create tramite il modello di distribuzione classica. Per altre informazioni sui modelli di distribuzione di Azure, leggere l'articolo Understand Azure deployment models (Informazioni sui modelli di distribuzione di Azure).

Scenario

Una macchina virtuale con una singola scheda di interfaccia di rete viene creata e collegata a una rete virtuale. La macchina virtuale richiede tre diversi indirizzi IP privati e due indirizzi IP pubblici. Gli indirizzi IP vengono assegnati alle configurazioni IP seguenti:

  • IPConfig-1: assegna un indirizzo IP privato statico e un indirizzo IP pubblico statico.
  • IPConfig-2: assegna un indirizzo IP privato statico e un indirizzo IP pubblico statico.
  • IPConfig-3: assegna un indirizzo IP privato statico e nessun indirizzo IP pubblico.

    Più indirizzi IP

Le configurazioni IP vengono associate alla scheda di interfaccia di rete al momento della creazione della stessa, mentre la scheda di interfaccia di rete viene collegata alla macchina virtuale al momento della creazione della macchina virtuale. I tipi di indirizzi IP usati per lo scenario sono a scopo illustrativo. È possibile assegnare qualsiasi tipo di assegnazione e indirizzo IP desiderato.

Nota

Sebbene la procedura illustrata in questo articolo assegni tutte le configurazioni IP a una singola scheda di interfaccia di rete, è possibile anche assegnare più configurazioni IP a una scheda di interfaccia di rete in una macchina virtuale con più schede di interfaccia di rete. Per informazioni su come creare una macchina virtuale con più schede di interfacce di rete, leggere l'articolo Creare una macchina virtuale con più schede di interfaccia di rete.

Creare una macchina virtuale con più indirizzi IP

È possibile completare questa attività usando l'interfaccia della riga di comando di Azure 2.0 (questo articolo) o l'interfaccia della riga di comando di Azure 1.0. Sostituire i valori in base alle esigenze specifiche dell'ambiente. La procedura seguente illustra come creare una macchina virtuale di esempio con più indirizzi IP, come descritto nello scenario. Modificare i valori delle variabili e i tipi di indirizzi IP come richiesto per l'implementazione.

  1. Installare l'interfaccia della riga di comando di Azure 2.0, se non è già stata installata.
  2. Creare una coppia di chiavi SSH pubblica e privata per le VM Linux completando i passaggi descritti in Creare una coppia di chiavi SSH pubblica e privata per le VM Linux.
  3. Da una shell dei comandi accedere con il comando az login e selezionare la sottoscrizione in uso.
  4. Creare la VM eseguendo lo script seguente in un computer Linux o Mac. Lo script crea un gruppo di risorse, una rete virtuale (VNet), una scheda di interfaccia di rete con tre configurazioni IP e una VM con due schede di interfaccia di rete collegate. Le risorse di schede di interfaccia di rete, indirizzo IP pubblico, rete virtuale e VM devono essere tutte presenti nella stessa località e nella stessa sottoscrizione. Lo script seguente esamina un caso in cui tutte le risorse sono incluse nello stesso gruppo di risorse, anche se questo non è un requisito.

#!/bin/sh

RgName="myResourceGroup"
Location="westcentralus"
az group create --name $RgName --location $Location

# Create a public IP address resource with a static IP address using the `--allocation-method Static` option. If you
# do not specify this option, the address is allocated dynamically. The address is assigned to the resource from a pool
# of IP adresses unique to each Azure region. Download and view the file from
# https://www.microsoft.com/en-us/download/details.aspx?id=41653 that lists the ranges for each region.

PipName="myPublicIP"

# This name must be unique within an Azure location.
DnsName="myDNSName"

az network public-ip create \
--name $PipName \
--resource-group $RgName \
--location $Location \
--dns-name $DnsName\
--allocation-method Static

# Create a virtual network with one subnet

VnetName="myVnet"
VnetPrefix="10.0.0.0/16"
VnetSubnetName="mySubnet"
VnetSubnetPrefix="10.0.0.0/24"

az network vnet create \
--name $VnetName \
--resource-group $RgName \
--location $Location \
--address-prefix $VnetPrefix \
--subnet-name $VnetSubnetName \
--subnet-prefix $VnetSubnetPrefix

# Create a network interface connected to the subnet and associate the public IP address to it. Azure will create the
# first IP configuration with a static private IP address and will associate the public IP address resource to it.

NicName="MyNic1"
az network nic create \
--name $NicName \
--resource-group $RgName \
--location $Location \
--subnet $VnetSubnet1Name \
--private-ip-address 10.0.0.4
--vnet-name $VnetName \
--public-ip-address $PipName

# Create a second public IP address, a second IP configuration, and associate it to the NIC. This configuration has a
# static public IP address and a static private IP address.

az network public-ip create \
--resource-group $RgName \
--location $Location \
--name myPublicIP2 \
--dns-name mypublicdns2 \
--allocation-method Static

az network nic ip-config create \
--resource-group $RgName \
--nic-name $NicName \
--name IPConfig-2 \
--private-ip-address 10.0.0.5 \
--public-ip-name myPublicIP2

# Create a third IP configuration, and associate it to the NIC. This configuration has  static private IP address and   # no public IP address.

azure network nic ip-config create \
--resource-group $RgName \
--nic-name $NicName \
--private-ip-address 10.0.0.6 \
--name IPConfig-3

# Note: Though this article assigns all IP configurations to a single NIC, you can also assign multiple IP configurations
# to any NIC in a VM. To learn how to create a VM with multiple NICs, read the Create a VM with multiple NICs 
# article: https://docs.microsoft.com/azure/virtual-network/virtual-network-deploy-multinic-arm-cli.

# Create a VM and attach the NIC.

VmName="myVm"

# Replace the value for the following **VmSize** variable with a value from the
# https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-sizes rticle. The script fails if the VM size
# is not supported in the location you select. Run the `azure vm sizes --location estcentralus` command to get a full list
# of VMs in US West Central, for example.

VmSize="Standard_DS1"

# Replace the value for the OsImage variable value with a value for *urn* from the utput returned by entering the
# `az vm image list` command.

OsImage="credativ:Debian:8:latest"

Username="adminuser"

# Replace the following value with the path to your public key file. If you're creating a Windows VM, remove the following
# line and you'll be prompted for the password you want to configure for the VM.

SshKeyValue="~/.ssh/id_rsa.pub"

az vm create \
--name $VmName \
--resource-group $RgName \
--image $OsImage \
--location $Location \
--size $VmSize \
--nics $NicName \
--admin-username $Username \
--ssh-key-value $SshKeyValue

Oltre a creare una VM con una scheda di interfaccia di rete con 3 configurazioni IP, lo script crea:

  • Un unico disco gestito Premium per impostazione predefinita, ma sono disponibili altre opzioni per il tipo di disco che è possibile creare. Leggere Creare una VM Linux usando l'interfaccia della riga di comando di Azure 2.0 per informazioni dettagliate.
  • Una rete virtuale con una subnet e due indirizzi IP pubblici. In alternativa, è possibile usare le risorse esistenti di rete virtuale, subnet, scheda di interfaccia di rete o indirizzo IP pubblico. Per informazioni su come usare le risorse di rete esistenti anziché creare risorse aggiuntive, immettere az vm create -h.

Per gli indirizzi IP pubblici è prevista una tariffa nominale. Per altre informazioni sui prezzi degli indirizzi IP, vedere la pagina Prezzi per gli indirizzi IP . È previsto un limite per il numero di indirizzi IP pubblici che possono essere usati in una sottoscrizione. Per altre informazioni sui limiti, vedere l'articolo Limiti di Azure.

Dopo avere creato la VM, immettere il comando az network nic show --name MyNic1 --resource-group myResourceGroup per visualizzare la configurazione della scheda di interfaccia di rete. Immettere az network nic ip-config list --nic-name MyNic1 --resource-group myResourceGroup --output table per visualizzare un elenco di configurazioni IP associate alla scheda di interfaccia di rete.

Aggiungere gli indirizzi IP privati al sistema operativo della macchina virtuale seguendo la procedura per il proprio sistema operativo riportata nella sezione Aggiungere indirizzi IP a una macchina virtuale di questo articolo.

Aggiungere indirizzi IP a una macchina virtuale

È possibile aggiungere indirizzi IP privati e pubblici a una scheda di interfaccia di rete esistente completando la procedura seguente. Gli esempi si basano sullo scenario descritto in questo articolo.

  1. Aprire una shell dei comandi e completare i passaggi rimanenti in questa sezione all'interno di una singola sessione. Se l'interfaccia della riga di comando di Azure non è installata e configurata, completare la procedura riportata nell'articolo Installazione dell'interfaccia della riga di comando di Azure 2.0 e accedere all'account Azure con il comando az-login.

  2. Completare i passaggi in una delle sezioni seguenti, a seconda delle esigenze:

    Aggiungere un indirizzo IP privato

    Per aggiungere un indirizzo IP privato a una scheda di interfaccia di rete, è necessario creare una configurazione IP usando il comando seguente. L'indirizzo IP statico deve essere un indirizzo non usato per la subnet.

    az network nic ip-config create \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --private-ip-address 10.0.0.7 \
    --name IPConfig-4
    

    Creare tutte le configurazioni usando nomi di configurazione univoci e indirizzi IP privati (per le configurazioni con indirizzi IP statici).

    Aggiungere un indirizzo IP pubblico

    L'indirizzo IP pubblico viene aggiunto associandolo a una nuova configurazione IP o a una configurazione IP esistente. Completare i passaggi in una delle sezioni che seguono, a seconda del caso.

    Per gli indirizzi IP pubblici è prevista una tariffa nominale. Per altre informazioni sui prezzi degli indirizzi IP, vedere la pagina Prezzi per gli indirizzi IP . È previsto un limite per il numero di indirizzi IP pubblici che possono essere usati in una sottoscrizione. Per altre informazioni sui limiti, vedere l'articolo Limiti di Azure.

    • Associare la risorsa a una nuova configurazione IP

      Ogni volta che si aggiunge un indirizzo IP pubblico a una nuova configurazione IP, è necessario aggiungere anche un indirizzo IP privato, perché tutte le configurazioni IP devono avere un indirizzo IP privato. È possibile aggiungere una risorsa indirizzo IP pubblico esistente o crearne una nuova. Per crearne una nuova, usare il comando seguente:

      az network public-ip create \
      --resource-group myResourceGroup \
      --location westcentralus \
      --name myPublicIP3 \
      --dns-name mypublicdns3
      

      Per creare una nuova configurazione IP con un indirizzo IP privato statico e la risorsa indirizzo IP pubblico myPublicIP3 associata, immettere il comando seguente:

      az network nic ip-config create \
      --resource-group myResourceGroup \
      --nic-name myNic1 \
      --name IPConfig-5 \
      --private-ip-address 10.0.0.8
      --public-ip-address myPublicIP3
      
    • Associare la risorsa a una configurazione IP esistente una risorsa di indirizzi IP pubblica può essere associata solo a una configurazione IP che non ha ancora associata. È possibile stabilire se una configurazione IP dispone di un indirizzo IP pubblico associato immettendo il comando seguente:

      az network nic ip-config list \
      --resource-group myResourceGroup \
      --nic-name myNic1 \
      --query "[?provisioningState=='Succeeded'].{ Name: name, PublicIpAddressId: publicIpAddress.id }" --output table
      

      Output restituito:

        Name        PublicIpAddressId
      
        ipconfig1   /subscriptions/[Id]/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP1
        IPConfig-2  /subscriptions/[Id]/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP2
        IPConfig-3
      

      Poiché l'output della colonna PublicIpAddressId per IpConfig-3 è vuoto, nessuna risorsa di indirizzo IP pubblico è attualmente associata. È possibile aggiungere una risorsa indirizzo IP pubblico esistente a IpConfig-3 o immettere il comando seguente per crearne una:

      az network public-ip create \
      --resource-group  myResourceGroup
      --location westcentralus \
      --name myPublicIP3 \
      --dns-name mypublicdns3 \
      --allocation-method Static
      

      Immettere il comando seguente per associare la risorsa indirizzo IP pubblico alla configurazione IP esistente denominata IPConfig-3:

      az network nic ip-config update \
      --resource-group myResourceGroup \
      --nic-name myNic1 \
      --name IPConfig-3 \
      --public-ip myPublicIP3
      
  3. Visualizzare gli ID di risorse indirizzo IP privato e indirizzo IP pubblico assegnati alla scheda di interfaccia di rete immettendo il comando seguente:

    az network nic ip-config list \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --query "[?provisioningState=='Succeeded'].{ Name: name, PrivateIpAddress: privateIpAddress, PrivateIpAllocationMethod: privateIpAllocationMethod, PublicIpAddressId: publicIpAddress.id }" --output table
    

    Output restituito:

     Name        PrivateIpAddress    PrivateIpAllocationMethod   PublicIpAddressId
    
     ipconfig1   10.0.0.4            Static                      /subscriptions/[Id]/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP1
     IPConfig-2  10.0.0.5            Static                      /subscriptions/[Id]/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP2
     IPConfig-3  10.0.0.6            Static                      /subscriptions/[Id]/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP3
    
  4. Aggiungere al sistema operativo della macchina virtuale gli indirizzi IP privati aggiunti alla scheda di interfaccia di rete seguendo le istruzioni disponibili nella sezione Aggiungere indirizzi IP a una macchina virtuale di questo articolo. Non aggiungere gli indirizzi IP pubblici al sistema operativo.

Add IP addresses to a VM operating system (Aggiungere indirizzi IP a un sistema operativo VM)

Connettersi e accedere alla VM creata con più indirizzi IP privati. È necessario aggiungere manualmente tutti gli indirizzi IP privati aggiunti alla VM, incluso l'indirizzo primario. Completare i passaggi seguenti per il sistema operativo VM:

Windows

  1. Da un prompt dei comandi digitare ipconfig /all. Viene visualizzato solo l'indirizzo IP privato Primary , tramite DHCP.
  2. Digitare ncpa.cpl nel prompt dei comandi per aprire la finestra Connessioni di rete.
  3. Visualizzare le proprietà per la scheda appropriata: Connessione alla rete locale (LAN).
  4. Fare doppio clic su Protocollo Intenret versione 4 (IPv4).
  5. Selezionare Utilizza il seguente indirizzo IP e immettere i valori seguenti:

    • Indirizzo IP: immettere l'indirizzo IP privato Primary .
    • Subnet mask: configurare questo valore in base alla subnet. Se, ad esempio, la subnet è di tipo /24, la subnet mask è 255.255.255.0.
    • Gateway predefinito: primo indirizzo IP nella subnet. Se la subnet è 10.0.0.0/24, l'indirizzo IP del gateway è 10.0.0.1.
    • Fare clic su Utilizza i seguenti indirizzi server DNS e immettere i valori seguenti:
      • Server DNS preferito: immettere 168.63.129.16 se non si usa il proprio server DNS. Se si usa il proprio server DNS, immettere il relativo indirizzo IP.
    • Fare clic sul pulsante Avanzate e aggiungere altri indirizzi IP. Aggiungere ogni indirizzo IP privato secondario elencato nel passaggio 8 all'interfaccia di rete con la stessa subnet specificata per l'indirizzo IP primario.

      Avviso

      Se non si segue correttamente la procedura precedente, è possibile che si perda la connettività alla macchina virtuale. Prima di continuare, assicurarsi che le informazioni immesse per il passaggio 5 siano corrette.

    • Fare clic su OK per chiudere le impostazioni TCP/IP e quindi di nuovo su OK per chiudere le impostazioni della scheda. Viene ristabilita la connessione RDP.

  6. Da un prompt dei comandi digitare ipconfig /all. Tutti gli indirizzi IP aggiunti vengono visualizzati e DHCP viene disattivato.

Convalida (Windows)

Per assicurarsi che sia possibile connettersi a Internet dalla configurazione dell'indirizzo IP secondaria tramite l'indirizzo IP ad essa associato, usare il comando seguente dopo averlo aggiunto correttamente seguendo la procedura precedente:

ping -S 10.0.0.5 hotmail.com

Nota

Per le configurazioni IP secondarie, è possibile effettuare il ping a Internet solo se alla configurazione è associato un indirizzo IP pubblico. Per le configurazioni IP primarie, non è necessario un indirizzo IP pubblico per il ping a Internet.

Linux (Ubuntu)

  1. Aprire una finestra del terminale.
  2. Assicurarsi di essere l'utente ROOT. In caso contrario, immettere il comando seguente:

    sudo -i
    
  3. Aggiornare il file di configurazione dell'interfaccia di rete, presupponendo 'eth0'.

    • Mantenere la voce esistente per dhcp. L'indirizzo IP primario conserva la configurazione precedente.
    • Aggiungere una configurazione per un indirizzo IP statico aggiuntivo con i comandi seguenti:

      cd /etc/network/interfaces.d/
      ls
      

      Dovrebbe essere visualizzato un file con estensione cfg.

  4. Open the file. Dovrebbero essere visualizzate le righe seguenti alla fine del file:

    auto eth0
    iface eth0 inet dhcp
    
  5. Aggiungere le righe seguenti dopo le righe esistenti nel file:

    iface eth0 inet static
    address <your private IP address here>
    netmask <your subnet mask>
    
  6. Salvare il file usando il comando seguente:

    :wq
    
  7. Reimpostare l'interfaccia di rete con il comando seguente:

    sudo ifdown eth0 && sudo ifup eth0
    

    Importante

    Eseguire ifdown e ifup nella stessa riga se si usa una connessione remota.

  8. Verificare che l'indirizzo IP venga aggiunto all'interfaccia di rete con il comando seguente:

    ip addr list eth0
    

    L'indirizzo IP aggiunto dovrebbe essere incluso nell'elenco.

Linux (Redhat, CentOS e altro)

  1. Aprire una finestra del terminale.
  2. Assicurarsi di essere l'utente ROOT. In caso contrario, immettere il comando seguente:

    sudo -i
    
  3. Immettere la password e seguire le istruzioni visualizzate. Quando si è l'utente ROOT, passare alla cartella degli script di rete con il comando seguente:

    cd /etc/sysconfig/network-scripts
    
  4. Elencare i file ifcfg correlati usando il comando seguente:

    ls ifcfg-*
    

    Uno dei file visualizzati dovrebbe essere ifcfg-eth0 .

  5. Per aggiungere un indirizzo IP, creare un file di configurazione come illustrato di seguito. Si noti che è necessario creare un file per ogni configurazione IP.

    touch ifcfg-eth0:0
    
  6. Aprire il file ifcfg-eth0:0 con il comando seguente:

    vi ifcfg-eth0:0
    
  7. Aggiungere contenuto al file, in questo caso eth0:0, con il comando seguente. Assicurarsi di aggiornare le informazioni in base all'indirizzo IP.

    DEVICE=eth0:0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.101.101
    NETMASK=255.255.255.0
    
  8. Salvare il file usando il comando seguente:

    :wq
    
  9. Riavviare i servizi di rete e assicurarsi che le modifiche siano riuscite eseguendo i comandi seguenti:

    /etc/init.d/network restart
    ifconfig
    

    L'indirizzo IP aggiunto, eth0:0, dovrebbe essere incluso nell'elenco restituito.

Convalida (Linux)

Per assicurarsi che sia possibile connettersi a Internet dalla configurazione dell'indirizzo IP secondaria tramite l'indirizzo IP ad essa associato, usare il comando seguente:

ping -I 10.0.0.5 hotmail.com

Nota

Per le configurazioni IP secondarie, è possibile effettuare il ping a Internet solo se alla configurazione è associato un indirizzo IP pubblico. Per le configurazioni IP primarie, non è necessario un indirizzo IP pubblico per il ping a Internet.

Per le macchine virtuali Linux, quando si prova a convalidare la connettività in uscita da una scheda di interfaccia di rete secondaria, potrebbe essere necessario aggiungere le route appropriate. Per eseguire questa operazione è possibile procedere in molti modi. Per informazioni sulla distribuzione Linux, vedere la documentazione appropriata. Ecco un metodo per ottenere questo risultato:

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.0.0.5 lookup custom
ip route add default via 10.0.0.1 dev eth2 table custom
  • Assicurarsi di sostituire:
    • 10.0.0.5 con l'indirizzo IP privato a cui è associato un indirizzo IP pubblico
    • 10.0.0.1 con il gateway predefinito
    • eth2 con il nome della scheda di interfaccia di rete secondaria