Add documentation about dnst-ldnsutils package and update man pages (#165)

* Update man pages

* Fix typo

* Note where differences are documented

* Fix cargo install instruction

* Document ldns emulation mode on RtD index page

* Document dnst-ldnsutils package installation
This commit is contained in:
Jannik Peters
2026-03-13 15:42:57 +01:00
committed by GitHub
parent 01e7fab6d2
commit 5b463539b7
18 changed files with 51 additions and 21 deletions
+5 -5
View File
@@ -7,7 +7,7 @@ dnst
:: Domain Name System Tools - a toolset to assist DNS operators with zone and nameserver maintenance.
dnst is intended to offer both:
- a supported drop-in (see below) replacement and upgrade path for a subset of the popular NLnet Labs LDNS example tools, re-implemented in the Rust prpgramming language powered by the NLnet Labs [domain](https://github.com/NLnetLabs/domain) Rust library
- a supported drop-in (see below) replacement and upgrade path for a subset of the popular NLnet Labs LDNS example tools, re-implemented in the Rust programming language powered by the NLnet Labs [domain](https://github.com/NLnetLabs/domain) Rust library
- an evolving toolbox of commands to aid DNS operators in the maintenance and operation of their zones and nameservers.
dnst is not intended perform dig and drill-like functions; for this NLnet Labs offers [dnsi](https://github.com/NLnetLabs/dnsi).
@@ -23,9 +23,9 @@ dnst supports two modes of operation:
- key2ds
- keygen
- nsec3hash
- signzone
- notify
- nsec3hash
- signzone
- notify
- update
## Installation and documentation
@@ -34,7 +34,7 @@ See https://dnst.docs.nlnetlabs.nl/.
## Compatibility with supported LDNS examples
ldns mode allows for one-to-one replacement of the ldns example utilities by dnst, without having to change existing scripts. In this mode, the supported ldns examples are very closely emulated by dnst, though there are some exceptions. Please see the documentation for details.
ldns mode allows for one-to-one replacement of the ldns example utilities by dnst, without having to change existing scripts. In this mode, the supported ldns examples are very closely emulated by dnst, though there are some exceptions. Please see the documentation for details (differences are noted in the relevant man page).
Because of a radically different achitechture and programming language, please note that the domain library is not intended as a drop-in replacement for the ldns library.
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-KEY2DS" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-KEY2DS" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-key2ds \- Generate DS RRs from the DNSKEYs in a keyfile
.SH SYNOPSIS
+1 -1
View File
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-KEYGEN" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-KEYGEN" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-keygen \- Generate a new key pair for a domain name
.SH SYNOPSIS
+2 -2
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-KEYSET" "1" "Mar 02, 2026" "0.1.1-dev" "dnst"
.TH "DNST-KEYSET" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-keyset \- Manage DNSSEC signing keys for a domain
.SH SYNOPSIS
@@ -35,7 +35,7 @@ dnst-keyset \- Manage DNSSEC signing keys for a domain
\fBdnst keyset\fP \fB\-c <CONF>\fP \fB[OPTIONS]\fP \fB<COMMAND>\fP \fB[ARGS]\fP
.SH DESCRIPTION
.sp
The \fBkeyset\fP subcommand manages a set of DNSSEC (\fI\%RFC 9364\fP) signing keys.
The \fBkeyset\fP subcommand manages a set of DNSSEC (\X'tty: link https://www.rfc-editor.org/rfc/rfc9364'\fI\%RFC 9364\fP\X'tty: link') signing keys.
This subcommand is meant to be part of a DNSSEC signing solution.
The \fBkeyset\fP subcommand manages signing keys and generates a signed DNSKEY RRset.
A separate zone signer (not part of dnst) is expected to use the zone
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-NOTIFY" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-NOTIFY" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-notify \- Send a NOTIFY message to a list of name servers
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-NSEC3-HASH" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-NSEC3-HASH" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-nsec3-hash \- Print out the NSEC3 hash of a domain name
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-SIGNZONE" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-SIGNZONE" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-signzone \- Sign the zone with the given key(s)
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST-UPDATE" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST-UPDATE" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst-update \- Send a dynamic update packet to update an IP (or delete all existing IPs) for a domain name
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNST" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "DNST" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
dnst \- DNS Management Tools
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-KEY2DS" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-KEY2DS" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-key2ds \- Generate DS RRs from the DNSKEYs in a keyfile
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-KEYGEN" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-KEYGEN" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-keygen \- Generate a new key pair for a domain name
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-NOTIFY" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-NOTIFY" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-notify \- Send a NOTIFY message to a list of name servers
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-NSEC3-HASH" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-NSEC3-HASH" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-nsec3-hash \- Print out the NSEC3 hash of a domain name
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-SIGNZONE" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-SIGNZONE" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-signzone \- Sign the zone with the given key(s)
.SH SYNOPSIS
+1 -1
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "LDNS-UPDATE" "1" "Feb 25, 2026" "0.1.1-dev" "dnst"
.TH "LDNS-UPDATE" "1" "Mar 05, 2026" "0.2.0-alpha1" "dnst"
.SH NAME
ldns-update \- Send a dynamic update packet to update an IP (or delete all existing IPs) for a domain name
.SH SYNOPSIS
+1 -1
View File
@@ -94,7 +94,7 @@ specific branch, include the ``--branch`` option as well:
.. code-block:: text
cargo install --git https://github.com/NLnetLabs/dnst.git --branch main
cargo install dnst --bin dnst --git https://github.com/NLnetLabs/dnst.git --branch main
.. Seealso:: For more installation options refer to the `Cargo book
<https://doc.rust-lang.org/cargo/commands/cargo-install.html#install-options>`_.
+18
View File
@@ -8,6 +8,24 @@ coming soon.
It depends on OpenSSL for its cryptography related functions.
**dnst** supports two modes of operation:
* dnst mode: the default.
* ldns emulation mode: activated by invoking dnst using the name of a supported ldns example, e.g. ldns-keygen.
**dnst** currently offers drop-in replacement of the following ldns examples:
* key2ds
* keygen
* nsec3hash
* signzone
* notify
* update
In ldns emulation mode, the supported ldns examples are very closely emulated
by dnst, though there are some exceptions. Differences are noted in the
relevant man pages of individual commands.
.. toctree::
:maxdepth: 2
:hidden:
+12
View File
@@ -370,3 +370,15 @@ a specific version, if needed.
.. code-block:: text
sudo docker run <your usual arguments> nlnetlabs/dnst:v0.1.1-rc1
Replacing LDNS with dnst
------------------------
To replace the installed ldns examples with dnst in ldns emulation mode, we
provide the ``dnst-ldnsutils`` package. When installing this package, ``dnst``
will automatically get installed alongside it, existing ``ldns-utils`` will be
uninstalled, and supported ldns examples get replaced with dnst.
To install ``dnst-ldnsutils``, simply follow the steps `above <Binary
Packages_>`_ to install ``dnst``, but install ``dnst-ldnsutils`` (e.g. ``sudo
apt install dnst-ldnsutils``) instead of ``dnst``.