We'll start building the DNS server configuration from the bottom up. It's easier to explain that way. The assumption here is that you're starting with the basic Linode setup already in place. I'll cover all the files, but quite a few should already exist and be correctly set up. I'll do it in sections:
I assume you understand the basics of DNS records themselves. If you don't, peruse the DNS record basics page to get an overview. The zonefiles and configuration files will normally go in /etc/bind where most distributions put the Bind configuration.
Almost every nameserver will have two standard zones: the forward zone for "localhost", and the reverse zone for the 127.0.0.0/8 local-loopback network. These don't vary at all, and they're pretty simple:
db.local: provides the "localhost" name for 127.0.0.1
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
db.127: reverse zone for the 127.0.0.0/8 network
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1.0.0 IN PTR localhost.
Both have very long time-to-live definitions, since the records in them won't ever change there's no reason to not keep them around essentially forever.
There's also a db.root file containing the initial bootstrap definitions for the root nameservers. Most distributions supply and update it along with the Bind software. If you need a copy, the official version is at http://www.internic.net/domain/named.root and you'll just need to save it as db.root. This doesn't really get updated often, I just check and update it once a year.