in reply to testing a DNS server

One thing to look at would be to see if your current monitoring software can monitor that kind of thing. That having been said, a quick-and-dirty way to check might be to do something along the following lines in a script using Net::DNS:

  1. Maintain a list of a few dozen hosts, including a mix of frequently-visited and not-so-frequently-visited ones.
  2. At intervals, select a subset of this list to check. For each host selected, do the following:
    1. Query against the DNS server in question, for NS and A values.
    2. Query against the NS server for the host in question for the same information
    3. Compare the results. Issue a warning if the mismatch is above some percentage of those checked, or possibly if mismatches occur above some number of consecutive checks.

Things to remember would include: a) a hostname may resolve to multiple addresses, so you may have to check two answers of multiple results against each other; b) a hostname may just be an alias for another name, which would involve another set of lookups; c) if a DNS update occurs for that host it may take time for it to propagate to your host; and d) things do happen which could cause time-outs in queries, so build your script to be accordingly robust.

Hope the idea helps, at least.