Traffic Manager Linked Records: la nuova integrazione di Azure DNS

La scelta del servizio DNS su cui ospitare i nostri domini è una tra le più importanti, attorno ad essi gravitano la maggior parte delle applicazioni usate quotidianamente da noi e dai nostri utenti. Recentemente Azure DNS è stato arricchito con una nuova integrazione, i Traffic Manager Linked Records.

Il punto di partenza: come funzionano i record alias in Azure DNS

Chi utilizza Azure per ospitare sia le proprie zone DNS che altri servizi esposti su Internet (Static Web App, Public IP Address, ma non solo), gode già da molto tempo di un’integrazione di base, quella dei record alias. Essi consentono di associare i nostri record direttamente alle risorse Azure, senza indicarne manualmente il valore. Oltre ad ottimizzare inserimento e visualizzazione, rendendo più veloce capire quale record corrisponde a quale risorsa Azure, essi aggiornano automaticamente il valore quando necessario e, se dovessimo eliminare la risorsa, ne rimuoverebbero il riferimento dal record set, evitando così puntamenti verso destinazioni non più sotto il nostro controllo.

Risorsa Azure DNS, blade Recordsets: aggiungere un record e specificarne il nome, scegliere il tipo desiderato, impostare «Alias record set» su Sì, selezionare «Risorsa di Azure» e indicare la risorsa di destinazione.
Figura 1: come creare un record alias in Azure DNS
Record AAAA per il dominio radice, indicato con @, con TTL di 3.600 secondi. È un alias senza valore IPv6 diretto, collegato alla risorsa Azure di tipo indirizzo IP pubblico «MVPDavide-TestIPAddress».
Figura 2: come vengono visualizzati i record alias in Azure DNS

È importante precisare che i record alias non limitano la compatibilità con i client DNS, le risposte saranno interpretabili normalmente in quanto, dietro le quinte, i tipi di record rimarranno A, AAAA oppure CNAME.

Record alias di un Traffic Manager

Tra le risorse che è possibile associare ad un record alias sono presenti anche i Traffic Manager. Essi possono essere referenziati con dei record CNAME oppure A / AAAA.

Utilizzo del tipo di record CNAME

Viene associato il dominio nella nostra zona DNS con quello del Traffic Manager.

Record CNAME «davide-balancedfa», TTL 3.600 secondi, configurato come alias verso il profilo Azure Traffic Manager «mvpdavide»;
Figura 3: record CNAME alias di un Traffic Manager

In questa condizione, il record DNS restituisce il valore “mvpdavide.trafficmanager.net”, e ciò obbliga il client DNS ad effettuare almeno un’ulteriore query DNS per ottenere l’indirizzo IP.

La query DNS per «davide-balancedfa...» restituisce un record CNAME che punta a «mvpdavide.trafficmanager.net»
Figura 4: risultato della query DNS verso un record CNAME alias di un Traffic Manager

Così facendo limitiamo l’autenticazione del DNSSEC al record CNAME, infatti il client proseguendo nella risoluzione di “mvpdavide.trafficmanager.net” non potrà verificare l’autenticità della risposta.

Verifica DNSSEC: la catena è valida per il dominio .net, ma trafficmanager.net non è protetto perché non dispone di record DS, DNSKEY e firme RRSIG.
Figura 5: il dominio trafficmanager.net non è autenticato con DNSSEC

Utilizzo del tipo di record A / AAAA

Configurando, come Endpoint del Traffic Manager, degli Indirizzi IP, potremo creare il record alias di tipo A oppure AAAA. In questo caso la risposta sarebbe autenticabile con DNSSEC e conterrebbe direttamente l’IP, senza necessità di ulteriori risoluzioni DNS.

Record di tipo A «davide-balancedpid-a», con TTL di 60 secondi, configurato come alias del Traffic Manager «mvpdavide-a».
Figura 6: come viene visualizzato un record alias di tipo A che punta ad un Traffic Manager
La query DNS restituisce direttamente un record A con indirizzo IPv4 e firma RRSIG, senza CNAME intermedi, confermando l’autenticazione DNSSEC.
Figura 7: risultato della query DNS verso un record A alias di un Traffic Manager

Traffic Manager Linked Records: il passo avanti per i record CNAME

Quando Azure DNS riceve una query per un Traffic Manager Linked Record di tipo CNAME non risponde con il dominio del Traffic Manager, ma gli richiede internamente l’FQDN dell’Endpoint a cui deve essere indirizzata la richiesta, inoltrandolo poi al client come valore CNAME.

Questo porta diversi vantaggi, ma i principali sono:

  • Non viene esposto il dominio trafficmanager.net: il client effettuerà una query in meno e, sul firewall, non sarà necessario consentire la risoluzione di tale dominio;
  • Possibilità di mantenere l’autenticazione DNSSEC end-to-end: senza il dominio intermedio trafficmanager.net verrà restituito direttamente al client l’FQDN dell’Endpoint. Se tutte le zone DNS della catena CNAME sono correttamente firmate e delegate, il client potrà autenticare con DNSSEC l’intero percorso di risoluzione.

Per creare un record che goda di questi benefici occorre abilitare l’opzione “Enable Traffic Management (Preview)”, selezionando poi il Traffic Manager desiderato.

Creazione del record scegliendone il nome, selezionare il tipo CNAME, abilitare "Enable Traffic Management" e scegliere il Traffic Manager desiderato come destinazione collegata.
Figura 8: come creare un Traffic Manager Linked Record

Nella tabella dei record, i Traffic Manager Linked Records saranno contrassegnati dal classico logo del Traffic Manager.

Il record CNAME «davide-balancedfa», con TTL di 60 secondi e destinazione il Traffic Manager «mvpdavide», è identificato come Traffic Manager Linked Record dall’icona viola di Traffic Manager.
Figura 9: Traffic Manager Linked Record

Effettuando la query DNS a questo tipo di record, il valore del CNAME sarà direttamente quello dell’Endpoint, eliminando così la necessità di risolvere un sottodominio di trafficmanager.net.

La query DNS restituisce direttamente il record CNAME verso l’endpoint azurewebsites.net, senza CNAME "trafficmanager.net" intermedio, e la firma RRSIG ne conferma l’autenticazione DNSSEC.
Figura 10: il Traffic Manager Linked Record restituisce direttamente l’FQDN dell’Endpoint selezionato

Per capire quali sono i Traffic Manager attualmente associati ai record DNS della nostra zona è possibile usare la nuova blade “Traffic management”.

Blade "Traffic management" di Azure DNS: elenca record, tipo, TTL, profilo Traffic Manager, metodo di routing, endpoint e stato Traffic View. La colonna Tipo di collegamento distingue i record Alias dai Traffic Manager Linked Records.
Figura 11: la nuova blade “Traffic management” di Azure DNS

Essa è utile anche per distinguere i record associati ai Traffic Manager in modalità alias rispetto ai Traffic Manager Linked Records.

Per effettuare la migrazione da record alias a Traffic Manager Linked Record, basterà modificarne l’associazione abilitando l’opzione “Enable Traffic Management (Preview)” e facendo attenzione a selezionare il Traffic Manager corretto.

Modifica del record CNAME: abilitare l'opzione "Enable Traffic Management (Preview) e selezionare il profilo Traffic Manager desiderato per convertirlo da alias a Traffic Manager Linked Record.
Figura 12: Modifica del tipo di associazione

Punti d’attenzione

Ad oggi l’integrazione è in public preview, ci sono alcuni dettagli perfezionabili.

I Traffic Manager, al momento della creazione, possono essere caratterizzati da un singolo tipo di record, tutti gli endpoints che andremo ad associarci dovranno obbligatoriamente rispettarlo.

Creazione di un profilo Azure Traffic Manager: il nuovo campo «Tipo di record» consente di scegliere tra non specificato, A per IPv4, AAAA per IPv6 e CNAME.
Figura 13: scelta del tipo di record restituito dal Traffic Manager

Purtroppo si nota che nei Traffic Manager con tipo di record A, viene restituito un errore quando proviamo ad aggiungere, come Endpoint, alcuni servizi Azure. 

Aggiunta di un endpoint al  Traffic Manager: tipo «Endpoint Azure», endpoint abilitato e risorsa di destinazione «PublicIP1» di tipo indirizzo IP pubblico.
Figura 14: Tentativo di aggiunta di un IP Pubblico come endpoint di un Traffic Manager con “A” come tipo di record
Errore controintuitivo nel Traffic Manager con record di tipo A: l’endpoint Azure "indirizzo IP pubblico" viene rifiutato perché è interpretato come nome di dominio; mentre il traffic manager richiede un valore IPv4
Figura 15: errore restituito da Azure

Questo accade perché App Services ed Indirizzi IP Pubblici vengono referenziati tramite il nome di dominio ad essi collegato, e non direttamente con l’IP Pubblico. Di conseguenza, utilizzando un Traffic Manager con tipo di record CNAME ed aggiungendoci un App Service, ci verrà restituito il suo FQDN come valore CNAME.

La query DNS restituisce il record CNAME che collega il nome richiesto all’hostname azurewebsites.net dell’endpoint Azure configurato in Traffic Manager.
Figura 16: query ad un Traffic Manager Linked Record di tipo CNAME dove l’Endpoint è un Azure App Service

È importante notare che, come trafficmanager.net, neanche azurewebsites.net (dominio default utilizzato dagli App Service), azurestaticapps.net (dominio default utilizzato dalle Static Web App) e cloudapp.azure.com (dominio default utilizzato per gli IP Pubblici) sono autenticati da DNSSEC. 

Un’opzione per ottenere l’autenticazione DNSSEC, tramite Traffic Manager, di Endpoint interni ad Azure, è reperire ed aggiungere manualmente gli indirizzi IP, definendoli come esterni. Ciò, oltre ad essere logicamente poco elegante, ci costringe ad aggiornare manualmente gli IP pubblici qualora Azure annunciasse il loro cambiamento.

Se volessimo utilizzare dei Traffic Manager di tipo CNAME ed essere sicuri di mantenere completa la catena DNSSEC dovremo verificare che il dominio a cui puntiamo (ed eventuali redirezioni “a cascata”) siano anch’essi autenticati DNSSEC.

Conclusione

I Traffic Manager Linked Records costituiscono un passo avanti nell’integrazione tra i vari servizi di Microsoft Azure. Purtroppo sono ancora presenti limitazioni e contraddizioni tra i vari passaggi di configurazione, ma il fatto che sia ancora in public preview porta a pensare che Microsoft stia lavorando a migliorare il servizio, rendendo coerenti tra loro tutti i componenti. È inoltre importante capire che i vantaggi introdotti sono principalmente legati ai record CNAME.

Riferimenti esterni

Documentazione ufficiale Traffic Manager Linked Records

Azure DNS: come migliora la gestione dei domini aziendali

DNSSEC: come funziona, vantaggi e attivazione su Azure DNS

Documentazione ufficiale sulla restrizione del tipo di record associabile al Traffic Manager

Documentazione ufficiale sui record alias in Azure DNS