[monitoring-plugins] ignore CNAMEs in RDNS-mode #1460
Lorenz Kästle
git at monitoring-plugins.org
Sun Mar 9 16:00:11 CET 2025
Module: monitoring-plugins
Branch: master
Commit: 16cb24807db5b1bd20e2b31a15bda7940f1145bd
Author: Lorenz Kästle <12514511+RincewindsHat at users.noreply.github.com>
Date: Sun Mar 9 15:43:06 2025 +0100
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=16cb2480
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 at prauscher.de), adapted
here.
---
plugins/check_dns.c | 3 +++
1 file changed, 3 insertions(+)
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);
More information about the Commits
mailing list