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

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 host name to use your white-label name servers.

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

The MyDelegationSet should be anything that is 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 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 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 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 the 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 jut created in last step (in our case example.com). Create 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 remaining six records for 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 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 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 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.


Need help to start a new Spring Boot or MEAN stack project? I am available for contract work. Hire me to accomplish your business goals with engineering and design. Let’s talk about your project: hi@attacomsian.com.