macOS
brew install ldnslocal Homebrew formula metadata
sudo port install ldnsMacPorts ports tree · net/ldns/Portfile · source: api.github.com
brew
DNS library written in C. Version 1.9.2 via Homebrew; verified 2026-06-22.
install
brew install ldnslocal Homebrew formula metadata
sudo port install ldnsMacPorts ports tree · net/ldns/Portfile · source: api.github.com
sudo apk add drillAlpine Linux edge package indexes · drill · source: dl-cdn.alpinelinux.org
sudo apt install ldnsutilsDebian stable package indexes · ldnsutils · source: deb.debian.org
sudo dnf install ldnsFedora Rawhide package metadata · ldns · source: dl.fedoraproject.org
nix profile install nixpkgs#ldnsnixpkgs package indexes · pkgs/by-name/ld/ldns/package.nix · source: api.github.com
sudo pacman -S ldnsArch Linux sync databases · ldns · source: geo.mirror.pkgbuild.com
sudo zypper install ldnsopenSUSE Tumbleweed package metadata · ldns · source: download.opensuse.org
overview
DNS library written in C
history
ldns is NLnet Labs' C library for DNS and DNSSEC programming, accompanied by command-line tools such as drill and many DNSSEC utilities. NLnet Labs describes its goal as simplifying DNS programming in C while supporting low-level DNS and DNSSEC operations.
The project appeared in 2005 during the period when DNSSEC tooling was maturing. Its changelog records a first usable 0.50 release in May 2005, an online repository in June 2005, and a 1.0.0 release in October 2005 that added drill to ldns, zonefile parsing, an experimental signer, and a BSD license.
ldns evolved into both a library and a toolbox. Drill, originally important enough that documentation says part of ldns was derived from it, became included in ldns releases from version 1.0.0 onward. The examples directory grew into a collection of practical DNSSEC and zone tools, including signers, validators, key helpers, and packet utilities.
Later releases tracked DNS standards work. The changelog records additions such as NSEC3-related utilities, DANE support in 2012, SVCB/HTTPS support in the 1.8 series, and newer resource-record handling in the 1.9 series. NLnet Labs stated that ldns entered maintenance mode in 2020, with ongoing fixes and occasional experimental use rather than broad feature expansion.
ldns gained adoption among DNS implementers, operators, and package maintainers because it offered a C API plus ready-to-run diagnostic tools. Distribution packaging reflects that split: some systems package the tools as ldnsutils or drill while others package the library and tools together.
The project also became a bridge between DNS research and production packaging. NLnet Labs explicitly notes use for proof-of-concept work around Internet Drafts, while the maintained command-line tools made it useful for operators who needed DNSSEC-aware zone inspection, signing, verification, and query tracing.
Developers use the library through ldns structures such as resource records, packets, zones, and resolvers. Command-line users most often encounter drill as a dig-like DNS inspection tool and the ldns-* utilities for DNSSEC key, zone, signing, walking, comparison, and verification workflows.
The documentation stresses OpenSSL-backed cryptographic features, optional builds without OpenSSL, IPv4/IPv6 support, TSIG, DNSSEC signing and verification, manual pages, and API documentation.
ldns matters to package nerds because it is a compact DNSSEC lab in package form: a C library, a resolver/query tool, many small executables, optional crypto features, Python bindings, and a long changelog tied to RFC and draft support. It is also a good example of an upstream declaring a maintenance-mode successor path while keeping old Unix packages useful.
NLnet Labs names the Rust domain library as the natural successor to the ldns library, dnst as drop-in replacements for common example utilities, and dnsi as a reimagined DNS inspection tool. That makes ldns a legacy-but-alive package with clear lineage into newer NLnet Labs DNS tooling.
security posture
library-like package without higher-risk signals.
green risk · low confidence · appliance
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
ldns-chaos | cli | global executable | |
ldns-compare-zones | cli | global executable | |
ldns-config | cli | global executable | |
ldns-dane | cli | global executable | |
ldns-dpa | cli | global executable | |
ldns-gen-zone | cli | global executable | |
ldns-key2ds | cli | global executable | |
ldns-keyfetcher | cli | global executable | |
ldns-keygen | cli | global executable | |
ldns-mx | cli | global executable | |
ldns-notify | cli | global executable | |
ldns-nsec3-hash | cli | global executable | |
ldns-read-zone | cli | global executable | |
ldns-resolver | cli | global executable | |
ldns-revoke | cli | global executable | |
ldns-rrsig | cli | global executable | |
ldns-signzone | cli | global executable | |
ldns-test-edns | cli | global executable | |
ldns-testns | cli | global executable | |
ldns-update | cli | global executable | |
ldns-verify-zone | cli | global executable | |
ldns-version | cli | global executable | |
ldns-walk | cli | global executable | |
ldns-zcat | cli | global executable | |
ldns-zsplit | cli | global executable | |
ldnsd | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://nlnetlabs.nl/projects/ldns/
install metadata
| Package key | brew:ldns |
|---|---|
| Version | 1.9.2 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/ldns |
| Homepage | https://nlnetlabs.nl/projects/ldns/ |
| Repository | https://github.com/NLnetLabs/ldns |
| Upstream docs | https://nlnetlabs.nl/documentation/ldns |
| License | BSD-3-Clause |
| Source archive | https://nlnetlabs.nl/downloads/ldns/ldns-1.9.2.tar.gz |
| Last updated | 2026-06-22T14:05:09-07:00 |
| Pulse | updated |
| Dependencies | openssl@3, python@3.14 |
| Build dependencies | swig |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | ldns |
| Version Scheme | 0 |
| Revision | 0 |
| Conflicts With |
|
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
ldnsutils 1.8.4-2+b1
ldns library for DNS programming - tools (includes drill tool)
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install ldnsutilslibldns-dev 1.8.4-2+b1
ldns library for DNS programming - development files
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install libldns-devlibldns3t64 1.8.4-2+b1
ldns library for DNS programming - shared library
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install libldns3t64python3-ldns 1.8.4-2+b1
ldns library for DNS programming - Python3 bindings
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install python3-ldnsldns
nix profile install nixpkgs#ldnsldnsutils 1.8.3-2build1
ldns library for DNS programming - tools (includes drill tool)
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install ldnsutilslibldns-dev 1.8.3-2build1
ldns library for DNS programming - development files
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install libldns-devlibldns3t64 1.8.3-2build1
ldns library for DNS programming - shared library
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install libldns3t64python3-ldns 1.8.3-2build1
ldns library for DNS programming - Python3 bindings
https://www.nlnetlabs.nl/projects/ldns/about/
sudo apt install python3-ldnsdrill 1.8.4-r1
DNS(SEC) query tool ala dig
https://nlnetlabs.nl/projects/ldns/
sudo apk add drillldns 1.8.4-r1
Lowlevel DNS(SEC) library
https://nlnetlabs.nl/projects/ldns/
sudo apk add ldnsldns-dev 1.8.4-r1
Lowlevel DNS(SEC) library (development files)
https://nlnetlabs.nl/projects/ldns/
sudo apk add ldns-devldns-doc 1.8.4-r1
Lowlevel DNS(SEC) library (documentation)
https://nlnetlabs.nl/projects/ldns/
sudo apk add ldns-docldns-static 1.8.4-r1
Lowlevel DNS(SEC) library (static library)
https://nlnetlabs.nl/projects/ldns/
sudo apk add ldns-staticldns-tools 1.8.4-r1
ldns example tools
https://nlnetlabs.nl/projects/ldns/
sudo apk add ldns-toolsldns 1.9.0-8.fc45
Low-level DNS(SEC) library with API
https://www.nlnetlabs.nl/ldns/
sudo dnf install ldnssource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.