Setting up DNS for a LAN without a top-level domain name

Solution 1:

You can use a fictional top level domain like "lan" or "local"

Solution 2:

As long as it is only going to be used for lookup inside your LAN you can use any top-level domain you want. It is perfectly fine to tell your local bind about the zone "nathan", which then would consist of gizmo.nathan., gadget.nathan., etc.

Solution 3:

You can use a fully qualified domain name that you do not own. However, if you're going to go down this route, make sure you pick an FQDN that is not and could never be owned by a third party. So pick one ending with .lan or .local, as Zaid suggests.

The reason for doing this is that if any of your machines are ever used off your local network (e.g. one of them is a laptop and you take it to a cafe), that machine will be trying to resolve network names with the FQDN you chose, on the public internet. If someone else owns that domain on the 'net, then those requests are going to end up on their doorstep.

Thanks to a DNS client feature in Windows called 'DNS devolution', even if the exact target DNS name doesn't exist on that remote network, the request will get re-sent with just the base domain name e.g. if you try and resolve mypc.domainname.com and it fails, the machine will then go out and just request domainname.com, then finally just com.

Long story short, either buy an externally recognised domain name (it's cheap!), or go with the not-fully-supported-but-still-acceptable .lan or .local suffixes.

Solution 4:

It really isn't a good idea to use any random thing for your DNS domain, simply because new top-levels are coming into existence all the time. That said, its safer if you chose a longer one. The list of assigned names can be found here:

http://www.iana.org/domains/root/db/

If your domain ever shows up in that list, you'll have to redo your DNS setup on something else. Otherwise, anything legitimately in that domain won't be reachable from your network.