Introduction
A DNS server is great to have on a local network, especially if there are several machines. It is far easier to remember machine names than it is to remember IP addresses. On the local network the “.atgo” domain is used as an extension for all computer names for communication. Any thing can be used really, but it is best to stay away from official domains. The purpose of this DNS server is to provide these domains through a single source for all the computers on the network and a cache to speed up queries.
MacOS X comes with a pre-installed version of BIND that is suited to this task. There is two files to edit, two files to create to enable this job.
Local Domain
In this case the local domain will be “.atgo”. Hence, two files are created in /var/named.
atgo.zone
$TTL 86400
@ 1D IN SOA ns.atgo. Webmaster.atgo.org. (
2006112401 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
;
TXT "ATGO"
NS ns.atgo. ; Address of name server
MX 10 mail.atgo. ; Primary mail exchanger
;
localhost A 127.0.0.1
ns A xxx.xxx.xxx.xxx
jesus A xxx.xxx.xxx.xxx
HINFO "Core Solo" "MacOS X"
TXT "Intel Core Solo"
mail CNAME jesus
www CNAME jesus
This is a standard BIND installation, and so standard nomenclature can be used. The xxx.xxx.xxx.xxx is the IP address assigned to the computer in question on the local network. The IP address can be set in the Network Preference Pane on each computer. Obviously, this list can be as long as necessary, one for each computer on the network.
named.atgo
The second file to be created is the inverse of the first file. This is the reverse mapping, indicating which numbers point to which names.
TTL 86400
@ IN SOA localhost. root.localhost. (
2006112500 ; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1D ) ; Minimum
IN NS ns.atgo.
xxx IN PTR jesus.atgo.
Ideally, there should be a PTR entry for every physical computer on the network.
named.conf
The first of the files to be edited can be found in /etc/. This is the main configuration file for BIND, and will point to the two files previously created.
controls {
inet 127.0.0.1 port 54 allow {any; };
};
options {
directory "/var/named";
forward first;
forwarders {
xxx.xxx.xxx.xxx;
xxx.xxx.xxx.xxx;
};
allow-query { xxx.xxx.xxx.0/24; localhost; };
allow-recursion { xxx.xxx.xxx.0/24; localhost; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "atgo" IN {
type master;
file "atgo.zone";
allow-query { any; };
};
zone "xxx.xxx.xxx.in-addr.arpa" IN {
type master;
file "named.atgo";
allow-query { any; };
};
The forwarders should be any DNS servers provided by your ISP. The idea is that the server will query these servers if it doesn’t know the address being queried.
The allow-query and allow-recursion fields should be the first three blocks of your local network. These usually begin with 192.168.0., but that will depend on the network. The zone field should be these three blocks in reverse order.
org.isc.named.plist
The final file is the start up control. It tells MacOS X that BIND needs to be turned on at start up. Note that in 10.4 and above, this is handled by launchd and not hostconfig. This file can be found in /System/Library/LaunchDaemons/.
...
<key>Disabled</key>
<false />
...
All that’s left now is load this into launchd. Open a terminal and type:
sudo -s
launchctl stop org.isc.named
launchctl unload org.isc.named.plist
launchctl load org.isc.named.plist
launchctl start org.isc.named
All done! BIND should now be running, and start up when the server is rebooted. If not, then you probably have incorrect syntax in one of your files. Fix the problem and try again.