Debugging Domain Name System (DNS) configurations in Linux has traditionally relied on utilities such as dig, nslookup, or host. While these legacy tools are excellent for basic address resolution and testing authoritative name servers, they do not perform full client-side DNSSEC (DNS Security Extensions) cryptographic validation. When troubleshooting DNS spoofing protections, signed resource records, or broken trust anchors, administrators need a tool built specifically to validate the cryptographic chain of trust.
The delv (Domain Entity Lookup & Validation) command-line utility, maintained by the Internet Systems Consortium (ISC) alongside BIND 9, is designed specifically for this purpose. Unlike dig +dnssec, which simply queries DNSSEC records and asks the upstream resolver to validate them, delv contains its own internal validating resolver. It traces the cryptographic chain from root trust anchors down to the target hostname, independently verifying every digital signature. In this guide, we explore how to install and use delv in Linux to inspect and troubleshoot DNSSEC validation.
Why Use delv Instead of dig?
Understanding the distinction between delv and dig is crucial for network engineers and system administrators:
- Independent Resolver Engine:
digasks your local upstream DNS server (e.g.8.8.8.8or your router) to perform validation and looks for thead(Authenticated Data) flag.delvindependently builds the validation graph locally using built-in root keys. - Iterative Signature Checking:
delvinspectsRRSIG(Resource Record Signature),DNSKEY, andDS(Delegation Signer) records across each parent-child zone boundary (from root.to TLD.comdown to the domain). - Clear Cryptographic Diagnostics: If a signature has expired, uses an unsupported algorithm, or fails hash verification,
delvoutputs the exact failure point in plain language.
Installing delv on Linux Distributions
The delv binary is packaged alongside the standard BIND utilities. You can install it on your distribution using the following commands:
Ubuntu, Debian, and Linux Mint:
sudo apt update
sudo apt install bind9-dnsutils
RHEL, CentOS, Rocky Linux, and Fedora:
sudo dnf install bind-utils
Arch Linux:
sudo pacman -S bind
Once installed, verify the binary is accessible by checking its version:
delv -v
How to Validate a Domain with delv
To perform basic DNSSEC resolution and signature validation for a domain, simply run delv followed by the hostname:
delv digitash.com
If the domain has valid DNSSEC signing in place, delv will resolve the A record and display a validation status line:
; fully validated
digitash.com. 300 IN A 104.21.54.120
digitash.com. 300 IN A 172.67.182.235
digitash.com. 300 IN RRSIG A 13 2 300 20261110000000 20261103000000 34521 digitash.com. [signature_data]
Notice the comment line reading ; fully validated. This indicates that every cryptographic key and digital signature from the ICANN root zone down to the domain’s individual A records was successfully proven authentic.
Understanding delv Validation States
When querying different domains, delv will report one of four primary cryptographic states in its preamble:
- fully validated: The zone is signed, the delegation signer (DS) record is published in the parent zone, and all resource record signatures (RRSIG) match valid DNSKEYs.
- unsigned: The domain is not configured with DNSSEC. The parent zone has proven via an authenticated NSEC/NSEC3 record that no DS record exists for this child domain.
- insecure: Similar to unsigned; DNSSEC cannot be validated because an ancestor zone does not support DNSSEC or delegates without proof.
- resolution failed / validation failure: A critical security error. Either a signature has expired, the DS hash does not match the active DNSKEY, or packets were altered in transit.
How to Trace the Full Cryptographic Chain of Trust
To see every step delv takes to verify keys, add the +vtrace (verbose trace) flag:
delv cloudflare.com +vtrace
This command outputs an informative visual trace showing:
- Fetching the root
.DNSKEY and verifying against the built-in trust anchor. - Querying the
.comTLD authoritative servers for the delegation signer (DS) record. - Validating the
.comDNSKEY against the root DS signature. - Fetching the domain’s own DNSKEY and matching its fingerprint against the TLD’s DS record.
- Validating the domain’s
Arecord against itsRRSIGsignature.
Testing Query Against a Specific DNS Resolver
By default, delv reads your local system resolvers listed in /etc/resolv.conf. To test against an external public DNS server directly (such as Quad9 or Cloudflare DNS), prefix the server address with @:
delv @9.9.9.9 example.com A
You can also query specific record types such as MX, TXT, or AAAA:
delv @1.1.1.1 example.com MX +vtrace
Bypassing Validation for Comparison
If you suspect a DNS issue is purely related to a broken DNSSEC signature while the underlying records remain intact, you can disable signature validation using the +cd (Checking Disabled) flag:
delv example.com +cd
If the query succeeds with +cd but fails with standard delv, you have definitive proof that DNSSEC misconfiguration (such as an expired key rollover or mismatched DS record at the registrar) is breaking resolution.