7.1 What About Signals?

Those of you familiar with the BIND name server know that it's possible to signal a running name server to perform certain tasks, such as rereading its configuration file or turning on debugging information. The Microsoft DNS Server has no exact analog to a BIND name server's signals, but you can still make it perform certain tasks while running. We'll go over the tasks possible using signals on a BIND name server and show how to accomplish the same thing (if possible) with the Microsoft DNS Server:

Restart the name server

You can signal a BIND name server to reread its configuration file and zone datafiles. There's no comparable Microsoft DNS Server command. If the server obtains its configuration information from the Registry (the default mode), this command isn't necessary: as you make configuration changes with the DNS console, they take effect immediately in the running name server. If the server is using a BIND-style boot file, you must stop and restart the server after making a change to the boot file. For more information on the server "boot method," see Appendix B.

Dump a copy of the name server's internal database to a file

A BIND server can dump its entire memory database of authoritative data, cached data, and root name server "hints" to a file. There's no direct Microsoft DNS Server equivalent, but you can come close?all this information is visible in the DNS console. To see authoritative data, just select the appropriate zone. By selecting the Cached Lookups folder, you can see the contents of the name server's cache as well as the list of root name servers it's using.[1]

[1] You can see the Cached Lookups folder only if the DNS console is showing the advanced view: select View Advanced.

Dump name server statistics to a file

You can't dump the Microsoft DNS Server's usage statistics to a file, but you can view them from Performance Monitor, a Microsoft Management Console snap-in. Statistics are covered in detail at the end of this chapter.

Start/stop writing debugging information to a file

The Microsoft DNS Server can log several different kinds of debugging-related information to a file. This behavior is controlled from the Debug Logging tab of the server properties window, where you can select the types of debugging information that should be logged.

Log all queries

As with a BIND server, you can also direct the Microsoft DNS Server to log individual queries processed. The default options on the Debug Logging tab cause the server to record all queries received (and responses sent) when debug logging is turned on.

The main thing you can do to a running Microsoft DNS Server is stop it and start it again. What happens when you stop and start the server? Remember that the name server answers queries from its in-memory database. This database includes three kinds of information: authoritative data (zones for which the server is a primary or secondary), cached data (answers from other name servers), and root name server "hints" (the list of root name servers from the root name server cache file, cache.dns). When you stop the name server, this data is lost.

When you restart the server, it reloads the authoritative data from the zone datafiles on its disk. Zones for which the server is a primary are loaded and not read again for the lifetime of the server process. (Of course, you can make a change to a primary zone with the DNS console and direct the server to write to the zone datafile with Action Update Server Data Files, but the server reads the zone datafile only at startup.) Zones for which the server is a secondary are also loaded from the zone datafiles. But for each zone, the server queries its master (usually the zone's primary) for the SOA record to compare serial numbers. If the master's serial number is larger than the serial number in the zone just loaded from disk, the server performs a zone transfer.

The server also reads cache.dns at startup. In Chapter 4, we described how root name server information is used not directly, but as a "hint" to find the current list of root name servers: the server queries a root name server from cache.dns for the current list of root name servers, and the results are the first records in the cache. Remember, the cache is empty when the server starts up.