check_dns breaks if there's no reverse DNS defined for the DNS server specified on the command line. This is because check_dns depends on nslookup, which is a broken program.
Options for fixing this include rewriting check_dns to use "host" instead of nslookup, although this may not be as portable as nslookup because host is less widely used. A better option would be to use the res* library. Unfortunately, I don't have time at the moment to write this code - sorry :-(
To check:
google:/tmp# /opt/netsaint/libexec/check_dns www.yahoo.com 10.29.82.1
DNS CRITICAL - Non-existent host/domain
google:/tmp# nslookup www.yahoo.com 10.29.82.1
*** Can't find server name for address 10.29.82.1: Non-existent host/domain
*** Default servers are not available
As you note, this is a non-trivial fix.
We currently suggest check_dig, particularly inasmuch as nslookup is deprecated in bind 9 and may not be present in future releases.