Skip to content

NLnetLabs/dnsi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dnsi – A tool to investigate the DNS

dnsi is a command line tool to investigate various aspects of the Domain Name System (DNS). It is developed as part of the domain project and has our long-term commitment.

dnsi is currently in an early state and will expand over the coming months. Please don't hesitate to contribute by opening a pull-request, or submit a feature request by opening a GitHub issue, or by reaching out via Mastodon or email.

The tool contains a number of commands. Currently, these are:

  • dnsi query sends a query to a name server or the system’s default resolver,
  • dnsi lookup looks up the IP addresses for domain names or the domain names for IP addresses,
  • dnsi help displays the man page for any command.

There are many options for each command. To learn more about them, you can use --help for a complete overview, or -h for a summary, e.g. dnsi query --help.

Binary Packages

Getting started with dnsi is really easy by installing a binary package for either Debian and Ubuntu or for Red Hat Enterprise Linux (RHEL) and compatible systems such as Rocky Linux.

You can also build dnsi from the source code using Cargo, Rust's build system and package manager. Refer to the building section to get started.

Debian

To install the dnsi package, you need the 64-bit version of one of these Debian versions:

  • Debian Bookworm 12
  • Debian Bullseye 11

Packages for the amd64 and x86_64 architectures are available for all listed versions. In addition, we offer armhf architecture packages for Debian/Raspbian Bullseye, and arm64 for Buster.

First update the apt package index:

sudo apt update

Then install packages to allow apt to use a repository over HTTPS:

sudo apt install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

Add the GPG key from NLnet Labs:

curl -fsSL https://packages.nlnetlabs.nl/aptkey.asc | sudo gpg --dearmor -o /usr/share/keyrings/nlnetlabs-archive-keyring.gpg

Now, use the following command to set up the main repository:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/nlnetlabs-archive-keyring.gpg] https://packages.nlnetlabs.nl/linux/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nlnetlabs.list > /dev/null

Update the apt package index once more:

sudo apt update

You can now install dnsi with:

sudo apt install dnsi

Ubuntu

To install a dnsi package, you need the 64-bit version of one of these Ubuntu versions:

  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Focal 20.04 (LTS)

Packages are available for the amd64/x86_64 architecture only.

First update the apt package index:

sudo apt update

Then install packages to allow apt to use a repository over HTTPS:

sudo apt install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

Add the GPG key from NLnet Labs:

curl -fsSL https://packages.nlnetlabs.nl/aptkey.asc | sudo gpg --dearmor -o /usr/share/keyrings/nlnetlabs-archive-keyring.gpg

Now, use the following command to set up the main repository:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/nlnetlabs-archive-keyring.gpg] https://packages.nlnetlabs.nl/linux/ubuntu \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nlnetlabs.list > /dev/null

Update the apt package index once more:

sudo apt update

You can now install dnsi with:

sudo apt install dnsi

RHEL and compatible systems

To install the dnsi package, you need Red Hat Enterprise Linux (RHEL) 8 or 9, or compatible operating system such as Rocky Linux. Packages are available for the amd64/x86_64 architecture only.

First create a file named /etc/yum.repos.d/nlnetlabs.repo, enter this configuration and save it:

[nlnetlabs]
name=NLnet Labs
baseurl=https://packages.nlnetlabs.nl/linux/centos/$releasever/main/$basearch
enabled=1

Add the GPG key from NLnet Labs:

sudo rpm --import https://packages.nlnetlabs.nl/aptkey.asc

You can now install dnsi with:

sudo yum install -y dnsi

Building

dnsi is written in Rust. The Rust compiler runs on, and compiles to, a great number of platforms, though not all of them are equally supported. The official Rust Platform Support page provides an overview of the various support levels.

Installing Rust

While some system distributions include Rust as system packages, dnsi relies on a relatively new version of Rust, currently 1.78 or newer. We therefore suggest to use the canonical Rust installation via a tool called rustup.

Assuming you already have curl installed, you can install rustup and Rust by simply entering:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Alternatively, visit the Rust website for other installation methods. Also refer to this page for notes on updating Rust, and configuring the PATH environment variable.

Installing and updating dnsi

After successfully installing Rust, installing dnsi is as simple as entering:

cargo install --locked dnsi

If you want to update to the latest version of dnsi, it’s recommended to update Rust itself as well, using:

rustup update

Use the --force option to overwrite an existing version with the latest dnsi release:

cargo install --locked --force dnsi

If you want to install a specific version of dnsi using Cargo, explicitly use the --version option. If needed, use the --force option to overwrite an existing version:

cargo install --locked --force dnsi --version 0.1.0