Panoramica del DNS interno


Quando crei istanze di macchine virtuali (VM) Compute Engine, il DNS interno crea automaticamente un nome DNS per la VM. Questo nome DNS facilita la comunicazione interna VM-to-VM risolvendo gli indirizzi IP interni. Le reti virtual private cloud su Google Cloud utilizzano il servizio DNS interno per consentire alle VM nella stessa rete di accedere l'una all'altra utilizzando i nomi DNS interni.

Google Cloud crea, aggiorna e rimuove automaticamente i seguenti tipi di record DNS durante la gestione delle VM:

  • I record di indirizzi DNS, o record A, vengono creati per le VM in una zona DNS per .internal.
  • I record PTR per le VM, utilizzati per la ricerca DNS inversa, vengono creati nelle zone di ricerca inversa corrispondenti.

Ad esempio, quando elimini una VM, Google Cloud rimuove automaticamente i record A e PTR associati per il nome DNS interno. Se poi crei una VM con lo stesso nome, Google Cloud crea un nuovo record per la sostituzione.

Limitazioni

I nomi DNS interni hanno le seguenti specifiche:

  • Il nome DNS interno di una VM viene risolto solo nel suo indirizzo IP interno principale. I nomi DNS interni non possono essere utilizzati per connettersi agli indirizzi IP esterni di una VM.

  • I nomi DNS interni non possono essere configurati per risolvere in indirizzi IP alias secondari.

  • I nomi DNS interni possono essere risolti solo dalle VM che si trovano nella stessa rete. Queste VM possono trovarsi nello stesso progetto della rete o in progetti di servizio che utilizzano la stessa rete VPC condiviso. Per risolvere i nomi DNS delle VM nei progetti di servizio, devi utilizzare i FQDN delle VM. Non puoi utilizzare il DNS interno per contattare le VM in una rete diversa.

Nomi DNS interni zonali e globali

Google Cloud ha due tipi di nomi DNS interni:

  • DNS di zona: i nomi delle VM devono essere univoci all'interno di ogni zona, ma puoi riutilizzarli tra le zone. Ad esempio, puoi avere più VM con nome instance-1 purché si trovino in zone diverse.
  • DNS globale: i nomi delle VM devono essere univoci all'interno di ogni progetto. Con il DNS globale, non puoi riutilizzare i nomi delle VM 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 della VM deve essere univoco nell'intero progetto. Di conseguenza, non puoi creare nuove VM in nessuna regione in cui si verificano errori del piano di controllo in cui hai o avevi in precedenza 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 è 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 VM_NAME.ZONE.c.PROJECT_ID.internal
DNS globale (a livello di progetto) VM_NAME.c.PROJECT_ID.internal

Sostituisci quanto segue:

  • VM_NAME: il nome della VM. 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 della VM deve essere univoco nel progetto.
  • ZONE: la zona in cui si trova l'istanza.
  • PROJECT_ID: il progetto a cui appartiene la VM.

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 VM 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 della VM (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 di Google Cloud crea automaticamente record PTR per le VM nelle seguenti zone di inoltro:

  • 10.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 16.172.in-addr.arpa., 17.172.in-addr.arpa., ... fino a 31.172.in-addr.arpa.

Nomi DNS interni e VPC condiviso

Puoi utilizzare un nome DNS interno per fare riferimento all'indirizzo IP interno di una VM anche se questo indirizzo IP si trova in una rete VPC condiviso 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 instead of the internal DNS names default created by 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 VM. Puoi configurare record PTR che ti consentono di ignorare l'URL DNS interno predefinito per la VM 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 VM, consulta Creare un record PTR per un'istanza VM.

Nomi host personalizzati

Puoi specificare un nome host personalizzato per una VM 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 saperne di più, consulta la sezione Creare un'istanza VM con un nome host personalizzato.

DNS e DHCP interni

Le VM Compute Engine sono configurate per rinnovare i lease DHCP ogni 24 ore. Per le VM in cui è abilitato il DNS di zona, il lease DHCP scade ogni ora. Le VM 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. Se modifichi manualmente resolv.conf, viene ripristinato il valore predefinito del DHCP ogni volta che scade il lease DHCP sulla VM. 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 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 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 superiore a 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 VM utilizzando i relativi nomi di istanza.
  • Se modifichi manualmente resolv.conf, viene ripristinato il valore predefinito del protocollo DHCP ogni volta che scade il lease DHCP di 24 ore sulla VM. Nelle VM che utilizzano il DNS zonale, il lease DHCP scade ogni ora. Per apportare modifiche statiche al file resolv.conf, diverse distribuzioni Linux consentono di anteporre o aggiungere elementi al rule 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 la VM
  • PROJECT_ID: il progetto a cui appartiene la VM

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 VM 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 "VM_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:

  • VM_NAME: il nome della VM
  • ZONE: la zona in cui si trova la VM
  • PROJECT_ID: il progetto a cui appartiene la VM

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 la VM.

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 VM 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 "VM_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:

  • VM_NAME: il nome della VM
  • PROJECT_ID: il progetto a cui appartiene la VM

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