-
Change Request
-
Resolution: Unresolved
-
Trivial
-
None
-
None
-
None
Current Functionality
In an environment where you may have more than one DNS resolver (which is most environments...) on a given server, Zabbix's default behaviour should be to utilize all listed DNS resolver on the server until a response is received. This behaviour is the default OS behave for most Linux flavours, at least any using glibc's library.
glibc behaviour (RHEL): [Chapter 22. Configuring the order of DNS servers | Configuring and managing networking | Red Hat Enterprise Linux | 8 | Red Hat Documentation|https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-the-order-of-dns-servers_configuring-and-managing-networking]
Musl (another C Library for other Linux distros) implements similar but different logic. Musl will send the DNS query to all servers, then return the fastest result.
[getaddrinfo() from musl libc | Viacheslav Biriukov|https://biriukov.dev/docs/resolver-dual-stack-application/5-getaddrinfo-from-musl-libc/]
Expected Functionality
Zabbix should return null only after querying all available DNS servers, implementing the systems' native preference of musl or glibc beahviour. Otherwise, it should return the DNS entry it receives.
Recommendation (one or the other){}
- Implement a new key "net.dns.getall" that follows the described use case.
- Pros: Implements new functionality without compromising existing setups.
- Cons: Probably more work.
- Modify the existing keys such as net.dns.get or net.dns.record and implement the above behaviour. Possibly by adding optional flags in the item key.
Zabbix Environment
- Zabbix Agent Version: (Agent and Agent, All versions)
- Zabbix Server: 7.0 LTS
- Architecture: All
- Operating System: Linux (RHEL 9.6)