guide.deuxfleurs.fr/content/prise_en_main/DNS-CNAME-apex.md

4.7 KiB

title description date weight extra
CNAME à l'apex Les CNAME à l'apex d'une zone DNS 2023-04-19 3
parent
prise_en_main/mettre-place-DNS.md

Le problème

Dans le protocole DNS, il n'est pas possible de mettre un champ CNAME à l'apex d'une zone.

Concrètement, qu'est-ce que ça veut dire ? Si vous gérez la zone example.com et que vous aimeriez faire pointer ce nom vers garage.deuxfleurs.fr pour que Deuxfleurs héberge votre site web, la solution naturelle serait de configurer un CNAME. Dans un fichier de zone, cela ressemblerait à :

 @    10800  IN  CNAME  garage.deuxfleurs.fr.

Hors, cela est interdit par le protocole DNS. Pourquoi donc ? Parce qu'un CNAME s'applique à tous les types d'enregistrements, pas simplement les A (adresse IPv4) et AAAA (adresse IPv6). Ainsi, la redirection du CNAME s'appliquerait également aux enregistrements comme NS et MX, ce qui rentrerait en conflit avec ces enregistrements déjà existants dans votre zone.

Une explication technique plus détaillée est disponible sur le site de l'ISC.

Solutions possibles

Implémentations non-standard : ALIAS et CNAME flattening

Certains hébergeurs et logiciels DNS proposent une solution non-standard à ce problème.

Gandi permet de configurer un champ ALIAS à l'apex d'une zone qui pointe vers un autre nom comme garage.deuxfleurs.fr. Cet enregistrement ALIAS ne sera jamais renvoyé directement aux clients DNS : à la place, ce sont les serveurs DNS de Gandi qui vont dynamiquement consulter les enregistrements A et AAAA de garage.deuxfleurs.fr, puis les renvoyer dans la requête initiale pour example.com.

De manière confuse, Cloudflare permet de mettre un enregistrement CNAME à l'apex d'une zone. Comment font-ils, puisque c'est interdit ? En fait, ils utilisent exactement la même technique que Gandi, mais ils ont choisi de réutiliser le terme CNAME là où Gandi appelle cela un ALIAS. C'est un choix de nom très discutable puisqu'il ne s'agit pas vraiment d'un CNAME.

Très peu d'implémentations logicielles libre de serveur DNS faisant autorité proposent cette fonctionnalité. Les logiciels classiques Bind, NSD et Knot ne l'implémentent pas. Parmi les autres logiciels couramment utilisés, seuls PowerDNS Authoritative Nameserver et CoreDNS l'implémentent : PowerDNS avec la syntaxe ALIAS comme chez Gandi, et CoreDNS avec la syntaxe CNAME abusive comme chez Cloudflare.

Il faut noter que c'est une technique plutôt complexe à implémenter correctement, puisqu'elle nécessite que le serveur DNS faisant autorité joue un rôle de récurseur, ce qui n'est pas nécessaire en temps normal.

Au final, c'est une solution ad-hoc qui est très spécifique à certains fournisseurs et logiciels, avec même plusieurs syntaxes possibles. Elle présente donc un risque fort d'enfermement auprès de ces fournisseurs ou logiciels.

En cours de standardisation : SVCB et HTTPS

Deux nouveaux types d'enregistrements DNS sont en cours de standardisation : SVCB et HTTPS. Ce travail en cours couvre un spectre plus large, mais il résout en particulier ce problème de CNAME à l'apex.

En mars 2023, ce document de travail en est à sa 12ème révision et n'a pas encore été publié officiellement comme un standard (RFC). Cependant, il semblerait que certains navigateurs web et certains logiciels serveurs DNS aient déjà commencé à implémenter cette spécification depuis 2021 environ.

Solutions recommandées chez Deuxfleurs

Vous êtes responsable de votre nom de domaine, donc n'hésitez pas à expérimenter si vous le souhaitez ! Si vous avez des retours sur l'utilisation de SVCB/HTTPS, nous sommes intéressés.

Cependant, Deuxfleurs recommande pour l'instant les solutions suivantes :

  • utiliser un sous-domaine lorsque cela est possible

  • sinon, utiliser l'implémentation non-standard de Gandi ou Cloudflare

En effet, la solution SVCB/HTTPS est encore en cours de standardisation en 2023 et va mettre de nombreuses années avant d'être déployée sur tous les terminaux. Compter uniquement sur cette solution, c'est écarter de fait tous les clients un peu anciens (vieux téléphones Android, anciennes versions de Windows ou d'Ubuntu pas mises à jour), alors que Deuxfleurs cherche à éviter l'obsolescence et faire en sorte que ces appareils restent utilisables le plus longtemps possible.