web-dev-qa-db-fra.com

Comment surmonter les restrictions du domaine racine CNAME?

Nous hébergeons de nombreuses applications Web pour nos clients. Comme il est évident qu'ils veulent utiliser leurs propres domaines pour faire référence à ces applications, ils souhaitent généralement que tout utilisateur tapant http://www.customer1.example Ou http://customer1.example Accède à leur application Web.

La situation à laquelle nous sommes confrontés est que nous devons avoir la possibilité de modifier les adresses IP dans un proche avenir. Et nous ne voulons pas que le client effectue le changement d’enregistrement A sur ses domaines. Nous pensions donc que les enregistrements CNAME fonctionneraient, mais comme nous le découvrons, les enregistrements CNAME ne fonctionneront pas pour le domaine racine.

Fondamentalement:

customer1.example IN CNAME customer1.mycompanydomain.example //this is invalid as the RFC
www.customer1.example IN CNAME customer1.mycompanydomain.example //this is valid and will work

Nous voulons pouvoir modifier l'adresse IP de customer1.mycompanydomain.example Ou l'enregistrement A et nos clients suivront cet enregistrement sur lequel nous avons le contrôle.

dans notre DNS cela ressemblera à:

customer1.mycompanydomain.example IN A 192.0.2.1

Des idées?

111
Geo

Cette question se pose souvent parce que, comme vous l'avez dit, une personne présumée aussi importante a écrit que la RFC déclare que les noms de domaine sans sous-domaine ne sont pas valides. Si vous lisez attentivement le RFC, vous constaterez que ce n'est pas exactement ce qu'il dit. En fait, RFC 1912 déclare:

N'exagérez pas avec les CNAME. Utilisez-les lorsque vous renommez des hôtes, mais prévoyez de vous en débarrasser (et informez vos utilisateurs).

Certains hôtes DNS fournissent un moyen d'obtenir une fonctionnalité semblable à CNAME au sommet de la zone (au niveau du domaine racine, pour le nom de domaine nu) à l'aide d'un type d'enregistrement personnalisé. Ces enregistrements incluent, par exemple:

  • ALIAS à DNSimple
  • ANAME chez DNS Made Easy
  • ANAME chez easyDNS
  • CNAME à CloudFlare

Pour chaque fournisseur, la configuration est similaire: pointez l'entrée ALIAS ou ANAME de votre domaine apex sur example.domain.com, comme vous le feriez avec un enregistrement CNAME. En fonction du fournisseur DNS, une valeur vide ou @ Name identifie l'apex de la zone.

ALIAS ou ANAME ou @ example.domain.com.

Si votre fournisseur DNS ne prend pas en charge un tel type d'enregistrement et que vous ne parvenez pas à en choisir un, vous devrez utiliser la redirection de sous-domaine, ce qui n'est pas si difficile, en fonction du protocole ou du logiciel serveur requis. .

Je suis fortement en désaccord avec l'affirmation selon laquelle cela n'est fait que par des "administrateurs amateurs" ou par de telles idées. C'est un simple "Qu'est-ce que le nom et son service doivent faire?" traiter, puis adapter votre configuration DNS pour répondre à ces souhaits; Si vos principaux services sont Internet et la messagerie électronique, je ne vois aucune raison valable de laisser tomber les CNAME pour de bon, cela poserait problème. Après tout, qui préférerait @ subdomain.domain.org à @ domain.org? Qui a besoin de "www" si vous êtes déjà configuré avec le protocole lui-même? Il est illogique de supposer que l'utilisation d'un nom de domaine racine ne serait pas valide.

58

CNAME 'un enregistrement racine n'est pas techniquement opposé à RFC, mais a des limitations, ce qui signifie qu'il s'agit d'une pratique déconseillée.

Normalement, votre enregistrement racine aura plusieurs entrées. Disons 3 pour vos serveurs de noms, puis un pour une adresse IP.

Par RFC:

Si un RR CNAME est présent sur un nœud, aucune autre donnée ne doit être présente;

Et selon le document 'Erreurs de fonctionnement et de configuration du DNS commun' de l'IETF:

Cela est souvent tenté par des administrateurs inexpérimentés comme un moyen évident de permettre à votre nom de domaine d’être également un hôte. Toutefois, les serveurs DNS tels que BIND voient le CNAME et refusent d’ajouter d’autres ressources à ce nom. Comme aucun autre enregistrement n'est autorisé à coexister avec un CNAME, les entrées NS sont ignorées. Par conséquent, tous les hôtes du domaine podunk.xx sont également ignorés!

Les références:

48
bind

Je ne sais pas comment ils s'en tirent, ni quels sont leurs effets secondaires négatifs, mais j'utilise Hover.com pour héberger certains de mes domaines et y ai récemment installé le sommet de mon domaine en tant que CNAME. Leur outil d'édition DNS ne s'est pas plaint du tout, et mon domaine est résolu heureusement via le CNAME assigné.

Voici ce que Dig me montre pour ce domaine (domaine réel masqué comme mydomain.com):

; <<>> Dig 9.8.3-P1 <<>> mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2056
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mydomain.com.          IN  A

;; ANSWER SECTION:
mydomain.com.       394 IN  CNAME   myapp.parseapp.com.
myapp.parseapp.com. 300 IN  CNAME   parseapp.com.
parseapp.com.       60  IN  A   54.243.93.102
4
Mason G. Zhwiti

Vous devez mettre un point à la fin du domaine externe afin qu'il ne pense pas que vous voulez dire client1.masocietedomaine.com.localdomaine;

Alors changez simplement:

customer1.com IN CNAME customer1.mycompanydomain.com

À

customer1.com IN CNAME customer1.mycompanydomain.com.
3
Gwerks

Sipwiz est correct, la seule façon de le faire est l’approche hybride HTTP et DNS. Mon registraire est un revendeur pour Tucows et propose une redirection de domaine racine en tant que service gratuit à valeur ajoutée.

Si votre domaine est blah.com, ils vous demanderont où vous souhaitez transférer le domaine et vous saisissez www.blah.com. Ils attribuent l'enregistrement A à leur serveur Apache et ajoutent automatiquement blah.com en tant qu'hôte DNS. Vhost répond par une erreur HTTP 302 en les redirigeant vers l'URL appropriée. C'est simple à script/installation et peut être manipulé par bas de gamme serait autrement mis au rebut du matériel.

Exécutez la commande suivante pour un exemple: curl -v eclecticengineers.com

3
MrEvil

Mon entreprise fait la même chose pour un certain nombre de clients pour lesquels nous hébergeons un site Web à leur intention, bien qu’il s’agisse dans notre cas de xyz.company.com plutôt que de www.company.com. Nous leur demandons de définir l'enregistrement A sur xyz.entreprise.com pour qu'il pointe vers une adresse IP que nous leur attribuons.

Pour ce qui est de savoir comment gérer un changement d'adresse IP, je ne pense pas qu'il existe une solution parfaite. Quelques idées sont:

  • Utilisez un NAT ou un équilibreur de charge IP et donnez à vos clients une adresse IP qui lui appartient. Si l'adresse IP du serveur Web doit être modifiée, vous pouvez effectuer une mise à jour le NAT ou équilibreur de charge,

  • Offrez également un service d'hébergement DNS et amenez vos clients à héberger leur domaine avec vous afin que vous puissiez mettre à jour les enregistrements A,

  • Amenez vos clients à configurer leur enregistrement A sur un serveur Web principal et à utiliser une redirection HTTP pour les demandes Web de chaque client.

2
sipwiz