Configurazione di intervalli IP alias
Questo documento contiene le istruzioni per configurare gli indirizzi IP e gli intervalli IP alias utilizzando la console Google Cloud e Google Cloud CLI. Prima di eseguire questi comandi, consulta la sezione Intervalli IP degli alias.
Limitazioni
Subnet
- I limiti per rete descrivono il numero massimo di intervalli secondari che puoi definire per ogni subnet.
- Non puoi aggiungere e rimuovere intervalli secondari contemporaneamente. L'aggiunta e la rimozione devono essere eseguite come passaggi separati.
- L'espansione CIDR non è supportata per gli intervalli secondari.
Istanza VM
- Gli intervalli IP alias sono supportati su tutte le interfacce di rete delle VM. Il routing viene configurato automaticamente per gli intervalli IP alias sull'interfaccia di rete principale, ma non sulle interfacce secondarie. Se hai più interfacce di rete, devi configurare il routing basato su criteri per le interfacce aggiuntive. Per un esempio di come eseguire questa operazione, consulta il seguente tutorial: Configurare il routing a un'interfaccia secondaria di una VM.
- Gli intervalli IP degli alias possono essere aggiunti o eliminati, ma non possono essere aggiornati.
- Se rimuovi un intervallo IP di alias da una VM e lo assegni a un'altra VM, il completamento del trasferimento potrebbe richiedere fino a un minuto.
- I tag sorgente firewall non sono supportati per gli indirizzi IP alias. Ciò significa che quando configuri i tag di origine nelle regole firewall, questi tag corrispondono all'indirizzo IP principale della VM, ma non agli indirizzi IP degli alias. Utilizza gli intervalli di origine per consentire o negare il traffico in entrata dagli indirizzi IP alias.
- Il DNS interno risolve il nome di una VM nel suo IP principale. I nomi aggiuntivi per gli IP alias non vengono configurati automaticamente, ma possono essere aggiunti manualmente.
Rete VPC
- L'aggiunta o la rimozione di un numero elevato di intervalli IP di alias contemporaneamente può richiedere molto tempo. Ad esempio, l'aggiunta o l'eliminazione di 7000 intervalli IP alias potrebbe richiedere fino a 10 minuti.
- Le reti VPC in modalità automatica non possono essere eliminate se sono presenti intervalli di subnet secondari.
- In una route statica, l'indirizzo IP dell'hop successivo deve essere l'indirizzo IP principale della VM. Gli indirizzi IP alias non sono supportati come indirizzi IP di hop successivo.
- Gli indirizzi IPv6 non sono supportati.
- Gli intervalli IP alias sono supportati solo nelle reti VPC, non nelle reti legacy. Per determinare il tipo di rete, elenca le tue reti. Le reti VPC hanno una modalità
custom
oauto
. Le reti legacy hanno una modalitàlegacy
.
Comandi subnet
Gli intervalli IP degli alias VM devono essere assegnati da un intervallo di proprietà della subnet in cui si trova la VM. Tutte le subnet hanno un intervallo principale, ovvero l'intervallo standard di indirizzi IP interni che definisce la subnet. Una subnet potrebbe anche avere uno o più intervalli IP secondari di indirizzi IP interni. Puoi assegnare intervalli IP alias dagli intervalli principali o secondari della subnet.
Devi assegnare a ogni intervallo secondario un nome univoco per la subnet. Quando assegni un intervallo IP alias a una VM, il nome dell'intervallo secondario indica a Google Cloud da quale intervallo di subnet assegnare gli IP alias.
Tutti gli intervalli, sia principali che secondari, devono essere univoci in tutte le subnet della rete VPC e in tutte le reti collegate tramite peering di reti VPC, VPN o interconnessione.
Questa sezione spiega come creare una subnet con un intervallo secondario, aggiungere un intervallo secondario a una subnet esistente o rimuovere un intervallo secondario da una subnet. Una volta che la subnet ha l'intervallo che vuoi utilizzare, consulta i comandi delle istanze VM per istruzioni su come assegnare un intervallo a una VM.
Crea una subnet con uno o più intervalli CIDR secondari
Questo comando presuppone che tu abbia già una rete VPC. In caso contrario, creane uno.
Questo comando è lo stesso se crei una subnet per l'interfaccia principale della VM o per una delle interfacce secondarie.
L'utilizzo di un intervallo secondario per l'allocazione di IP alias ti consente di separare lo spazio IP per i servizi ospitati nella VM, semplificando la creazione di regole firewall che consentano l'accesso solo ai servizi in esecuzione sulla VM e blocchino l'accesso all'indirizzo IP principale della VM.
Console
- Vai alla pagina Reti VPC nella console Google Cloud.
Vai alla pagina Reti VPC - Fai clic sul nome di una rete esistente.
- Fai clic su Aggiungi subnet.
- Inserisci un nome per la nuova subnet.
- Specifica la Regione.
- Inserisci un intervallo di indirizzi IP in notazione CIDR. (esempio: 10.65.61.0/24)
- Fai clic su Crea intervallo IP secondario.
- Inserisci un nome intervallo di subnet.
- Inserisci un intervallo IP secondario in notazione CIDR. (ad esempio 10.9.0.0/24)
- Per aggiungere altri intervalli di indirizzi IP secondari, fai clic su Aggiungi intervallo IP per ogni intervallo e poi fornisci un nome e un intervallo.
- Fai clic su Aggiungi.
gcloud
gcloud compute networks subnets create s1 \ --network NETWORK_NAME \ --region REGION \ --range 10.65.61.0/24 \ --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Sostituisci quanto segue:
NETWORK_NAME
: il nome della rete in cui vuoi creare la subnet.REGION
: la regione in cui stai creando la subnet.RANGE_NAME_1
=RANGE_CIDR_1
eRANGE_NAME_2
=RANGE_CIDR_2
: i nomi degli intervalli secondari da cui estrarre gli intervalli IP alias e l'intervallo IP alias stesso, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta la documentazione della CLI gcloud.
API
Crea una subnet con uno o più intervalli secondari.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "PRIMARY_IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME", "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...] }
Sostituisci quanto segue:
NETWORK_URL
: l'URL o la rete VPC in cui verrà creata la subnet.PRIMARY_IP_RANGE
: l'intervallo di indirizzi IP principale per la subrete.PROJECT_ID
: l'ID del progetto che contiene la rete VPC in cui verrà creata la subnet.REGION
: la regione in cui si troverà la subnet.SECONDARY_IP_RANGE_1
eSECONDARY_IP_RANGE_2
: gli intervalli di indirizzi IP da utilizzare per gli intervalli secondari.SECONDARY_RANGE_NAME_1
eSECONDARY_RANGE_NAME_2
: i nomi da utilizzare per gli intervalli secondari.SUBNET_NAME
: un nome per la subnet.
Per ulteriori informazioni, consulta il
metodo subnetworks.insert
.
Terraform
Puoi utilizzare la risorsa Terraform per creare una subnet con uno o più intervalli secondari.
Gli argomenti Terraform hanno valori di esempio che puoi modificare.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungere intervalli CIDR secondari a una subnet esistente
Questa procedura presuppone che tu abbia una subnet che vuoi utilizzare, ma che debba aggiungere uno o più intervalli secondari.
L'utilizzo di un intervallo secondario per l'allocazione di IP alias semplifica la creazione di regole firewall che consentono l'accesso ai servizi in esecuzione su una VM, ma non all'indirizzo IP principale della VM.
Console
- Vai alla pagina Reti VPC nella console Google Cloud.
Vai alla pagina Reti VPC - Fai clic sul nome di una sottorete da modificare per visualizzarne la pagina dei dettagli.
- Fai clic su Modifica.
- Nella sezione Intervalli IP secondari, fai clic su Aggiungi intervallo IP.
- Inserisci un nome per Nome intervallo di subnet.
- Inserisci un intervallo per Intervallo IP secondario in notazione CIDR. (Esempio:
10.9.0.0/24
) - Per aggiungere altri intervalli di indirizzi IP secondari, fai clic su Aggiungi intervallo IP per ogni intervallo e poi fornisci un nome e un intervallo.
- Fai clic su Salva.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Sostituisci quanto segue:
SUBNET_NAME
: il nome della subnet a cui vuoi aggiungere gli intervalli secondari.REGION
: la regione in cui stai creando la subnet.RANGE_NAME_1
=RANGE_CIDR_1
eRANGE_NAME_2
=RANGE_CIDR_2
: i nomi degli intervalli secondari da cui estrarre gli intervalli IP alias e l'intervallo IP alias stesso, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta la documentazione della CLI gcloud.
API
Aggiungi un intervallo secondario a una subnet esistente.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...], "fingerprint": "SUBNETWORK_FINGERPRINT" }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto contenente la subnet da modificare.REGION
è la regione in cui si trova la subnet.SECONDARY_IP_RANGE_1
eSECONDARY_IP_RANGE_2
sono gli intervalli di indirizzi IP da utilizzare per gli intervalli secondari.SECONDARY_RANGE_NAME_1
eSECONDARY_RANGE_NAME_2
sono i nomi da utilizzare per gli intervalli secondariSUBNET_FINGERPRINT
è l'ID impronta della sottorete esistente, fornito quando descrivi una sottorete.SUBNET_NAME
è il nome della subnet da modificare.
Per ulteriori informazioni, consulta il
metodo subnetworks.patch
.
Rimuovere un intervallo CIDR secondario da una subnet
Puoi rimuovere gli intervalli secondari esistenti da una subnet. Per visualizzare gli intervalli associati a una subnet, consulta Descrivere una subnet.
Console
- Vai alla pagina Reti VPC nella console Google Cloud.
Vai alla pagina Reti VPC - Fai clic sul nome di una sottorete da modificare per visualizzarne la pagina dei dettagli.
- Fai clic su Modifica.
- Nella sezione Intervalli IP secondari, fai clic sulla X accanto all'intervallo secondario da rimuovere.
- Fai clic su Salva.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
dove
SUBNET_NAME
è il nome della subnet da cui vuoi rimuovere gli intervalli secondari.REGION
la regione in cui stai creando la subnet.RANGE_NAME_1
eRANGE_NAME_2
sono i nomi degli intervalli secondari che verranno rimossi dalla sottorete di destinazioneSUBNET_NAME
, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta la documentazione della CLI gcloud.
API
Escludi gli intervalli secondari per rimuoverli. L'esempio seguente rimuove tutti gli intervalli secondari da una subnet esistente:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "fingerprint": "SUBNET_FINGERPRINT", "secondaryIpRanges": [ ] }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto contenente la subnet da modificare.REGION
è la regione in cui si trova la subnet.SUBNET_FINGERPRINT
è l'ID impronta della sottorete esistente, fornito quando descrivi una sottorete.SUBNET_NAME
è il nome della subnet da modificare.
Per ulteriori informazioni, consulta il
metodo subnetworks.patch
.
Lavorare con le istanze VM
Questi comandi mostrano come creare un'istanza con un intervallo IP alias, aggiungere uno o più intervalli IP alias a un'istanza VM esistente o rimuovere uno o più intervalli da un'istanza VM esistente.
Crea una VM con un intervallo IP alias nell'intervallo CIDR principale
Utilizza questa procedura se vuoi assegnare un intervallo IP di alias dall'intervallo primario della subnet. L'intervallo scelto non deve essere già in uso, anche parzialmente, da un'altra risorsa sulla rete VPC.
Utilizza questa procedura se vuoi che l'interfaccia principale e gli indirizzi IP alias dell'istanza si trovino nello stesso intervallo.
Console
- Vai alla pagina Istanze VM nella console Google Cloud.
Vai alla pagina Istanze VM - Fai clic su Crea istanza.
- Inserisci un nome per la nuova istanza.
- Specifica una zona.
- Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy.
- Fai clic sulla scheda Networking.
- Fai clic sul pulsante di modifica (icona a forma di matita) accanto all'interfaccia principale nella sezione Interfacce di rete.
- Fai clic su Mostra intervalli IP alias.
- Lascia Intervallo subnet impostato su Principale.
- Inserisci un intervallo IP alias in notazione CIDR. Questo intervallo deve essere un sottointervallo inutilizzato dell'intervallo principale.
- Fai clic su Crea.
gcloud
gcloud compute instances create vm1 \ --zone ZONE \ --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."
dove
ZONE
la zona che conterrà l'istanza.SUBNET_NAME
è il nome della subnet che conterrà l'istanza.RANGE_CIDR_1
eRANGE_CIDR_2
sono gli intervalli IP della subnet principale da assegnare all'interfaccia. Gli intervalli possono essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se l'intervallo IP è specificato solo dalla maschera di rete, l'allocatore IP sceglie un intervallo disponibile con la maschera di rete specificata e lo alloca all'interfaccia di rete. Per specificare più intervalli, separali con punti e virgola (;
).
Per la sintassi completa, consulta la documentazione della CLI gcloud.
API
Crea un'istanza con un indirizzo IP alias dall'intervallo di indirizzi IP principali della subnet dell'istanza.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "CIDR_RANGE" } ] }, ... ], ... }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto in cui crei l'istanza.CIDR_RANGE
è l'intervallo IP della subnet principale da assegnare all'interfaccia. L'intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se specifichi l'intervallo IP solo in base alla maschera di rete, l'allocatore di indirizzi IP sceglie un intervallo disponibile con la maschera di rete specificata e lo assegna all'interfaccia di rete.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta il
metodo instance.insert
.
Creare una VM con un intervallo IP di alias in un intervallo CIDR secondario
Utilizza questa procedura se vuoi assegnare un intervallo IP di alias preso da un intervallo secondario della subnet. Se mantieni separati gli intervalli IP alias dall'intervallo principale della subnet, è più facile creare regole firewall che consentano l'accesso ai servizi in esecuzione su una VM, ma non all'indirizzo IP principale della VM.
Console
- Vai alla pagina Istanze VM nella console Google Cloud.
Vai alla pagina Istanze VM - Fai clic su Crea istanza.
- Inserisci un nome per la nuova istanza.
- Specifica una zona.
- Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy.
- Fai clic sulla scheda Networking.
- Fai clic sul pulsante di modifica (icona a forma di matita) accanto all'interfaccia principale nella sezione Interfacce di rete.
- Fai clic su Mostra intervalli IP alias.
- Seleziona la subnet con l'intervallo secondario.
- In Intervallo subnet, seleziona l'intervallo IP secondario che vuoi utilizzare.
- Inserisci un intervallo IP alias in notazione CIDR. Questo intervallo deve essere un intervallo inutilizzato dell'intervallo IP secondario.
- Fai clic su Crea.
gcloud
gcloud compute instances create vm3 \ --zone ZONE \ --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
dove
ZONE
è la zona che conterrà l'istanza.SUBNET_NAME
è il nome della subnet che conterrà l'istanza.RANGE_NAME
il nome dell'intervallo secondario della subnet da cui ricavare l'intervallo IP dell'alias.RANGE_CIDR
è l'intervallo IP da assegnare all'interfaccia. L'intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se l'intervallo IP è specificato solo dalla maschera di rete, l'allocatore IP sceglie un intervallo disponibile con la maschera di rete specificata e lo alloca all'interfaccia di rete.
Per la sintassi completa , consulta la documentazione di gcloud.
API
Crea un'istanza con un indirizzo IP alias dall'intervallo di indirizzi IP secondario della subnet dell'istanza.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_CIDR_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" } ] }, ... ], ... }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto in cui crei l'istanza.SECONDARY_CIDR_RANGE
è l'intervallo IP da assegnare all'interfaccia. L'intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se specifichi l'intervallo IP solo in base alla maschera di rete, l'allocatore di indirizzi IP sceglie un intervallo disponibile con la maschera di rete specificata e lo assegna all'interfaccia di rete.SECONDARY_RANGE_NAME
il nome dell'intervallo secondario della subnet da cui ricavare l'intervallo IP alias.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta il
metodo instance.insert
.
Crea una VM con più interfacce e indirizzi IP alias
Questo esempio crea due reti, ciascuna con una subnet, e una VM con interfacce in entrambe le reti. Se hai già due reti VPC, puoi andare al passaggio "Crea istanza VM".
Console
Crea la prima rete e la prima subnet:
- Vai alla pagina Reti VPC nella console Google Cloud.
Vai alla pagina Reti VPC - Fai clic su Crea rete VPC.
- Inserisci un nome per
my-network1
. - Con la Modalità di creazione subnet impostata su
Custom
, specifica un Nome della subnet dimy-subnet1
. - Specifica una regione.
- Imposta Intervallo di indirizzi IP su
172.16.1.0/24
. - Fai clic su Crea intervallo IP secondario.
- Imposta Nome intervallo di subnet su
range1
- Imposta l'intervallo IP secondario su
10.1.0.0/16
. - Fai clic su Fine.
- Fai clic su Crea.
Crea la seconda rete e la seconda subnet:
- Vai alla pagina Reti VPC nella console Google Cloud.
Vai alla pagina Reti VPC - Fai clic su Crea rete VPC.
- Inserisci un nome per
my-network2
. - Con la Modalità di creazione subnet impostata su
Custom
, specifica un Nome della subnet dimy-subnet2
. - Specifica la stessa regione utilizzata per la prima rete e la prima subnet.
- Imposta Intervallo di indirizzi IP su
172.16.2.0/24
. - Fai clic su Crea intervallo IP secondario.
- Imposta Nome intervallo di subnet su
range2
. - Imposta l'intervallo IP secondario su
10.2.0.0/16
. - Fai clic su Fine.
- Fai clic su Crea.
Crea una VM con interfacce in entrambe le reti:
- Vai alla pagina Istanze VM nella console Google Cloud.
Vai alla pagina Istanze VM - Fai clic su Crea istanza.
- Imposta la zona sulla regione in cui hai creato le subnet.
- Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy.
- Fai clic su Networking.
- Fai clic sulla prima interfaccia di rete.
- Imposta Rete su
my-network1
. - Imposta Subnet su
my-subnet1
. - Fai clic su Mostra intervalli IP alias.
- Fai clic su Aggiungi intervallo IP alias.
- Imposta Intervallo di subnet su
Primary
. - Imposta Intervallo IP alias su
/32
. - Fai clic su Aggiungi intervallo IP.
- Imposta Intervallo di subnet su
range1
. - Imposta Intervallo IP alias su
/24
. - Fai clic su Fine.
- Fai clic su Aggiungi interfaccia di rete.
- Seleziona
my-network2
. - Imposta Subnet su
my-subnet2
. - Fai clic su Mostra intervalli IP alias.
- Fai clic su Aggiungi intervallo IP alias.
- Imposta Intervallo di subnet su
Primary
. - Imposta Intervallo IP alias su
/32
. - Fai clic su Aggiungi intervallo IP.
- Imposta Intervallo di subnet su
range2
. - Inserisci un intervallo IP alias di
/24
. - Fai clic su Fine.
- Fai clic su Crea.
gcloud
Crea la prima rete:
gcloud compute networks create my-network1 --subnet-mode CUSTOM
Aggiungi una subnet:
gcloud compute networks subnets create my-subnet1 \ --network my-network1 \ --range 172.16.1.0/24 \ --secondary-range range1=10.1.0.0/16
Crea una seconda rete:
gcloud compute networks create my-network2 --subnet-mode CUSTOM
Aggiungi una subnet:
gcloud compute networks subnets create my-subnet2 \ --network my-network2 \ --range 172.16.2.0/24 \ --secondary-range range2=10.2.0.0/16
Crea una VM con interfacce in entrambe le reti. La prima interfaccia di rete elencata, quella in
my-subnet1
, è l'interfaccia principale:gcloud compute instances create multi-nic-alias-vm \ --machine-type f1-micro \ --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \ --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
Utilizza il comando display per visualizzare le interfacce e i relativi indirizzi:
gcloud compute instances describe multi-nic-alias-vm
... networkInterfaces: - ... aliasIpRanges: - ipCidrRange: 172.16.1.2/32 - ipCidrRange: 10.1.0.0/24 subnetworkRangeName: range1 name: nic0 network: .../networks/my-network1 networkIP: 172.16.1.3 subnetwork: .../subnetworks/my-subnet1 ... - ... aliasIpRanges: - ipCidrRange: 172.16.2.2/32 - ipCidrRange: 10.2.0.0/24 subnetworkRangeName: range2 name: nic1 network: .../networks/my-network2 networkIP: 172.16.2.3 subnetwork: .../subnetworks/my-subnet2
API
Crea due reti VPC in modalità personalizzata denominate
my-network1
emy-network2
. Per ulteriori informazioni, consulta Creare una rete con modalità personalizzata.Aggiungi subnet alle reti VPC. Per ulteriori informazioni, consulta la sezione Aggiunta di subnet.
Aggiungi una subnet denominata
my-subnet1
amy-network1
. Specifica172.16.1.0/24
per l'intervallo principale e10.1.0.0/16
per l'intervallo secondario con il nomerange1
.Aggiungi una subnet denominata
my-subnet2
amy-network2
. Specifica172.16.2.0/24
per l'intervallo principale e10.2.0.0/16
per l'intervallo secondario con il nomerange2
.
Crea un'istanza VM con interfacce in entrambe le reti.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range1", "ipCidrRange": "/24" } ] }, { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range2", "ipCidrRange": "/24" } ] } ], ... }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto in cui crei l'istanza.REGION
è la regione Google Cloud in cui si trova la subnet. Le sottoreti devono trovarsi nella stessa regione dell'istanza.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta il metodo
instance.insert
.
Aggiungere intervalli IP alias a un'istanza esistente
Puoi aggiungere un intervallo IP di alias a un'istanza in esecuzione.
I nuovi indirizzi potrebbero non essere disponibili immediatamente, anche al termine della chiamata all'API. Saranno disponibili solo dopo che il sistema operativo guest avrà aggiunto gli indirizzi e i percorsi.
Console
- Vai alla pagina Istanze VM nella console Google Cloud.
Vai alla pagina Istanze VM - Fai clic sul nome di un'istanza esistente.
- Fai clic su Modifica.
- Fai clic sull'interfaccia di rete nic0 (o sull'interfaccia di rete a cui aggiungere un intervallo IP alias).
- Fai clic su Mostra intervalli IP alias.
- Fai clic su Aggiungi intervallo IP.
- Seleziona un intervallo di subnet.
- Inserisci un intervallo IP alias.
- Fai clic su Fine.
- Fai clic su Salva.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] --aliases "RANGE_NAME_1:RANGE_CIDR_1;RANGE_NAME_2:RANGE_CIDR_2;..."
Sostituisci quanto segue:
ZONE
è la zona che contiene l'istanza.NETWORK_INTERFACE
è il nome dell'interfaccia di rete a cui aggiungi un intervallo di indirizzi IP alias.RANGE_NAME_1
eRANGE_NAME_2
sono i nomi degli intervalli secondari della subnet da cui ricavare l'intervallo IP alias. Se assegni intervalli dall'intervallo primario della sottorete, ometti questo valore.RANGE_CIDR_1
eRANGE_CIDR_2
sono gli intervalli IP da assegnare all'interfaccia. Gli intervalli possono essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una netmask in formato CIDR (/24
). Se l'intervallo IP è specificato solo dalla netmask, l'allocatore IP sceglie un intervallo disponibile con la netmask specificata e lo alloca all'interfaccia di rete.
Per la sintassi completa, consulta la documentazione di gcloud.
API
Aggiungi intervalli IP alias a un'istanza esistente.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_IP_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" }, existing ranges... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto contenente l'istanza da modificare.INSTANCE_NAME
è il nome dell'istanza da modificare.NETWORK_INTERFACE_NAME
è il nome dell'interfaccia di rete dell'istanza da modificare.INTERFACE_FINGERPRINT
è l'ID fingerprint per l'interfaccia di rete esistente, che viene fornito quando descrivi un'istanza.SECONDARY_CIDR_RANGE
è l'intervallo IP da assegnare all'interfaccia. L'intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se specifichi l'intervallo IP solo in base alla maschera di rete, l'allocatore di indirizzi IP sceglie un intervallo disponibile con la maschera di rete specificata e lo assegna all'interfaccia di rete.SECONDARY_RANGE_NAME
è il nome dell'intervallo secondario della subnet da cui ricavare l'intervallo IP alias. Se assegni intervalli dall'intervallo principale della subnet, ometti questo campo.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta il
metodo instance.updateNetworkInterface
.
Modificare gli intervalli IP alias per un'istanza esistente
Puoi aggiungere altri intervalli IP di alias a un'istanza esistente o rimuovere uno o più intervalli.
Le modifiche all'indirizzo potrebbero non essere visibili immediatamente. La chiamata API deve essere completata e il sistema operativo guest deve modificare gli indirizzi e le route.
Console
- Vai alla pagina Istanze VM nella console Google Cloud.
Vai alla pagina Istanze VM - Fai clic sul nome di un'istanza esistente.
- Fai clic su Modifica.
- Fai clic sull'interfaccia di rete nic0 (o sull'interfaccia di rete che modificherai).
- Fai clic su Mostra intervalli IP alias.
- Per aggiungere un intervallo IP alias, fai clic su Aggiungi intervallo IP alias.
- Per rimuovere un intervallo IP dell'alias, fai clic sulla X accanto all'intervallo IP dell'alias.
- Fai clic su Fine.
- Fai clic su Salva.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] \ --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."
Sostituisci quanto segue:
ZONE
: la zona che contiene l'istanzaNETWORK_INTERFACE
: il nome dell'interfaccia di rete che stai modificandoRANGES_TO_RETAIN
: gli intervalli esistenti, in formatoCURRENT_RANGE_NAME
:CURRENT_RANGE_CIDR
, che vuoi conservare. Se aggiungi intervalli a un'istanza che non ne ha, questi valori sono vuoti. Se stai rimuovendo tutti gli intervalli dall'istanza, l'intero campo--aliases
è vuoto.NEW_RANGE_NAME
: il nome dell'intervallo secondario della subnet da cui estrarre i nuovi intervalli IP degli alias. Se assegni intervalli dall'intervallo principale della subnet, ometti questo valore.NEW_RANGE_CIDR
: l'intervallo di indirizzi IP da assegnare all'interfaccia. Questo intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se l'intervallo di indirizzi IP è specificato solo dalla maschera di rete, l'allocatore IP sceglie un intervallo disponibile con la maschera di rete specificata e lo alloca all'interfaccia di rete.
Per aggiungere intervalli, esegui il comando e specifica tutti gli intervalli IP di alias esistenti e nuovi. Le coppie sono separate da punti e virgola. Esempio: --aliases
"CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"
Per rimuovere gli intervalli, esegui il comando e specifica solo gli intervalli IP alias che vuoi mantenere. Se mantieni intervalli da un intervallo secondario, devi
specificare il nome dell'intervallo secondario. Un intervallo CIDR può essere un intervallo specifico (192.168.100.0/24
) o un singolo indirizzo IP (192.168.100.1
).
Esempio: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR"
Per rimuovere tutti gli intervalli, esegui il comando e specifica il flag --aliases
, ma usa le virgolette per fornire un input vuoto. Esempio: --aliases ""
Non puoi aggiungere e rimuovere intervalli nello stesso comando gcloud
. Per rimuovere alcuni intervalli e aggiungerne altri con lGoogle Cloud CLI, esegui prima il comando per rimuovere gli intervalli non necessari, quindi eseguilo di nuovo per aggiungere gli intervalli necessari.
Per la sintassi completa, consulta la documentazione di gcloud
.
API
Per un'interfaccia di rete di un'istanza esistente, aggiungi o rimuovi intervalli di indirizzi IP di alias.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ include new and existing ranges to add them... exclude existing ranges to remove them... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Sostituisci i segnaposto con valori validi:
PROJECT_ID
è l'ID del progetto contenente l'istanza da modificare.INSTANCE_NAME
è il nome dell'istanza da modificare.NETWORK_INTERFACE_NAME
è il nome dell'interfaccia di rete dell'istanza da modificare.INTERFACE_FINGERPRINT
è l'ID fingerprint per l'interfaccia di rete esistente, che viene fornito quando descrivi un'istanza.
Per ulteriori informazioni, consulta il
metodo instance.updateNetworkInterface
.
Risoluzione dei problemi
Impossibile creare un'istanza VM con indirizzo IP alias
Verifica che la rete sia una rete VPC. Gli alias IP non sono supportati nelle reti legacy.
gcloud compute networks list --filter="name=NETWORK_NAME"
La rete
MODE
deve essere "automatica" o "personalizzata".Se è specificato un nome di intervallo di subnet, verifica quanto segue:
gcloud compute networks subnets describe SUBNET_NAME --region=REGION
- la subnet abbia un intervallo secondario con il nome corrispondente
- l'intervallo IP alias richiesto si trovi all'interno di questo intervallo secondario o, se viene utilizzata la netmask, sia più piccolo dell'intervallo principale.
Se il nome dell'intervallo della subnet non è specificato, verifica che l'intervallo IP dell'alias richiesto rientri nell'intervallo della subnet principale o, se utilizzi la netmask, sia più piccolo dell'intervallo principale.
Impossibile connettersi all'IP alias
Verifica le regole del firewall.
Elenca tutte le regole del firewall:
gcloud compute firewall-rules list --format=json
Verifica che il traffico verso e da IP alias sia consentito.
Se necessario, aggiungi regole firewall per consentire il ping dell'IP dell'alias:
gcloud compute firewall-rules create FIREWALL_NAME1 \ --network NETWORK_NAME --priority 0 --source-ranges ALIAS_IP \ --allow icmp
gcloud compute firewall-rules create FIREWALL_NAME2 \ --network NETWORK_NAME --priority 0 --direction out \ --destination-ranges ALIAS_IP --allow icmp
Assicurati che la VM riconosca gli intervalli di alias IP come locali. Su distribuzioni Linux come Debian, in genere è possibile procedere nel seguente modo.
Connettiti all'istanza ed esegui questo comando:
ip route show table local
L'output dovrebbe contenere quanto segue.
local ALIAS_IP_RANGE dev eth0 proto 66 scope host
Assicurati che
ip_aliases = true
sia in/etc/default/instance_configs.cfg
. Se devi modificare questa impostazione, devi anche riavviare l'agente ospite:systemctl restart google-guest-agent
Se la route locale non è presente, configurala utilizzando questo comando:
ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
Il servizio con avvio automatico non si associa all'indirizzo IP dell'alias
Nelle distribuzioni Linux supportate, gli indirizzi IP alias vengono impostati automaticamente come indirizzi locali dall'agente ospite preinstallato. Ciò semplifica la configurazione perché non è necessaria alcuna configurazione a livello di sistema operativo.
Tuttavia, ciò significa anche che il sistema operativo non riconosce gli indirizzi IP alias come indirizzi locali prima dell'esecuzione dell'agente guest. Se sulla VM sono presenti servizi con avvio automatico e vengono avviati prima dell'agente guest, non possono essere associati agli indirizzi IP dell'alias.
Ad esempio, un server HTTP Apache potrebbe uscire con il seguente errore:
could not bind to address ALIAS_IP:80
Per risolvere il problema, configura il servizio in modo che venga avviato dopo l'agente ospite. Nelle distribuzioni che utilizzano systemctl
, segui questi passaggi.
Come utente con privilegi, esegui il seguente comando per aggiungere uno snippet drop-in per il servizio che non funziona correttamente. Ad esempio, un server HTTP Apache su Debian sarebbe
apache2
:systemctl edit YOUR_SERVICE
Nell'editor di testo, aggiungi le seguenti righe. Assicurati di aggiungere le righe sopra la riga
Lines below this comment will be discarded
.[Unit] After=google-guest-agent.service
Il mio intervallo IP secondario non è presente nell'elenco
Gli intervalli IP secondari non sono elencati come subnet regolari. Per dimostrare che l'intervallo IP secondario della subnet è stato creato, utilizza il comando gcloud compute networks subnets describe
.
Crea una subnet.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Elenca le tue subnet.
gcloud compute networks subnets list
NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Visualizza i dettagli di una subnet per vedere gli intervalli secondari.
gcloud compute networks subnets describe my-subnet --region us-central1
... ipCidrRange: 10.9.0.0/16 ... secondaryIpRanges: - ipCidrRange: 172.16.0.0/12 rangeName: secondaryrange1 ...
L'intervallo secondario della subnet specificato non esiste
Quando crei una VM, se viene visualizzato un messaggio di errore che indica che l'intervallo secondario non esiste, verifica quanto segue:
- La subnet ha un intervallo secondario con il nome specificato.
- Che stai creando la VM all'interno della subnet che ha l'intervallo secondario.
Puoi visualizzare questo errore eseguendo i seguenti comandi:
Crea una subnet con un intervallo secondario.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Crea un'istanza in un'altra rete, ad esempio la rete predefinita, anziché nella subnet appena creata.
gcloud compute instances create instance-1 \ --zone us-central1-a \ --network default
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-1 us-central1-a n1-standard-1 10.128.0.2 47.82.96.9 RUNNING
Prova ad assegnare un intervallo IP alias dalla subnet creata nel passaggio 1. Il comando non andrà a buon fine perché l'intervallo secondario si trova in una subnet diversa dall'istanza.
gcloud compute instances network-interfaces update instance-1 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
Crea un'altra istanza, questa volta con la relativa interfaccia nella subnet creata nel passaggio 1.
gcloud compute instances create instance-2 \ --zone us-central1-a \ --network-interface subnet=my-subnet
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-2 us-central1-a n1-standard-1 10.9.0.2 38.74.204.89 RUNNING
Aggiungi un intervallo IP alias all'interfaccia. Questa volta il comando ha esito positivo perché l'interfaccia e l'intervallo secondario si trovano nella stessa subnet.
gcloud compute instances network-interfaces update instance-2 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
Updating network interface [nic0] of instance [instance-2]...done.
Impossibile aggiungere e rimuovere intervalli IP secondari nella stessa richiesta
L'aggiunta e la rimozione di intervalli IP secondari della subnet nello stesso comando non è attualmente supportata. I comandi gcloud per aggiungere e rimuovere intervalli secondari manterranno gli intervalli esistenti non modificati.
Per aggiungere e rimuovere intervalli, esegui i due comandi separatamente.
gcloud compute networks subnets update SUBNET_NAME \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update SUBNET_NAME \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
Per visualizzare ulteriori dettagli su questo comando, usa
gcloud compute networks subnets update --help
.
Impossibile aggiungere e rimuovere contemporaneamente intervalli IP di alias
Al momento non è supportato l'aggiunta e la rimozione di intervalli IP di alias VM nella stessa richiesta.
Il comando gcloud
per aggiornare gli intervalli IP degli alias NON conserva gli intervalli esistenti, pertanto l'omissione di un intervallo viene trattata come una richiesta di eliminazione dell'intervallo.
Ad esempio, se la VM corrente ha l'intervallo di alias 10.9.27.0/24
e il nuovo intervallo richiesto è /24
, l'esecuzione del comando per richiedere /24
verrà rifiutata in quanto viene interpretata come rimozione di 10.9.27.0/24
e aggiunta di /24
.
L'intervallo esistente deve essere rimosso esplicitamente prima di poter aggiungere il nuovo intervallo.
Esempio:
Crea l'intervallo IP alias.
gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
Prova ad aggiungere
/24
senza specificare l'intervallo esistente. Viene visualizzato un errore.gcloud compute instances network-interfaces update vm --aliases "/24" ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
Aggiorna la VM in modo che non abbia un intervallo IP di alias.
gcloud compute instances network-interfaces update vm --aliases "" Updating network interface [nic0] of instance [vm]...done.
Aggiungi il nuovo intervallo IP dell'alias.
gcloud compute instances network-interfaces update vm --aliases "/24" Updating network interface [nic0] of instance [vm]...done.
Per visualizzare ulteriori dettagli su questo comando, usa
gcloud compute instances network-interfaces update --help
.
Tag di origine e account di servizio di origine delle regole firewall
L'account di servizio di origine e i tag di origine del firewall vengono espansi solo agli IP di rete principali delle istanze corrispondenti e non vengono applicati agli IP alias delle istanze corrispondenti. Pertanto, una regola firewall basata sui tag di origine non influisce sul traffico proveniente da un indirizzo IP dell'alias dell'istanza. Gli indirizzi IP alias possono essere aggiunti alle regole firewall come intervalli di origine o di destinazione.
Problemi con le VM con più interfacce e intervalli IP alias
Consulta la sezione Risoluzione dei problemi relativi a più interfacce.
L'attivazione degli alias IP nelle immagini Google Cloud disattiva il bridge cbr0
nei cluster Kubernetes autogestiti
Nelle immagini fornite da Google, l'agente ospite di Google crea route locali per gli intervalli di indirizzi IP degli alias. Per i cluster Kubernetes autogestiti, devi configurare l'agente guest di Google in modo che non crei percorsi locali per gli intervalli IP alias. Questo passaggio non è necessario per i cluster GKE perché GKE disattiva la creazione di route locali per gli intervalli IP alias nelle sue immagini dei nodi.
Sintomi:
I pod Kubernetes perdono l'accesso alla rete se la route locale creata dall'agente ospite rimuove l'intervallo IP dell'alias dall'interfaccia
cbr0
.Un'acquisizione di pacchetti sul dispositivo bridge Linux (
tcpdump -ni cbr arp
) mostra la mancanza di risposte ARP dall'interfacciacbr0
, anche se questa è attiva.L'ispezione della tabella di routing locale (
ip route show table local
) rivela che l'intervallo di indirizzi IP alias è assegnato all'interfaccia di rete principale (ad es.eth0
oens4
) anziché all'interfaccia bridge del contenitore (cbr0
).
Correzione:
Esegui il comando appropriato elencato in Pacchetti installati per l'ambiente guest per determinare se nella VM del nodo è in esecuzione l'agente guest di Google o un pacchetto Compute Engine precedente.
Se nella VM del tuo nodo non è in esecuzione l'agente ospite Google, installalo o utilizza un'immagine più recente fornita da Google.
Configura l'agente guest di Google in modo da saltare la creazione di route locali per gli intervalli IP degli alias e le regole di inoltro.
Modifica
/etc/default/instance_configs.cfg
impostandoip_forwarding=false
nella sezione[NetworkInterfaces]
. Puoi creare la sezione[NetworkInterfaces]
se non è già presente nel fileinstance_configs.cfg
.Esegui una delle seguenti attività:
Riavvia il servizio
google-guest-agent.service
e modifica la tabella di routing locale.Per riavviare il servizio
google-guest-agent.service
, eseguisudo systemctl restart google-guest-agent.service
. Quindi, modifica la tabella delle route locali per rimuovere eventuali voci per gli intervalli di indirizzi IP degli alias. Ad esempio:sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
Sostituisci quanto segue:
ALIAS_IP_RANGE
: l'intervallo di indirizzi IP dell'alias.DEVICE_IDENTIFIER
: l'identificatore dell'interfaccia di rete. Ad esempio,ens4
oeth0
.
Per ulteriori informazioni, consulta la sezione sulla configurazione della documentazione dell'agente ospite Google.
Passaggi successivi
- Scopri di più sulle istanze