Configurazione di intervalli IP alias
Questo documento contiene istruzioni per la configurazione di indirizzi IP alias e alias gli intervalli IP mediante 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 ciascuna subnet.
- Non puoi aggiungere e rimuovere contemporaneamente intervalli secondari. L'aggiunta di la rimozione deve essere eseguita separatamente.
- 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 calcolo del percorso è configurati automaticamente per gli intervalli IP alias sulla rete principale ma non alle interfacce secondarie. Se disponi più interfacce di rete, devi configurare il routing dei 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 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 di origine del 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. Nomi aggiuntivi per Gli IP alias non vengono configurati automaticamente, ma potrebbero 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, potrebbero essere necessari fino a 10 minuti per aggiungere eliminare 7000 intervalli IP alias.
- Le reti VPC in modalità automatica non possono essere eliminate se gli intervalli di subnet secondarie sono presenti.
- 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 dell'hop successivo.
- Gli indirizzi IPv6 non sono supportati.
- Gli intervalli IP alias sono supportati solo nelle reti VPC, non nelle reti legacy. A
determinare il tipo di rete, elencare le reti. Le reti VPC hanno una modalità
custom
oauto
. Le reti legacy hanno una modalitàlegacy
.
Comandi subnet
Gli intervalli IP alias delle 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 di indirizzi IP interni che definisce la subnet. Una subnet può 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 primari che secondari, devono essere univoci in tutte le subnet nel rete VPC e in tutte le reti collegate tramite peering di rete VPC, VPN e Partner Interconnect L3.
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 indipendentemente dal fatto che tu stia creando una subnet per il principale o una delle interfacce secondarie.
L'utilizzo di un intervallo secondario per l'allocazione degli IP alias consente di separare spazio IP per i servizi ospitati nella VM, semplificando la creazione regole firewall che consentono l'accesso solo ai servizi in esecuzione sulla VM e bloccare 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. (ad 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. (Esempio: 10.9.0.0/24)
- Per aggiungere intervalli IP secondari aggiuntivi, fai clic per ogni intervallo Aggiungi intervallo IP, quindi 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 ricavare gli intervalli IP alias l'intervallo IP alias stesso, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta Documentazione di gcloud CLI.
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
Metodo subnetworks.insert
.
Terraform
Puoi utilizzare il comando Terraform risorsa per creare una subnet con uno o più intervalli secondari.
Gli argomenti Terraform contengono valori di esempio che puoi modificare.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi intervalli CIDR secondari a una subnet esistente
Questa procedura presuppone che tu abbia una subnet che vuoi utilizzare, ma 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 nella notazione CIDR. (Esempio:
10.9.0.0/24
) - Per aggiungere intervalli IP secondari aggiuntivi, fai clic per ogni intervallo Aggiungi intervallo IP, quindi 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 che 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 ricavare gli intervalli IP alias e l'intervallo IP alias stesso, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta Documentazione di gcloud CLI.
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
.
Rimuovi 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 subnet da modificare per visualizzarne la pagina dei dettagli.
- Fai clic su Modifica.
- Nella sezione Intervalli IP secondari, fai clic sulla X accanto al intervallo 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 destinazione subnetSUBNET_NAME
, ad esempiorange1=10.9.0.0/24
.
Per la sintassi completa, consulta Documentazione di gcloud CLI.
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.
Usa questa procedura se vuoi che l'interfaccia principale e l'IP alias dell'istanza devono essere 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 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à in esecuzione in un'istanza Compute Engine.RANGE_CIDR_1
eRANGE_CIDR_2
sono gli intervalli IP della subnet principale da assegnare all'interfaccia. La può essere un intervallo specifico (192.168.100.0/24
), un 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 una l'intervallo disponibile con la netmask specificata e lo alloca alla rete a riga di comando. Per specificare più di un intervallo, separa gli intervalli con punto 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 il in esecuzione in un'istanza Compute Engine.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
Metodo instance.insert
.
Creare una VM con un intervallo IP alias in un intervallo CIDR secondario
Utilizza questa procedura se desideri assegnare un intervallo IP alias proveniente da un nell'intervallo secondario della subnet. Mantenere gli intervalli IP alias separati l'intervallo principale della subnet semplifica la creazione di regole firewall che consentono l'accesso ai servizi in esecuzione su una VM, ma non all'indirizzo IP principale.
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 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. La l'intervallo può essere un intervallo specifico (192.168.100.0/24
), un singolo indirizzo IP (192.168.100.1
) o una net mask in formato CIDR (/24
). Se l'intervallo IP è specificato solo da netmask, l'allocatore IP sceglie un intervallo disponibile con la netmask specificata e la alloca all'interfaccia di rete.
Per la sintassi completa , consulta 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 il in esecuzione in un'istanza Compute Engine.SECONDARY_CIDR_RANGE
è l'intervallo IP da assegnare alla a riga di comando. L'intervallo può essere un intervallo specifico (192.168.100.0/24
), un un singolo indirizzo IP (192.168.100.1
) o una maschera di rete in formato CIDR (/24
). Se specifichi l'intervallo IP solo tramite netmask, l'allocatore di indirizzi IP sceglie un intervallo disponibile con la netmask 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 VPC puoi passare direttamente alla sezione "Crea istanza VM" passaggio.
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
my-network1
come nome. - Con la Modalità creazione subnet impostata su
Custom
, specifica un nome per la 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 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
my-network2
come nome. - Con la Modalità creazione subnet impostata su
Custom
, specifica un nome per la subnet. dimy-subnet2
. - Specifica la stessa regione utilizzata per la prima rete e 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 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 saperne di più, consulta l'articolo Creare una modalità personalizzata Google Cloud.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 il in esecuzione in un'istanza Compute Engine.REGION
è la regione Google Cloud in cui si trova la subnet individuarlo. Le sottoreti devono trovarsi nella stessa regione dell'istanza.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta Metodo
instance.insert
.
Aggiungere intervalli IP alias a un'istanza esistente
Puoi aggiungere un intervallo IP 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 il token indirizzi e 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 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. La può 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 da netmask, l'allocatore IP sceglie un intervallo disponibile con la netmask specificata e la alloca all'interfaccia di rete.
Per la sintassi completa, consulta 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 che contiene l'istanza da modificare.INSTANCE_NAME
è il nome dell'istanza da modificare.NETWORK_INTERFACE_NAME
è il nome della rete dell'istanza a riga di comando 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 da all'intervallo principale della subnet, ometti questo campo.ZONE
è la zona Google Cloud in cui verrà creata l'istanza.
Per ulteriori informazioni, consulta
Metodo instance.updateNetworkInterface
.
Modifica degli 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 dell'indirizzo potrebbero non essere visibili immediatamente. La chiamata API deve essere completata mentre il sistema operativo guest deve modificare 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 verranno modificate).
- 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 alias, fai clic sulla X accanto all'IP alias intervallo.
- 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 della rete dell'interfaccia che stai modificandoRANGES_TO_RETAIN
: le fasce esistenti, in formatoCURRENT_RANGE_NAME
:CURRENT_RANGE_CIDR
, che vuoi conservare. Se aggiungi intervalli a un'istanza che non se ne esistono, 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 dall'intervallo principale della subnet, ometti questo valore.NEW_RANGE_CIDR
: l'intervallo di indirizzi IP a cui assegnare l'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 i valori esistenti e tutti
e gli intervalli IP alias di una VM. Le coppie sono separate da un punto e virgola. Esempio: --aliases
"CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"
Per rimuovere intervalli, esegui il comando e specifica solo gli intervalli IP alias
che vuoi conservare. 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
,
utilizza 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 l'interfaccia a riga di comando Google Cloud, 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 che contiene l'istanza da modificare.INSTANCE_NAME
è il nome dell'istanza da modificare.NETWORK_INTERFACE_NAME
è il nome della rete dell'istanza a riga di comando 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 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 "personalizzato".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 alias richiesto sia all'interno dell'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 da e verso l'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. In Linux come Debian, in genere questa operazione può essere eseguita come segue.
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
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 di avvio automatico non si associa all'indirizzo IP 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 hai l'avvio automatico sulla VM e vengono avviati prima dell'agente guest, associarsi agli indirizzi IP 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 che l'utente ha
dell'agente. 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 righe seguenti. 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 è nell'elenco
Gli intervalli IP secondari non sono elencati come subnet normali. Per
per vedere che è stato creato l'intervallo IP secondario della subnet, utilizza
Comando gcloud compute networks subnets describe
.
Creare 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 subnet.
gcloud compute networks subnets list
NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Ottieni 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 questi 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
Creare un'istanza in un'altra rete, ad esempio la rete predefinita, anziché rispetto a quella 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. La non riuscirà perché l'intervallo secondario si trova in una subnet diversa rispetto all'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 con la sua 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 poiché 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 preserveranno gli intervalli esistenti che non vengono 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, utilizza
gcloud compute networks subnets update --help
.
Impossibile aggiungere e rimuovere contemporaneamente intervalli IP 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 attuale ha l'intervallo di alias 10.9.27.0/24
e il nuovo
l'intervallo richiesto è /24
, eseguendo il comando per richiedere l'intervallo /24
verrà
rifiutato perché interpretato come la rimozione di 10.9.27.0/24
e l'aggiunta di /24
.
L'intervallo esistente deve essere rimosso esplicitamente prima di poter aggiungere il nuovo intervallo.
Esempio:
Crea 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. Risulta 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 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 delle regole firewall e account di servizio di origine
I tag di origine e account di servizio di origine del firewall si espandono solo nella rete principale IP delle istanze corrispondenti e non si applica agli IP alias delle istanze corrispondenti. Pertanto, una regola firewall basata su tag di origine non influirà sul traffico proveniente da un l'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 Risoluzione dei problemi con più interfacce.
L'abilitazione dell'alias IP sulle immagini Google Cloud disabilita il bridge cbr0
sui cluster Kubernetes autogestiti
Nelle immagini fornite da Google, il un agente crea route locali per gli intervalli di indirizzi IP alias. Per i cluster Kubernetes autogestiti, devi configurare l'agente guest di Google in modo che non crei route locali per gli intervalli IP alias. Questo passaggio non è obbligatorio per i cluster GKE perché GKE disabilita la creazione di route locali per l'IP alias sulle sue immagini nodo.
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'utente dell'ambiente in modo da determinare se la VM del nodo esegue Google guest oppure una vecchia versione di Compute Engine .
Se nella VM del tuo nodo non è in esecuzione l'agente ospite di 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
, impostazioneip_forwarding=false
in 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 lo stato locale della route.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 alias.DEVICE_IDENTIFIER
: l'identificatore della rete a riga di comando. Ad esempio,ens4
oeth0
.
Per ulteriori informazioni, consulta la sezione Configurazione nel documentazione dell'agente.
Passaggi successivi
- Scopri di più sulle instances