web-dev-qa-db-fra.com

DNS: sous-domaines nécessitant à la fois un enregistrement MX et un nom d'objet CNAME

Disons que nous possédons la zone mywebservice.com.

J'aimerais que chacun de mes clients ait son propre sous-domaine, tel que Customer.MyweService.com.

customer.MyweService.com doit être un nom de CNAME à un serveur donné hors site. Étant donné que ce site gère son propre équipement et peut modifier des adresses à un moment donné, le CNAME est une exigence.

Les gens doivent aussi être capables d'envoyer un courrier électronique à la boîte de ré[email protected], qui nécessiterait un simple enregistrement MX.

Cependant, et c'est là que je voudrais des directives:

Selon - RFC 1034 :

If a CNAME RR is present at a node, no other data should be
present; this ensures that the data for a canonical name and its aliases
cannot be different.

J'ai également vérifié que mon serveur DNS refuse de servir quoi que ce soit, sauf un CNAME pour les hôtes qui les utilisent.

Donc, il semble que je puisse avoir une situation perdante. Si je veux utiliser l'enregistrement MX, j'ai besoin d'utiliser un A au lieu d'un nom de nom.

Quelqu'un peut-il penser à des solutions de contournement? Merci!

18
Michael Gorsuch

Malheureusement, ce que vous rencontrez est une limitation de la spécification DNS. Avoir un enregistrement MX pour le même nom d'hôte que défini comme un enregistrement CName échouera dans la plupart des implémentations du serveur DNS. Certains serveurs DNS plus anciens permettront de cela, mais ils ont été principalement progressivement mis en phase en faveur de nouvelles implémentations plus sûres.

Au lieu d'utiliser des enregistrements CNAME, vous devrez utiliser des enregistrements "A" avec les adresses IP des sites clients directement au lieu d'alias les noms.

21
Justin Scott

Après beaucoup de travail et de recherche ici, j'ai trouvé une solution acceptable. Premièrement, il est important que nous suivions tous les RFC. J'ai corrigé mon serveur DNS pour enfreindre le RFC, et j'ai découvert que plusieurs autres serveurs DNS principaux ne respecteraient pas le changement.

Le déménagement approprié consiste à mettre le MX sur l'hôte que le CName pointe. Donc, si client.MyweService.com est un nom de CNAME à un enregistrement LoadBalancer.MywebService.com, il est approprié de créer un enregistrement MX pour WHOWBALANCER.MYWERSERVICE.com. J'ai vérifié que cela fonctionne avec tous les résolvers majeurs.

Si une requête MX est faite pour Customer.MyweService.com, la bibliothèque de résolveur suivra le CNAME et obtenez le correctif MX pour le dernier enregistrement. Hourra!

18
Michael Gorsuch

customer.MyweService.com doit être un nom de CNAME à un serveur donné hors site. Étant donné que ce site gère son propre équipement et peut modifier des adresses à un moment donné, le CNAME est une exigence.

Quelqu'un peut-il penser à des solutions de contournement? Merci!

Vous avez besoin que les clients doivent pouvoir modifier l'adresse, avez-vous envisagé de permettre au client de mettre à jour de manière dynamique leur propre dossier? Avec DNS dynamique, vous pouvez utiliser l'enregistrement A et le client pourrait modifier l'enregistrement si nécessaire. Cela prendrait un peu de travail, mais vous pouvez chaque sous-domaine individuel comme zone distincte afin que vous puissiez vous assurer qu'un client ne peut toucher que sa propre zone.

Je ne l'ai pas essayé mais gnudip semble être un outil open source permettant de faciliter les mises à jour dynamiques sans avoir à faire face à l'authentification et à configurer de nombreuses zones sur votre serveur DNS.

4
Zoredache

Si vos enregistrements MX seront les mêmes pour tous ces enregistrements, vous pourriez essayer d'utiliser un nom de NAME pour rediriger xyz.mywebservice.com pour héberger.mywebservice.com. Sous Hosting.MyweService.com Ajoutez votre relavent MX et un enregistrement.

Je dois dire que je n'ai jamais utilisé les enregistrements DNAME en production, mais vous pouvez en savoir plus sur eux RFC2672 .

3
Doug Luxem

La réponse de Michael Gorsch est largement correcte, la chaîne CNAME -> A + MX fonctionne ... principalement. Cependant, il déclenche un mauvais comportement dans certains MTA. Ce que j'ai trouvé courir cette solution à une quantité décente d'échelle:

  • certains MTA refuseront simplement de trouver le dossier.
  • d'autres substituent incorrectement le dossier d'un nom de CNAME: c'est-à-dire que j'ai envoyé un mail à "[email protected]", que cnames à web.example.com, qui a un MX de mail.example.com, et le MTA réécrit l'en-tête d'enveloppe comme "à: [email protected]".

Ce n'est pas encore clair à quel point ces problèmes sont omniprésents (Google/Hotmail/Yahoo/etc. semblent tous traiter correctement), mais ils nous ont certainement examinés pour de meilleures solutions.

1
osheroff

Une solution possible et valide serait de créer un nom d'hôte de base pour tous vos clients et de la définir sur l'enregistrement A et AAAA du serveur Web hors site et de votre MX, puis CNAME Tous vos clients à ce nom d'hôte unique. De cette façon, vous ne devrez changer qu'un enregistrement lorsque l'adresse IP hors site change.

C'est le seul but et le seul moyen possible, car CNAME est un alias pour un ensemble complet d'enregistrements, pas seulement un.

0
Bachsau