Panoramica del DNS interno

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 Trusted Cloud by S3NS utilizzano il servizio DNS interno per consentire alle istanze di computing nella stessa rete l'accesso reciproco tramite nomi DNS interni.

Trusted Cloud crea, aggiorna e rimuove in automatico i seguenti tipi di record DNS mentre gestisci le 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 zone inverse corrispondenti.

Ad esempio, quando elimini un'istanza, Trusted Cloud rimuove automaticamente i record A e PTR associati per il nome DNS interno. Se poi crei un'istanza con lo stesso nome, Trusted Cloud crea nuovi record per l'istanza sostitutiva.

Limitazioni

  • Compute Engine crea record DNS A e PTR interni solo per l'indirizzo IPv4 interno principale dell'interfaccia di rete nic0 di un'istanza. Di conseguenza, il tipo di stack dell'interfaccia di rete nic0 deve essere solo IPv4 o a doppio stack. Il DNS interno non supporta le interfacce di rete solo IPv6 (Anteprima).

  • Compute Engine non crea record DNS interni per:

    • 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 di IP alias di qualsiasi interfaccia di rete.
    • Un intervallo di indirizzi IPv6 interni o esterni di qualsiasi interfaccia di rete.
  • 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 di VPC condiviso).

    Per ulteriori informazioni sugli scenari di VPC condiviso, consulta Nomi DNS interni e VPC condiviso.

Nomi DNS interni di zona e globali

Trusted Cloud ha due tipi di nomi DNS interni:

  • DNS di zona: i nomi delle istanze devono essere univoci all'interno di ogni zona, ma puoi riutilizzarli in 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 un'affidabilità superiore, in quanto isola gli errori di registrazione del DNS all'interno delle singole zone. In caso di interruzione del servizio, 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 dove si verificano errori nel control plane in cui hai o avevi precedentemente risorse di progetto. Trusted Cloud by S3NS non può verificare i nomi DNS delle risorse esistenti nelle regioni non disponibili.
  • 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 agevolmente gli aumenti del workload non sono in grado di fare lo scale up.

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 di zona, questo valore deve essere univoco all'interno della stessa zona, ma può essere ripetuto in più zone. Per il DNS globale, il nome dell'istanza deve essere univoco all'interno del 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 configura i nomi DNS per il progetto o le istanze.

Risoluzione dei nomi DNS

Le istanze ricevono informazioni sulla 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 diTrusted Cloudcrea automaticamente record PTR per le istanze nelle seguenti zone inverse:

  • 10.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 16.172.in-addr.arpa., 17.172.in-addr.arpa., e così via fino a 31.172.in-addr.arpa.

Nomi DNS interni e VPC condiviso

La VM client e la VM associata al record DNS interno possono essere situate in progetti separati, ma devono utilizzare la stessa rete VPC condivisa. 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 sul nome di dominio completo (FQDN) per i record DNS interni anziché fare affidamento 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 DNS A 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 condivisa, il progetto della VM è diverso dal progetto che contiene la rete.

  • L'utilizzo di nomi DNS interni a livello di zona o globale (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 invece di quelli creati da Trusted Cloud.

Zone private e record personalizzati con Cloud DNS

Puoi utilizzare una zona privata di 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 di tua scelta.

Per creare record PTR personalizzati che eseguono l'override dei nomi DNS PTR interni creati in automatico, consulta Record PTR per gli indirizzi RFC 1918 nelle zone private. Per informazioni sulla creazione di record PTR per le istanze, consulta Crea un record PTR per un'istanza.

Nomi host personalizzati

Puoi specificare un nome host personalizzato per un'istanza quando la crei. I nomi di 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 Crea un'istanza con un nome host personalizzato.

DNS interno e DHCP

Le istanze Compute Engine sono configurate in modo da rinnovare i lease DHCP ogni 24 ore. Per le istanze il DNS di zona abilitato, il lease DHCP scade ogni ora. Le istanze che utilizzano il DNS di zona hanno voci sia di zona sia globali nel file di configurazione DHCP.

Per impostazione predefinita, la maggior parte delle distribuzioni Linux archiviano le informazioni DHCP in resolv.conf. Se modifichi manualmente resolv.conf, viene ripristinato il DHCP predefinito ogni volta che scade il lease DHCP nell'istanza. Per apportare modifiche statiche al file resolv.conf, varie distribuzioni Linux consentono di anteporre o aggiungere elementi alla policy DHCP.

La modalità di modifica della policy DHCP o del file di configurazione dipende da quale distribuzione Linux utilizzi. Ad esempio, Red Hat Enterprise Linux e Debian utilizzano il file di configurazione /etc/dhcp/dhcpd.conf. 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 tuo 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 archiviano le informazioni DHCP in resolv.conf. Il servizio systemd-resolved fornisce anche servizi di risoluzione per il DNS. Puoi configurarlo 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 di zona 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. Così alcune funzionalità di Compute Engine potrebbero smettere di funzionare, ad esempio l'accesso alle istanze tramite i relativi nomi.
  • Se modifichi manualmente resolv.conf, viene ripristinato il DHCP predefinito ogni volta che passano le 24 ore di scadenza del lease DHCP nell'istanza. Nelle istanze che utilizzano il DNS di zona, il lease DHCP scade ogni ora. Per apportare modifiche statiche al file resolv.conf, varie distribuzioni Linux consentono di anteporre o aggiungere elementi alla policy DHCP.

Configurazione di DNS di zona

File resolv.conf di zona 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'istanza
  • PROJECT_ID: il progetto a cui appartiene l'istanza

File dhcp.lease di zona 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'istanza
  • ZONE: la zona in cui si trova l'istanza
  • PROJECT_ID: il progetto a cui appartiene l'istanza

Configurazione di 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'istanza
  • PROJECT_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 campione:

# 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