Quando crei istanze Compute Engine, il DNS interno crea automaticamente un nome DNS per l'istanza. Questo nome DNS facilita la comunicazione interna da istanza a istanza risolvendo gli indirizzi IP interni. Le reti Virtual Private Cloud su Google Cloud utilizzano il servizio DNS interno per consentire alle istanze di Compute nella stessa rete di accedere l'una all'altra utilizzando nomi DNS interni.
Google Cloud crea, aggiorna e rimuove automaticamente i seguenti tipi di record DNS man mano che gestisci le istanze:
- I record di indirizzo DNS, o record A, vengono creati per le istanze
in una zona DNS per
.internal
. - I record PTR per le istanze, utilizzati per la ricerca DNS inversa, vengono creati nelle zone inverse corrispondenti.
Ad esempio, quando elimini un'istanza, Google Cloud rimuove automaticamente i record A e PTR associati per il suo nome DNS interno. Se poi crei un'istanza con lo stesso nome, Google Cloud crea nuovi record per la sostituzione.
Limitazioni
Compute Engine crea record A e PTR del nome DNS interno solo per l'indirizzo IPv4 interno principale dell'interfaccia di rete
nic0
di un'istanza. Di conseguenza, il tipo di stack dell'interfaccia di retenic0
deve essere solo IPv4 o dual-stack. Il DNS interno non supporta le interfacce di rete solo IPv6 (anteprima).Compute Engine non crea record DNS interni per quanto segue:
- L'indirizzo IPv4 interno principale di un'interfaccia di rete diversa da
nic0
. - Un indirizzo IPv4 esterno di qualsiasi interfaccia di rete.
- Un indirizzo IPv4 interno di un intervallo IP alias di qualsiasi interfaccia di rete.
- Un intervallo di indirizzi IPv6 interni o esterni di qualsiasi interfaccia di rete.
- L'indirizzo IPv4 interno principale di un'interfaccia di rete diversa da
La risoluzione dei nomi DNS interni richiede che la VM client e la VM associata al record DNS interno siano entrambe:
- Nella stessa rete VPC.
- Nello stesso progetto (ad eccezione di alcuni scenari VPC condiviso).
Per maggiori informazioni sugli scenari VPC condiviso, consulta Nomi DNS interni e VPC condiviso.
Nomi DNS interni di zona e globali
Google Cloud ha due tipi di nomi DNS interni:
- DNS zonale: i nomi delle istanze devono essere univoci all'interno di ogni zona, ma puoi riutilizzare i nomi delle istanze in più zone. Ad esempio, puoi avere diverse istanze denominate
instance-1
, purché si trovino in zone diverse. - DNS globale: i nomi delle istanze devono essere univoci all'interno di ogni progetto. Con il DNS globale, non puoi riutilizzare i nomi delle istanze all'interno del progetto.
Google consiglia vivamente di utilizzare il DNS di zona perché offre maggiore affidabilità isolando gli errori nella registrazione DNS nelle singole zone. In caso di interruzione, il DNS globale presenta i seguenti problemi:
- Il nome dell'istanza deve essere univoco in tutto il progetto. Di conseguenza, non puoi creare nuove istanze in qualsiasi regione che presenta errori del control plane in cui hai o avevi in precedenza risorse di progetto. Google Cloud Non puoi verificare i nomi DNS delle risorse esistenti nella regione non disponibile.
- Alcune funzionalità di Compute Engine non sono disponibili, ad esempio la scalabilità automatica dei gruppi di istanze gestite (MIG). Di conseguenza, le tue applicazioni che utilizzano la scalabilità automatica per gestire correttamente gli aumenti del carico di lavoro non sono in grado di scalare.
Il tipo di DNS interno predefinito viene impostato quando abiliti l'API Compute Engine.
- Il tipo di DNS interno predefinito è il DNS di zona.
- Se la tua organizzazione o il tuo progetto autonomo ha abilitato l'API Compute Engine prima del 6 settembre 2018, il tipo di DNS interno predefinito è impostato su DNS globale.
I nomi di dominio completi per i nomi DNS interni sono descritti nella tabella seguente.
Tipo di DNS interno | Nome di dominio completo (FQDN) |
---|---|
DNS di zona | INSTANCE_NAME.ZONE.c.PROJECT_ID.internal |
DNS globale (a livello di progetto) | INSTANCE_NAME.c.PROJECT_ID.internal |
Sostituisci quanto segue:
INSTANCE_NAME
: il nome dell'istanza Per il DNS zonale, questo valore deve essere univoco all'interno della zona, ma può essere ripetuto in più zone. Per il DNS globale, il nome dell'istanza deve essere univoco nel progetto.ZONE
: la zona in cui si trova l'istanza.PROJECT_ID
: il progetto a cui appartiene l'istanza.
Per informazioni su come controllare il tipo di nome DNS interno utilizzato a livello di progetto o istanza, consulta Configurare i nomi DNS per il progetto o le istanze.
Risoluzione del nome DNS
Le istanze ricevono le informazioni di risoluzione DNS interna nell'ambito dei lease DHCP. Il metodo di risoluzione DNS dipende dalla piattaforma del sistema operativo:
- Linux: per impostazione predefinita, il server DNS dell'istanza (
169.254.169.254:53
) risolve i nomi DNS interni. - Windows: per impostazione predefinita, il gateway predefinito della subnet risolve i nomi DNS interni.
Zone inverse per i record PTR
Il servizio DNS interno diGoogle Cloudcrea automaticamente record PTR per le istanze nelle seguenti zone reverse:
10.in-addr.arpa.
168.192.in-addr.arpa.
16.172.in-addr.arpa.
,17.172.in-addr.arpa.
, ... tramite31.172.in-addr.arpa.
Nomi DNS interni e VPC condiviso
La VM client e la VM associata al record DNS interno possono trovarsi in progetti separati, ma devono utilizzare la stessa rete VPC condiviso. Ad esempio, il client può trovarsi in un progetto di servizio e la VM associata al record DNS interno può trovarsi in un progetto di servizio diverso o nel progetto host.
I client devono eseguire query del nome di dominio completo (FQDN) per i record DNS interni anziché basarsi su query parziali e domini di ricerca DNS. I domini di ricerca DNS sono diversi in ogni progetto per motivi quali:
La parte del nome di dominio di ogni record A DNS interno contiene l'ID progetto del progetto che contiene la VM. Per una VM in un progetto di servizio la cui interfaccia di rete
nic0
utilizza una rete VPC condiviso, il progetto della VM è diverso da quello contenente la rete.L'utilizzo di nomi DNS interni a livello di zona o globali (a livello di progetto) dipende dalla configurazione del progetto che contiene la VM.
Per ulteriori informazioni sul VPC condiviso, consulta:
Personalizzazione dei nomi DNS interni
Alcune organizzazioni o applicazioni potrebbero richiedere nomi DNS interni personalizzati anziché i nomi DNS interni predefiniti creati da Google Cloud.
Zone private e record personalizzati con Cloud DNS
Puoi utilizzare una zona privata Cloud DNS per creare voci DNS personalizzate per le tue istanze. Puoi configurare i record PTR che ti consentono di sostituire l'URL DNS interno predefinito per la tua istanza con l'URL personalizzato che fornisci.
Per creare record PTR personalizzati che sostituiscono i nomi PTR DNS interni creati automaticamente, consulta Record PTR per indirizzi RFC 1918 in zone private. Per informazioni sulla creazione di record PTR per le istanze, vedi Crea un record PTR per un'istanza.
Nomi host personalizzati
Puoi specificare un nome host personalizzato per un'istanza al momento della creazione. I nomi host personalizzati assegnati in questo modo non vengono risolti dal DNS interno. Con i nomi host personalizzati, devi comunque creare un record DNS corrispondente nella zona appropriata (ad esempio utilizzando Cloud DNS). Per saperne di più, consulta Creare un'istanza con un nome host personalizzato.
DNS e DHCP interni
Le istanze Compute Engine sono configurate per rinnovare i lease DHCP ogni 24 ore. Per le istanze abilitate per DNS di zona, il lease DHCP scade ogni ora. Le istanze che utilizzano il DNS di zona hanno voci sia di zona che globali nel file di configurazione DHCP.
Per impostazione predefinita, la maggior parte delle distribuzioni Linux memorizza le informazioni DHCP in
resolv.conf
.
La modifica manuale di resolv.conf
comporta il ripristino del DHCP predefinito
ogni volta che il lease DHCP scade nell'istanza. Per apportare
modifiche statiche nel file resolv.conf
, diverse distribuzioni Linux
consentono di anteporre o aggiungere elementi
al criterio DHCP.
La modalità di modifica del criterio DHCP o del file di configurazione dipende dalla distribuzione di Linux che utilizzi. Ad esempio, Red Hat Enterprise Linux e Debian
utilizzano il file di configurazione /etc/dhcp/dhcpd.conf
. Su CentOS, utilizza l'utilità da riga di comando Network Manager, nmcli
.
Per informazioni su come configurare le impostazioni di rete DHCP e DNS personalizzate, consulta la documentazione del sistema operativo. Ad esempio, per Red Hat Enterprise Linux for SAP with HA and Update Services 8.6, utilizza il seguente link: Configurazione manuale del file /etc/resolv.conf
File resolv.conf
di esempio
Per impostazione predefinita, la maggior parte delle distribuzioni Linux memorizza le informazioni DHCP in
resolv.conf
.
Il servizio systemd-resolved
fornisce anche servizi di resolver per il DNS.
Puoi configurare questo servizio modificando il file /etc/systemd/resolved.conf
e altri file *.conf
nella directory /etc/systemd/resolved.conf.d/
. Nelle distribuzioni Linux che archiviano le informazioni DHCP in resolved.conf
, puoi visualizzare le voci DNS globali e di zona nel file /etc/systemd/resolved.conf
.
Questi file presentano le seguenti limitazioni:
- Il percorso di ricerca può gestire solo 6 record e 3 di questi sono forniti da Compute Engine. Se aggiungi voci al percorso di ricerca in modo che il numero totale di voci sia maggiore di 6, le regole di ricerca dopo la sesta voce non vengono applicate dal sistema operativo. Ciò può causare l'interruzione del funzionamento delle funzionalità di Compute Engine, ad esempio l'accesso alle istanze utilizzando i relativi nomi.
La modifica manuale di
resolv.conf
comporta il ripristino del DHCP predefinito ogni volta che il lease DHCP di 24 ore scade nell'istanza. Nelle istanze che utilizzano DNS di zona, il lease DHCP scade ogni ora. Per apportare modifiche statiche nel fileresolv.conf
, diverse distribuzioni Linux consentono di anteporre o aggiungere elementi al criterio DHCP.
Configurazione DNS di zona
File resolv.conf
zonale di esempio:
# Local domain name. Computed from your project name. domain ZONE.c.PROJECT_ID.internal # Search list for hostname lookup. Starting with entries that represent # your project and ending with google.internal to facilitate metadata server requests. search ZONE.c.PROJECT_ID.internal. c.PROJECT_ID.internal. google.internal. # Address of the DNS server to resolve project specific, and global domain names. nameserver 169.254.169.254
Sostituisci quanto segue:
ZONE
: la zona in cui si trova l'istanzaPROJECT_ID
: il progetto a cui appartiene l'istanza
File dhcp.lease
zonale di esempio:
lease { # What interface we are using for the network interface "eth0"; fixed-address 10.128.0.9; option subnet-mask 255.255.255.255; option routers 10.128.0.1; # Lease timeout, older instances will have this value set to infinite. option dhcp-lease-time 3600; option dhcp-message-type 5; option domain-name-servers 169.254.169.254; option dhcp-server-identifier 169.254.169.254; option interface-mtu 1460; # Search path options that are copied into the resolv.conf option domain-search "ZONE.c.PROJECT_ID.internal.", "c.PROJECT_ID.internal.", "google.internal."; option ntp-servers 169.254.169.254; option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1; option host-name "INSTANCE_NAME.ZONE.c.PROJECT_ID.internal"; option domain-name "ZONE.c.PROJECT_ID.internal"; renew 4 2017/11/16 02:15:52; rebind 4 2017/11/16 02:43:59; expire 4 2017/11/16 02:51:29; }
Sostituisci quanto segue:
INSTANCE_NAME
: il nome dell'istanzaZONE
: la zona in cui si trova l'istanzaPROJECT_ID
: il progetto a cui appartiene l'istanza
Configurazione DNS globale
File resolv.conf
globale di esempio:
# Local domain name. Computed from your project name. domain c.PROJECT_ID.internal # Search list for hostname lookup. Starting with entries that represent # your project and ending with google.internal to facilitate metadata server requests. search c.PROJECT_ID.internal google.internal. # Address of the DNS server to resolve project specific, and global domain names. nameserver 169.254.169.254
Sostituisci PROJECT_ID
con il progetto a cui appartiene l'istanza.
File dhcp.lease
globale di esempio:
lease { # What interface we are using for the network interface "eth0"; fixed-address 10.128.0.8; option subnet-mask 255.255.255.255; option routers 10.128.0.1; # Lease timeout, older instances will have this value set to infinite. option dhcp-lease-time 86400; option dhcp-message-type 5; option domain-name-servers 169.254.169.254; option dhcp-server-identifier 169.254.169.254; option interface-mtu 1460; # Search path options that are copied into the resolv.conf option domain-search "c.PROJECT_ID.internal.", "google.internal."; option ntp-servers 169.254.169.254; option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1; option host-name "INSTANCE_NAME.c.PROJECT_ID.internal"; option domain-name "c.PROJECT_ID.internal"; renew 4 2017/11/16 12:07:00; rebind 4 2017/11/16 22:44:53; expire 5 2017/11/17 01:44:53; }
Sostituisci quanto segue:
INSTANCE_NAME
: il nome dell'istanzaPROJECT_ID
: il progetto a cui appartiene l'istanza
File dhclient.conf
di esempio
Alcuni sistemi operativi, come Debian 9, utilizzano il file dhclient.conf
anziché il file resolv.conf
.
File /etc/dhcp/dhclient.conf
di esempio:
# Configuration file for /sbin/dhclient.
#
...
append domain-search "mydomain.com";
prepend domain-name-servers 172.16.1.1;
In questo esempio, mydomain.com
è il nuovo dominio di ricerca e 172.16.1.1
è
l'IP del tuo server DNS.
Passaggi successivi
- Per informazioni sulle reti VPC, consulta la panoramica di VPC. Google Cloud
- Per informazioni sulla creazione e la modifica delle reti VPC, consulta Utilizzo di VPC.
- Esegui la migrazione della tua organizzazione e dei tuoi progetti per utilizzare il DNS di zona anziché il DNS globale.