DNS: Subdomains, die sowohl einen MX-Eintrag als auch einen CNAME erfordern

17

Nehmen wir an, wir besitzen die Zone mywebservice.com.

Ich möchte, dass jeder meiner Kunden eine eigene Unterdomäne erhält, z. B. customer.mywebservice.com.

customer.mywebservice.com muss ein CNAME für einen bestimmten Server außerhalb des Standorts sein. Da diese Site ihre eigene Ausrüstung verwaltet und Adressen zu jedem Zeitpunkt ändern kann, ist der CNAME eine Anforderung.

Die Benutzer müssen außerdem in der Lage sein, eine E-Mail an [email protected] zu senden, für die ein einfacher MX-Eintrag erforderlich wäre.

An dieser Stelle möchte ich Sie jedoch anleiten:

Gemäß 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.

Ich habe auch überprüft, dass mein DNS-Server es ablehnt, nur einen CNAME für Hosts bereitzustellen, die diese verwenden.

Es scheint also, dass ich eine Verlustsituation haben könnte. Wenn ich den MX-Eintrag verwenden möchte, muss ich ein A anstelle eines CNAME verwenden.

Kann jemand irgendwelche Problemumgehungen vorstellen? Vielen Dank!

Michael Gorsuch
quelle

Antworten:

20

Leider stoßen Sie auf eine Einschränkung der DNS-Spezifikation. Bei den meisten DNS-Serverimplementierungen schlägt ein MX-Eintrag für denselben Hostnamen fehl, der als CNAME-Eintrag definiert ist. Einige ältere DNS-Server werden dies zulassen, wurden jedoch größtenteils zugunsten neuer, sichererer Implementierungen eingestellt.

Anstatt CNAME-Einträge zu verwenden, müssen Sie A-Einträge mit den IP-Adressen der Kundenstandorte direkt verwenden, anstatt die Namen zu aliasen.

Justin Scott
quelle
Ja, ich schätze, ich werde mich diesem Problem nur stellen. Vielen Dank!
Michael Gorsuch
2
Ich sollte auch beachten, dass der Grund für diese Einschränkung darin besteht, dass ein CNAME auf den "kanonischen Namen" für den Host verweisen soll, nach dem gesucht wird. Wenn Sie beispielsweise einen Host haben, x2.example.com, der ein CNAME-Eintrag ist, der auf x1.example.com verweist, sollte jeder Resolver, der nach x2 sucht, den CNAME sehen, alles, was er für x2 tut, durch x1 ersetzen und von vorne beginnen . Wenn Sie zusätzlich zum CNAME einen MX-Eintrag für x2 hatten, dann besteht die Möglichkeit, dass x1 auch einen MX-Eintrag hat. Dies ist unerwünscht und wird daher einfach abgelehnt.
Justin Scott
18

Nach viel Arbeit und Recherche hier habe ich eine akzeptable Lösung gefunden. Erstens ist es wichtig, dass wir uns alle an die RFCs halten. Ich habe meinen DNS-Server so gepatcht, dass er gegen den RFC verstößt, und festgestellt, dass einige andere wichtige DNS-Server die Änderung nicht berücksichtigen.

Der geeignete Schritt besteht darin, den MX auf dem Host zu platzieren, auf den der CNAME zeigt. Wenn also customer.mywebservice.com ein CNAME für den A-Datensatz loadbalancer.mywebservice.com ist, ist es richtig, auch einen MX-Datensatz für loadbalancer.mywebservice.com zu erstellen. Ich habe überprüft, dass dies mit allen wichtigen Resolvern funktioniert.

Wenn eine MX-Abfrage für customer.mywebservice.com durchgeführt wird, folgt die Resolver-Bibliothek dem CNAME und ruft den richtigen MX für den endgültigen A-Datensatz ab. Hurra!

Michael Gorsuch
quelle
4

customer.mywebservice.com muss ein CNAME für einen bestimmten Server außerhalb des Standorts sein. Da diese Site ihre eigene Ausrüstung verwaltet und Adressen zu jedem Zeitpunkt ändern kann, ist der CNAME eine Anforderung.

Kann jemand irgendwelche Problemumgehungen vorstellen? Vielen Dank!

Sie haben eine Anforderung, dass die Kunden die Adresse ändern können müssen. Haben Sie darüber nachgedacht, dem Kunden zu ermöglichen, ihren eigenen Datensatz dynamisch zu aktualisieren? Mit dynamischen DNS können Sie den A-Datensatz verwenden, und der Kunde kann den Datensatz nach Bedarf ändern. Es wäre ein bisschen arbeitsaufwendig, aber Sie könnten jede einzelne Unterdomäne als separate Zone definieren, um sicherzustellen, dass ein Kunde nur seine eigene Zone berühren kann.

Ich habe es noch nicht ausprobiert, aber Gnudip scheint ein Open-Source-Tool zu sein, das dynamische Updates ermöglicht, ohne sich um die Authentifizierung kümmern und viele Zonen auf Ihrem DNS-Server einrichten zu müssen.

Zoredache
quelle
3

Wenn Ihre MX-Einträge für alle diese Einträge identisch sind, können Sie versuchen, mit einem DNAME XYZ.mywebservice.com an hosting.mywebservice.com umzuleiten. Fügen Sie unter hosting.mywebservice.com Ihre relaventen MX- ​​und A-Datensätze hinzu.

Ich muss sagen, dass ich noch nie DNAME-Datensätze in der Produktion verwendet habe, aber Sie können mehr darüber in RFC2672 lesen .

Doug Luxem
quelle
Ich wollte versuchen, DNAME mit einigen unserer SSL-Domänen zu verwenden, habe jedoch gehört, dass es weiterhin Probleme mit älteren DNS-Servern usw. gibt. Ist dies relevant? Oder kann DNAME sicher auf Produktionsservern verwendet werden?
Drybjed
Wenn ich raten müsste, erwarten viele Anwendungen keine DNAME-Einträge und brechen möglicherweise ab, wenn sie verwendet werden. Folgen alle Mailserver DNAMEs, um MX-Einträge zu suchen? Ich weiß es nicht, aber sie sollten es. Für Ihr SSL-Problem sollten DNS-Server, die DNAME nicht verstehen, stattdessen eine CNAME-Referenz erhalten. Ich würde dies gründlich testen, bevor ich es implementiere.
Doug Luxem
Die Anwendung muss auf keinen Fall DNAME-Einträge verarbeiten! Dies erfolgt nur auf Nameservern.
Bortzmeyer
3

Hat die RHS des CNAME von customer.mywebservice.com einen MX-Eintrag?

In diesem Fall verwendet der Mailserver diesen MX, um den zu verwendenden Mailserver zu finden. Hoffentlich kannst du das kontrollieren.

MikeyB
quelle
1

Die Antwort von Michael Gorsuch ist größtenteils richtig, die Kette CNAME -> A + MX funktioniert ... meistens . In bestimmten MTAs wird jedoch ein schlechtes Verhalten ausgelöst. Ich habe festgestellt, dass diese Lösung in angemessenem Umfang ausgeführt wird:

  • Einige MTAs lehnen es einfach ab, den Datensatz zu finden.
  • andere ersetzen fälschlicherweise den A-Eintrag, in dem der CNAME stehen soll: dh ich habe eine E-Mail an "[email protected]" gesendet, die CNAMES an web.example.com, die einen MX von mail.example.com hat, und die MTA schreibt den Briefumschlag-Header als "An: [email protected]".

Es ist noch nicht klar, wie weit verbreitet diese Probleme sind (google / hotmail / yahoo / etc scheinen alle richtig damit umzugehen), aber sie haben uns auf jeden Fall nach besseren Lösungen umgesehen.

osheroff
quelle
2
Das ist richtig; Das dokumentierte Verhalten für RFC5321-kompatible SMTP-Server besteht darin, zunächst zu überprüfen, ob ein MX-Eintrag für die Domäne vorhanden ist. Wenn dies fehlschlägt, überprüfen Sie, ob ein A-Eintrag vorhanden ist. Dieses Verhalten ist der eigentliche technische Grund, warum der MX kein CNAME sein sollte: Er wird nach der ersten verwendbaren Antwort nicht mehr aufgelöst.
12.
0

Eine mögliche und gültige Lösung wäre, einen Basis-Hostnamen für alle Ihre Kunden zu erstellen und ihn auf den a und aaaa-Datensatz des externen Webservers und Ihres mx zu setzen und dann alle Ihre Kundendomänen mit diesem einzigen Hostnamen zu benennen. Auf diese Weise müssen Sie nur einen Datensatz ändern, wenn sich die IP-Adresse des externen Anbieters ändert.

Dies ist die einzig mögliche Methode, da CNAME ein Alias ​​für einen vollständigen Datensatz ist, nicht nur für einen.

Bachsau
quelle
-4

MX und CNAME sind völlig getrennte Datensätze - einer bestimmt den Mailserver für eine bestimmte Domain, der andere gibt die Adresse für eine Domain an. Das sollte funktionieren:

@ IN SOA ns1.mywebservice.com. root.mywebservice.com. (
                        2009060201
                        12h
                        1h
                        1w
                        8h
)

                        NS ns1.mywebservice.com.
                        NS ns2.mywebservice.com.

Kunde CNAME offsite.host.
Kunden MX 10 mail.server.
trocken gebadet
quelle
4
Das mag funktionieren, verstößt aber gegen RFC1034 und RFC1219, die besagen, dass keine anderen Ressourceneinträge denselben Namen wie ein CNAME haben dürfen.
Doug Luxem
Mein DNS-Daemon ist RFC-streng, was sich einfach weigert, die Antwort für den MX zu senden. Ich glaube, dass es auf der Client-Seite einige potenzielle Caching-Probleme gibt, wenn wir dies umsetzen.
Michael Gorsuch
Welcher DNS-Daemon? Ich verwende BIND9, das mit dieser Konfiguration problemlos funktionieren sollte. Vielleicht ist es Zeit für ein Upgrade? Große Infrastruktur, nehme ich an?
Drybjed
Ich benutze MyDNS. Es ist eine ziemlich große Konfiguration, und dieser kleine Daemon war bis jetzt ein Segen. Ich denke darüber nach, es zu patchen, bin aber nicht sehr daran interessiert, mit den Nebenwirkungen umzugehen, die entstehen. Wenn es gegen den RFC geht, klingt es nach einer schlechten Idee.
Michael Gorsuch
@Maciej - Ihr autorisierender Server kann diese Datensätze möglicherweise hosten. Sie werden die meisten rekursiven Server verwirren, die sie jedoch abfragen.
Alnitak,