From 16cb24807db5b1bd20e2b31a15bda7940f1145bd Mon Sep 17 00:00:00 2001 From: Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> Date: Sun, 9 Mar 2025 15:43:06 +0100 Subject: ignore CNAMEs in RDNS-mode #1460 Suppose your provider uses RFC 2317 (or RFC 4183 for that matter). The output of nslookup could look like the following: 2.120.22.172.in-addr.arpa canonical name = 2.0/26.120.22.172.in-addr.arpa. 2.0/26.120.22.172.in-addr.arpa name = rajesh.intern.prauscher.de. Without this filter, check_dns would check the string against "2.0/26.120.22.172.in-addr.arpa., rajesh.intern.prauscher.de." which will fail for obvious reasons. In forward DNS, this is achieved in line 165, as nslookup will print the address separate from the CNAME-resolving. Original commit by Patrick Rauscher (prauscher@prauscher.de), adapted here. --- plugins/check_dns.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'plugins/check_dns.c') diff --git a/plugins/check_dns.c b/plugins/check_dns.c index a4c8e9b1..95f33083 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c @@ -128,6 +128,9 @@ int main(int argc, char **argv) { } if (strcasestr(chld_out.line[i], ".in-addr.arpa") || strcasestr(chld_out.line[i], ".ip6.arpa")) { + if ((strstr(chld_out.line[i], "canonical name = ") != NULL)) { + continue; + } char *temp_buffer = NULL; if ((temp_buffer = strstr(chld_out.line[i], "name = "))) { addresses[n_addresses++] = strdup(temp_buffer + 7); -- cgit v1.2.3-74-g34f1