Setup White-Label Name Servers using AWS Route 53

Each Amazon Route 53 hosted zone is associated with four name servers, known collectively as a delegation set. By default, the name servers have names like ns-2048.awsdns-64.com. If you want the domain name of your name servers to be the same as the domain name of your hosted zone, for example, ns1.example.com, you can configure white-label name servers, also known as vanity name servers or private name servers.

Prerequisite

You must install and configure AWS CLI with the IAM user.

Create a reusable delegation set

Run the following command on your terminal to create a reusable delegation set that will be used every time you register a hostname to use your white-label name servers.

$ aws route53 create-reusable-delegation-set  --caller-reference MyDelegationSet

The MyDelegationSet should be anything unique and easy to remember. The above command will output the following:

{
    "Location": "https://route53.amazonaws.com/2013-04-01/delegationset/N37R7O8I61415K", 
    "DelegationSet": {
        "NameServers": [
            "ns-1184.awsdns-20.org", 
            "ns-1707.awsdns-21.co.uk", 
            "ns-874.awsdns-45.net", 
            "ns-204.awsdns-25.com"
        ], 
        "CallerReference": "MyDelegationSet", 
        "Id": "/delegationset/N37R7O8I61415K"
    }
}

Take note of the Id and NameServers for future reference. These values are required every time you add a new domain to use the while-label name servers. If you forget and need to see it again, run the following command:

$ aws route53 list-reusable-delegation-sets

Obtain IPv4 and IPv6 addresses

We need to get IPv4 and IPv6 addresses for the name servers we registered in the previous step. There are multiple ways to do so, depending on your operating system.

In the case of Ubuntu, you can use the host or dig command.

$ host ns-1184.awsdns-20.org
ns-1184.awsdns-20.org has address 205.251.196.160
ns-1184.awsdns-20.org has IPv6 address 2600:9000:5304:a000::1

$ host ns-1707.awsdns-21.co.uk
ns-1707.awsdns-21.co.uk has address 205.251.198.171
ns-1707.awsdns-21.co.uk has IPv6 address 2600:9000:5306:ab00::1

$ host ns-874.awsdns-45.net 
ns-874.awsdns-45.net has address 205.251.195.106
ns-874.awsdns-45.net has IPv6 address 2600:9000:5303:6a00::1

$ host ns-204.awsdns-25.com
ns-204.awsdns-25.com has address 205.251.192.204
ns-204.awsdns-25.com has IPv6 address 2600:9000:5300:cc00::1

Make a note of these values too. You will need them later.

Create a hosted zone for the domain

Now it is time to create a hosted zone for the domain you want to use for the vanity name servers. If you already created the hosted zone using Route 53 web interface for this domain, you must delete it before proceeding with this step.

Make sure to take note of old host records (especially MX or SPF records), as you will need to recreate those records after this step. Run the following command to create a new hosted zone:

$ aws route53 create-hosted-zone --delegation-set-id /delegationset/N37R7O8I61415K --name example.com --caller-reference MyHostedZone

MyHostedZone can be any value you want to use as a reference for the newly created hosted zone. The above command will output the following:

{
    "HostedZone": {
        "ResourceRecordSetCount": 2, 
        "CallerReference": "MyHostedZone", 
        "Config": {
            "PrivateZone": false
        }, 
        "Id": "/hostedzone/6Q3UU0J2ZS4BD", 
        "Name": "example.com."
    }, 
    "DelegationSet": {
        "NameServers": [
            "ns-1184.awsdns-20.org", 
            "ns-1707.awsdns-21.co.uk", 
            "ns-874.awsdns-45.net", 
            "ns-204.awsdns-25.com"
        ], 
        "CallerReference": "MyDelegationSet", 
        "Id": "/delegationset/N37R7O8I61415K"
    }, 
    "Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/6Q3UU0J2ZS4BD", 
    "ChangeInfo": {
        "Status": "PENDING", 
        "SubmittedAt": "2018-10-20T09:26:50.314Z", 
        "Id": "/change/C2XMQ1GNRL5BS"
    }
}

Save the HostedZone > Id for future use.

Create records for white-label name servers

Now login to the AWS web console and go to Route 53 service to create IPv4 and IPv6 records for white-label name servers. Click on the Hosted Zones and then on the zone name you just created in the last step (in our case example.com). Create the following eight records:

  • One A record for each white-label name server
  • One AAAA record for each white-label name server

For example, for ns-1184.awsdns-20.org, we will create one A records with name ns1.example.com and value 205.251.196.160 and another AAAA record with name ns1.example.com and value 2600:9000:5304:a000::1. Similarly, create the remaining six records for the other three name servers.

Update NS and SOA records

Make a note of the default NS record value so you can revert to these name servers if required. Replace the name of the Route 53 name servers with the names of your four white-label name servers:

ns1.example.com
ns2.example.com
ns3.example.com
ns4.example.com

Update the SOA record by replacing the name of the Route 53 name server with the name of one of your white-label name servers. The default SOA record is something like the following:

ns-1184.awsdns-20.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

Replace the default value with the following:

ns1.example.com. hostmaster.example.com. 1 7200 900 1209600 60

Create glue records and change the registrar's name servers

Change the name servers for the domain to the names of your white-label name servers. Create four glue records for which the names and IP addresses match the values you got in the previous step. Include both the IPv4 and the IPv6 address for a white-label name server in the corresponding glue record, for example:

Nameserver IPv4 (A) IPv6 (AAAA)
ns1.example.com 205.251.196.160 2600:9000:5304:a000::1
ns2.example.com 205.251.198.171 2600:9000:5306:ab00::1
ns3.example.com 205.251.195.106 2600:9000:5303:6a00::1
ns4.example.com 205.251.192.204 2600:9000:5300:cc00::1

Glue record creation varies depending on your primary domain name registrar. If you're using Amazon Route 53 as your DNS service provider, follow this article.

Using white-label name servers

If you want to use your private name servers for other domains, you create a hosted zone using the same delegation set. For example, if you need to use white-label name servers for example.net, run the following command:

$ aws route53 create-hosted-zone --delegation-set-id /delegationset/N37R7O8I61415K --name example.net --caller-reference MyHostedZone2

Next, update the NS and SOA records for example.net with the same values you used for example.com. For example.net, you do not need to create glue records.

✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.

You might also like...

Digital Ocean

The simplest cloud platform for developers & teams. Start with a $200 free credit.

Buy me a coffee ☕

If you enjoy reading my articles and want to help me out paying bills, please consider buying me a coffee ($5) or two ($10). I will be highly grateful to you ✌️

Enter the number of coffees below:

✨ Learn to build modern web applications using JavaScript and Spring Boot

I started this blog as a place to share everything I have learned in the last decade. I write about modern JavaScript, Node.js, Spring Boot, core Java, RESTful APIs, and all things web development.

The newsletter is sent every week and includes early access to clear, concise, and easy-to-follow tutorials, and other stuff I think you'd enjoy! No spam ever, unsubscribe at any time.