Vanity DNS mit Amazon Route53

Armin Baldemair
armix.one
Published in
3 min readMay 30, 2016

--

Route 53 ist ein High-End Domain Name Service. Neben der Domainregistierung bietet R53 auch das Hosting von DNS-Zones an. Standardmäßig werden dabei jeder Zone vier Nameserver zugewiesen. Die Nameserver heißen ns-aaaa.awsdns-bb.cc wobei aaaa und bb jeweils für Zahlen stehen und cc für je eine der vier Top-Level-Domains (.co.uk,. .com, .net und .org). Ein typischer Nameserver wäre somit ns-1234.awsdns-56.co.uk.

Wirklich schön ist das nicht, wenn man auf die Namen seiner DNS-Server wert legt. Deshalb kann man auch benutzerdefinierte Hostnamen für DNS-Server verwenden, obwohl der Nameservice von R53 bereitgestellt wird. Realisieren lässt sich dies mit einem sogenannten Delegationset.

Nachdem es dafür kein WUI gibt, muss man auf die AWS CLI zurückgreifen. Diese muss zuerst von https://aws.amazon.com/cli/ installiert werden. Nach dem ersten Start muss die Grundkonfiguration mit aws configure erfolgen. Im Zuge dessen müssen Access Key, Secret Access Key, Region und Ausgabeformat definiert werden.

aws route53 create-reusable-delegation-set --caller-reference aaa

…erstellt anschließend ein wiederverwendbares DelegationSet, wobei aaa die selbst gewählte Referenzierungs-ID ist. Als Antwort auf den Befehl gibt die AWS CLI ein Set mit vier Nameservern zurück:

{
"Location": "https://route53.amazonaws.com/2013-04-01/delegationset/N2KWWW11111111",
"DelegationSet": {
"NameServers": [
"ns-1234.awsdns-10.co.uk",
"ns-567.awsdns-23.com",
"ns-890.awsdns-45.net",
"ns-1011.awsdns-50.org"
],
"CallerReference": "aaa",
"Id": "/delegationset/N2KWWW11111111"
}
}

Wichtig ist dabei vor allem die zurückgegebene Id — diese sollte man sich ebenso wie die Hostnamen der Nameserver notieren, da sie für das Anlegen von Zonen notwendig ist.

Im nächsten Schritt sollte man die Hostnamen des DelegationSets in deren IP-Adressen auflösen. Mit den IP-Adressen kann man dann entsprechende Glue-Records für die Registry erstellen. Meine Nameserver sollten beispielsweise die Domains meines N1WebServices nutzen — n1ws.com und n1ws.net. Anstatt von awsdns-bb.cc verwende ich also ns01.n1ws.com bis ns04.n1ws.net

Sind die entsprechenden Einträge angelegt und via NS auflösbar (Propagation Delay beachten!), dann können die neuen Nameserver für eine beliebige Zone verwendet werden. Dazu wird folgende Befehl in der AWS CLI verwendet:

aws route53 create-hosted-zone --caller-reference aaa --name bbb --delegation-set-id /delegationset/N2KWWW11111111

…wobei aaa der neuen Caller-Referenz und bbb dem Namen der neuen Zone, also dem gewünschten Domainnamen, entspricht. Die DelegationSet-ID, die ebenfalls angegeben werden muss, ist der Teil der Antwort auf den vorherigen create-reusable-delegation-set Befehl. (Anmerkung: Es können nur neue Zonen mit dem DelegationSet angelegt werden. Die Änderung von bestehenden Zonen ist aktuell leider nicht möglich. In diesem Fall müsste die Zone zuerst gelöscht und anschließend neu angelegt werden. Wenn die Zone über viele Resource Records verfügt, empfiehlt sich vor dem Löschen auf jeden Fall ein Export der bestehenden Records.)

AWS meldet als Antwort auf create-hosted-zone folgendes zurück:

{
"HostedZone": {
"ResourceRecordSetCount": 2,
"CallerReference": "n1ws-dns02",
"Config": {
"PrivateZone": false
},
"Id": "/hostedzone/Z6TFP22222222",
"Name": "n1cloud.net."
},
"DelegationSet": {
"NameServers": [
"ns-1942.awsdns-50.co.uk",
"ns-166.awsdns-20.com",
"ns-921.awsdns-51.net",
"ns-1440.awsdns-52.org"
],
"CallerReference": "n1ws-dns01",
"Id": "/delegationset/N2KWWW11111111"
},
"Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/Z6TFP22222222",
"ChangeInfo": {
"Status": "PENDING",
"SubmittedAt": "2016-04-13T15:50:03.887Z",
"Id": "/change/CBW3233333333"
}
}

SOA- und NS-Records (die zu diesem Zeitpunkt noch awsdns-bb.cc verwenden) kann man dann auch über die WUI von Route 53 anpassen — bisher weiß die Zone noch nicht, dass sie nicht awsdns-bb.cc als Hostnamen für die Nameserver verwenden soll. Zu guter Letzt müssen dann nur noch die beim Registrar angegebenen Nameserver auf die neuen NS-Namen angepasst werden.

Nachdem alle Änderungen übernommen wurden (das kann etwas dauern) kann man dann mit einem nslookup testen, ob alles funktioniert:

aws-r53-nslookup
Abfrage der Nameserver

Die Ausgabe zeigt, dass in diesem Fall die Domain n1cloud.net die Vanity-Nameserver ns01.n1ws.com bis ns04.n1ws.net nutzt. Mails werden von der AWS-Region EU-West-1 angenommen.

--

--