Quando crei istanze Compute Engine, il DNS interno crea automaticamente un nome DNS per l'istanza. Questo nome DNS facilita la comunicazione interna tra istanze risolvendo gli indirizzi IP interni. Le reti Virtual Private Cloud su Google Cloud utilizzano il servizio DNS interno per consentire alle istanze di calcolo 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 durante la gestione delle istanze:
- I record di indirizzi 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 corrispondente zone inverse.
Ad esempio, quando elimini un'istanza, Google Cloud viene rimosso automaticamente i record A e PTR associati per il nome DNS interno. Se poi crei un'istanza con lo stesso nome, Google Cloud vengono creati nuovi record per la sostituzione.
Limitazioni
I nomi DNS interni hanno le seguenti specifiche:
Il nome DNS interno di un'istanza viene risolto solo nel suo indirizzo IP interno principale. I nomi DNS interni non possono essere utilizzati per connettersi agli indirizzi IP esterni di un'istanza.
Il DNS interno non supporta le istanze solo IPv6 (anteprima).
I nomi DNS interni non possono essere configurati per risolvere in indirizzi IP alias secondari.
I nomi DNS interni possono essere risolti solo dalle istanze che si trovano nella stessa rete. Queste istanze possono trovarsi nello stesso progetto della rete o in progetti di servizio che utilizzano la stessa rete VPC condivisa. Per risolvere i nomi DNS delle istanze nei progetti di servizio, devi utilizzare i FQDN delle istanze. Non puoi utilizzare il DNS interno per contattare istanze in una rete diversa.
Nomi DNS interni zonali 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 riutilizzarli nelle altre zone. Ad esempio, puoi avere più 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 una 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 nell'intero progetto. Di conseguenza, non puoi creare nuove istanze in nessuna regione in cui si verificano errori nel piano di controllo in cui hai o avevi precedentemente risorse di progetto. Google Cloud non può 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 applicazioni che utilizzano la scalabilità automatica per gestire in modo corretto gli aumenti del carico di lavoro non sono in grado di eseguire lo scale up.
Il tipo di DNS interno predefinito viene impostato quando attivi l'API Compute Engine.
- Il tipo di DNS interno predefinito è il DNS di zona.
- Se la tua organizzazione o il tuo progetto autonomo ha attivato 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 zonale | 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 tra le 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 dei nomi DNS
Le istanze ricevono informazioni sulla risoluzione DNS interna nell'ambito dei loro 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 inversi per i record PTR
Il servizio DNS interno diGoogle Cloudcrea automaticamente record PTR per le istanze nelle seguenti zone di reverse:
10.in-addr.arpa.
168.192.in-addr.arpa.
16.172.in-addr.arpa.
,17.172.in-addr.arpa.
, ... fino a31.172.in-addr.arpa.
Nomi DNS interni e VPC condivisa
Puoi utilizzare un nome DNS interno per fare riferimento all'indirizzo IP interno di un'istanza anche se questo indirizzo IP si trova in una rete VPC condivisa in un progetto host. Con VPC condiviso, la parte dell'ID progetto del nome DNS interno a livello di zona o globale (a livello di progetto) è l'ID del progetto di servizio.
Personalizzazione dei nomi DNS interni
Alcune organizzazioni o applicazioni potrebbero richiedere nomi DNS interni personalizzati invece dei 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 record PTR che ti consentono di ignorare l'URL DNS interno predefinito per l'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 gli indirizzi RFC 1918 nelle zone private. Per informazioni sulla creazione di record PTR per le istanze, consulta Creare un record PTR per un'istanza.
Nomi host personalizzati
Puoi specificare un nome host personalizzato per un'istanza al momento della sua creazione. I nomi di host personalizzati assegnati in questo modo non vengono risolti dal DNS interno. Con i nomi di host personalizzati, devi comunque creare un record DNS corrispondente nella zona appropriata (ad esempio utilizzando Cloud DNS). Per ulteriori informazioni, 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 per cui è abilitato il DNS zonale, il lease DHCP scade ogni ora. Le istanze che utilizzano il DNS zonale hanno voci sia zonali che globali nel file di configurazione DHCP.
Per impostazione predefinita, la maggior parte delle distribuzioni Linux memorizza le informazioni DHCP in
resolv.conf
.
Se modifichi manualmente resolv.conf
, viene ripristinato il valore predefinito DHCP ogni volta che scade il lease DHCP nell'istanza. Per apportare modifiche statiche al file resolv.conf
, diverse distribuzioni Linux consentono di anteporre o aggiungere elementi al rule DHCP.
La modalità di modifica del criterio o del file di configurazione DHCP dipende dalla distribuzione di Linux in uso. Ad esempio, Red Hat Enterprise Linux e Debian
utilizzano il file di configurazione /etc/dhcp/dhcpd.conf
. Su CentOS, utilizza l'utilità a 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 con HA e 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 risoluzione 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 memorizzano le informazioni DHCP in resolved.conf
, puoi visualizzare le voci DNS zonali e globali nel file /etc/systemd/resolved.conf
.
Questi file presentano le seguenti limitazioni:
- Il percorso di ricerca può gestire solo 6 record, di cui 3 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 successive alla 6a 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.
Se modifichi manualmente
resolv.conf
, viene ripristinato il valore predefinito del DHCP ogni volta che scade il lease DHCP di 24 ore nell'istanza. Nelle istanze che utilizzano il DNS zonale, il lease DHCP scade ogni ora. Per apportare modifiche statiche al fileresolv.conf
, diverse distribuzioni Linux consentono di anteporre o aggiungere elementi al rule DHCP.
File resolv.conf
zonale di esempio:
# Local domain name. Computed from your project name. domainZONE .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. searchZONE .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
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 Google Cloud reti VPC, consulta la panoramica delle VPC.
- Per informazioni sulla creazione e sulla 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.