I purposefully broke Internet law today…well, sort of—but I did it with good intentions, I swear!

It all started so simply. I was trying to get a web server running at home so I could host some stuff for a project I’m currently working on (more on that in another post). I already owned a domain name I wanted to use for this server— we’ll call it flubber.com—and simply wanted to have pages from my web server appear when I typed flubber.com into my browser.

Now, anyone who owns a domain name knows that in order to point your domain to some server, that server needs to have an identifier that doesn’t change—in other words, an IP address. The problem is that my router’s public IP address changes every once in a while, just like 95% of Internet users with broadband. I had no desire to go purchasing a static IP from my ISP, so I told myself there must be a better way.

# Dynamic DNS

Well there was, and the answer was with dynamic DNS. Using a service such as dyndns.org, I was able to sign up for a free account and get a free subdomain—we’ll call it flubber.dyndns.org—whose IP address would map to my router’s IP address. Any time my ISP assigned my router a new IP, the router would then be able to send the new IP to dyndns.org, ensuring that the address was always kept up to date. This meant I could access my server from anywhere using flubber.dyndns.org, absolutely free.

However, using flubber.dyndns.org as my domain wasn’t ideal—I wanted to use flubber.com as my domain. I figured I would just be able to add an alias in my DNS configuration that would point flubber.com to flubber.dyndns.org and that would be the end of it. To my chagrin however, my domain provider at the time—we’ll call them SlowDaddy—wouldn’t let me do this, and the error message I received wasn’t terribly useful in explaining why.

# You “Can’t” CNAME a Naked Domain

Looking into this, I soon discovered that what I was attempting to do was breaking RFC 1034, section 3.6.2. In a nutshell, you are not allowed to have a CNAME resource record for a what’s called a naked domain (for example, flubber.com is a naked domain, but www.flubber.com is not). The reasoning is a bit nuanced, but it is indeed valid for some cases.

This was disappointing, as while I sort of understood why this could potentially be bad (the name server might have a problem if the data specified by other records and the canonical name don’t match), it didn’t really apply in my case.

# Not Everyone Cares If You Break the Rules

After a bit of hunting, I discovered a website ZoneEdit that allowed me to get around this restriction. Not only was its interface far better than SlowDaddy’s DNS manager, but when I tried creating a CNAME flubber.dyndns.org for flubber.com, it didn’t complain. Since SlowDaddy still manages flubber.com, I had to change the name servers from SlowDaddy’s to ZoneEdit’s, but once that was done, within a matter of minutes I was able to enter flubber.com in my browser and see my web server respond. Mission accomplished!

At the end of the day, the only “proper” solution to this problem is to create an A record in your zone file that points your domain name to a static IP address. If however, you’re just fooling around, this solution is perfectly acceptable, although you’ll have to live with the fact that you are directly violating an RFC published by the Internet Engineering Task Force. I’m all for open standards, and I think it’s important that organizations like the IETF exist. However, so long as I’m not hurting anyone in my own little projects, I think this is one violation that can be forgiven.

Image