Each Amazon Route 53 hosted zone is associated with four name servers, known collectively as 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.

👉 Try Amazon SES with EmailOctopus — A low-cost email marketing platform offering high deliverability, customized reports, and the ability to drip email sequences, import contacts and integrate with forms.

Prerequisite

Make sure that you have properly installed and configured AWS CLI with IAM user.

Create 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"
    }
}

Make a note of the Id and NameServers for future references. You will need these values every time you add a new domain to use the while-label name servers. In case, 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 the operating system you are using. On Ubuntu, you can either use 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 a note of old host records too (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"
    }
}

Make a note of the HostedZone > Id for future use.

Create records for white-label name servers

Now login to 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 that 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 that 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 records 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

Now if you want to use your private name servers for other domains, you need to create a hosted zone using the same delegation set. For example, if you want to use for 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

And then 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.

Last Updated: