5.4. Enabling eDNS on an existing RHEL installation
You can enable encrypted DNS (eDNS) on an existing RHEL installation to handle all DNS traffic by using DNS-over-TLS.
Prerequisites
-
Commands that start with the
#command prompt require administrative privileges provided bysudoor root user access. For information on how to configuresudoaccess, see Enabling unprivileged users to run certain commands. - Have an existing RHEL installation.
The following packages are installed on your system:
-
dnsconfd -
dnsconfd-dracut -
grubby
-
-
If on an IBM Z system, the
ziplutility is installed.
Procedure
Configure NetworkManager in the
/etc/NetworkManager/conf.d/global-dot.conffile:[main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://<server_ip_1><dns_server_hostname_1>,dns+tls://<server_ip_2><dns_server_hostname_2>For more details on global DNS options, see the
GLOBAL-DNS SECTIONinNetworkManager.conf(5)man page on your system.Optional: To use a custom CA bundle for validating upstream DoT servers, copy the PEM-formatted file to the
/etc/pki/dns/extracted/pem/tls-ca-bundle.pemfile.참고After adding or removing certificates in
/etc/pki/dns/extracted/pem, restart thednsconfdservice to apply the changes.Enable the
dnsconfdservice:# systemctl enable --now dnsconfdReload NetworkManager:
# systemctl reload NetworkManagerRegenerate
initramfsfor all installed kernels to includednsconfdand its configuration:# for kernel in `rpm -q kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'`; do dracut -f --kver="$kernel" doneSet kernel arguments to the current and newly installed kernel version:
# grubby --args="rd.net.dns=dns+tls://<server_ip>#<dns_server_hostname> rd.net.dns-resolve-mode=exclusive rd.net.dns-backend=dnsconfd" --update-kernel=ALLIf on IBM Z, update the boot menu:
# zipl
Verification
Verify your eDNS configuration:
$ dnsconfd statusExpected output:
Running cache service: unbound Resolving mode: exclusive Config present in service: { ".": [ "dns+tls://198.51.100.143#dot.dns.example.com" ] } State of Dnsconfd: RUNNING Info about servers: [ { "address": "198.51.100.143", "port": 853, "name": "dot.dns.example.com", "routing_domains": [ "." ], "search_domains": [], "interface": null, "protocol": "dns+tls", "dnssec": true, "networks": [], "firewall_zone": null } ]Verify that the DNS server is responsive by using
nslookup:$ nslookup <domain_name>Replace the
<domain_name>with the domain that you want to query.
Troubleshooting
Enable detailed logging in
unbound:# unbound-control verbosity 5Review logs for the relevant service:
$ journalctl -xe -u <service_name>Replace
<service_name>withNetworkManager,dnsconfd, orunbound.