DNS dans le CLOUD

Introduction

Les fournisseurs de services cloud proposent un ensemble de composants facilitant le déploiement des applications dans le cloud. Cependant, pendant cette phase de transition, qui peut durer plusieurs années, il est nécessaire de continuer à utiliser les services présents dans le réseau hérité.

Le DNS est un exemple parfait pour illustrer ce propos. Bien que les fournisseurs de services cloud mettent à disposition un service de résolution DNS en PaaS, il peut être difficile de l’utiliser lorsqu’il y a une forte dépendance avec l’infrastructure héritée.

Heureusement, en architecturant notre infrastructure d’une certaine manière, nous pouvons combler les lacunes des fournisseurs de services cloud et assurer une transition en douceur entre les systèmes hérités et les services cloud.


Google Cloud Platform (GCP)

Par exemple, sur Google Cloud Platform (GCP), nous pouvons utiliser Cloud DNS pour gérer de manière autonome nos résolutions DNS. Cloud DNS est un service de résolution DNS en PaaS qui permet de créer et de gérer facilement des enregistrements DNS pour vos domaines. En utilisant ce service, vous pouvez continuer à utiliser vos services DNS hérités tout en profitant des avantages du cloud.

Malheureusement, à l’heure actuelle, il est impossible de forwarder (transférer) des domaines vers des serveurs DNS en dehors de GCP (pas encore). Pour pallier ce manque, nous pouvons installer des forwarders DNS en IaaS pour assumer ce rôle.

Par exemple, un serveur BIND ou Unbound est parfait pour cette tâche. L’idée est donc de créer un forwarder vers des composants IaaS : Installez et configurez un serveur DNS (BIND ou Unbound) dans une instance IaaS sur GCP. Configurez le forwarder DNS pour qu’il redirige les requêtes DNS vers les serveurs DNS hérités ou externes en fonction de vos besoins. Mettez à jour vos configurations DNS, y compris les enregistrements NS, pour utiliser ce nouveau serveur DNS en tant que point d’entrée pour les requêtes DNS de votre domaine.

Et dans notre serveur DNS on lui demande de forward vers les ips de nos serveurs DNS legacy :

server:
 do-udp: yes #Allow in udp
 do-tcp: yes #Allow in TCP
 hide-identity: yes
 hide-version: yes
 identity: "unidentified server"
 version: "0"
 harden-short-bufsize: no
 harden-large-queries: no
 harden-glue: yes
 qname-minimisation: yes

#prefetch: no # Va aller chercher l'info avant l'expiration du TTL
#Nous avons mis sur non car il y aune limite sur Azure DNS, qui est de 1000 reqêtes max/sec

#This option can cause an increase of around 10% more DNS traffic and load on the server, but frequently requested items will not expire from the cache.

 num-threads: 2
 so-reuseport: yes

 msg-cache-slabs: 2
 rrset-cache-slabs: 2
 infra-cache-slabs: 2
 key-cache-slabs: 2

 outgoing-range: 32768
 so-rcvbuf: 16m
 so-sndbuf: 16m
 msg-cache-size: 256m
 num-queries-per-thread: 4096
 rrset-cache-size: 256m
 infra-cache-numhosts: 100000

 verbosity: 1                             #de 0 à 5 en fonction du niveau de debug désiré -  0 seulement les erreurs
 use-syslog: yes
 # logfile: /var/log/unbound.log
 log-queries: no
 # log-replies: yes

 interface: 0.0.0.0                        #Adresse du serveur DNS Unbound, si vous désirez unbound sur plusieurs interfaces remplacer par 0.0.0.0
 access-control: 10.12.0.0/16  allow       #autorisez le réseau de notre VPC
 access-control: 10.13.0.0/16  allow

 auto-trust-anchor-file: "/var/lib/unbound/root.key"
 #domain-insecure: "."

forward-zone:
 name: "mycorporate.com"
 forward-addr: 10.0.0.1         #serveur DNS OnePremise
 #forward-addr: 10.0.0.2       #serveur DNS OnePremise 2

Ce qui nous donne :


Azure CLOUD

Dans Azure, le principe est similaire à celui de GCP. Cependant, Azure DNS n’est pas (encore) capable de jouer le rôle d’aiguilleur. De ce fait, nous allons positionner notre infrastructure DNS en amont pour qu’elle puisse assumer ce rôle. Installez et configurez un serveur DNS (BIND ou Unbound) dans une VM Azure.

Configurez le forwarder DNS pour qu’il redirige les requêtes DNS vers les serveurs DNS hérités ou externes en fonction de vos besoins. Mettez à jour vos configurations DNS, y compris les enregistrements NS, pour utiliser ce nouveau serveur DNS en tant que point d’entrée pour les requêtes DNS de votre domaine.

En positionnant l’infrastructure DNS en amont, vous pouvez gérer de manière centralisée les résolutions DNS pour vos domaines tout en assurant une transition en douceur entre les systèmes hérités et les services cloud. Cette architecture permet de tirer parti des avantages du cloud tout en conservant la compatibilité avec les services DNS hérités, facilitant ainsi la transition vers le cloud.

Ce qui nous donnera :

server:
 do-udp: yes #Allow in udp
 do-tcp: yes #Allow in TCP
 hide-identity: yes
 hide-version: yes
 identity: "unidentified server"
 version: "0"
 harden-short-bufsize: no
 harden-large-queries: no
 harden-glue: yes
 qname-minimisation: yes

#prefetch: no # Va aller chercher l'info avant l'expiration du TTL
#Nous avons mis sur non car il y aune limite sur Azure DNS, qui est de 1000 reqêtes max/sec

#This option can cause an increase of around 10% more DNS traffic and load on the server, but frequently requested items will not expire from the cache.

 num-threads: 2
 so-reuseport: yes

 msg-cache-slabs: 2
 rrset-cache-slabs: 2
 infra-cache-slabs: 2
 key-cache-slabs: 2

 outgoing-range: 32768
 so-rcvbuf: 16m
 so-sndbuf: 16m
 msg-cache-size: 256m
 num-queries-per-thread: 4096
 rrset-cache-size: 256m
 infra-cache-numhosts: 100000

 verbosity: 1                             #de 0 à 5 en fonction du niveau de debug désiré -  0 seulement les erreurs
 use-syslog: yes
 # logfile: /var/log/unbound.log
 log-queries: no
 # log-replies: yes

 interface: 0.0.0.0                        #Adresse du serveur DNS Unbound, si vous désirez unbound sur plusieurs interfaces remplacer par 0.0.0.0
 access-control: 10.12.0.0/16  allow       #autorisez le réseau de notre VNET
 access-control: 10.13.0.0/16  allow

 auto-trust-anchor-file: "/var/lib/unbound/root.key"
 #domain-insecure: "."

forward-zone:
 name: "."
 forward-addr: 168.63.129.16       #serveur Azure DNS

forward-zone:
 name: "cloud.mycorporate.com"
 forward-addr: 168.63.129.16       #serveur Azure DNS

forward-zone:
 name: "mycorporate.com"
 forward-addr: 10.0.0.1         #serveur DNS OnePremise

UPDATE —> preview annoncé cette année en 2022 Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/CloudAzure/tree/main/AzureDNS