s6-dns - a complete DNS client suite
Keywords: s6-dns s6dns s6 DNS resolution unix linux laurent bercot ska skarnet

Software
skarnet.org

# s6-dns

## What is it ?

s6-dns is a suite of DNS client programs and libraries for Unix systems, as an alternative to the BIND, djbdns or other DNS clients.

s6-dns may include its own series of DNS caches and servers at some point in the future.

The `s6-` prefix is slightly misleading, and probably a naming mistake. This package is not, stricto sensu, a part of the s6 ecosystem, and it is nowhere near a requirement for a s6-based installation. However, it is a requirement for s6-networking, which provides useful networking utilities often used with s6, so keeping the prefix makes some kind of sense; you can see s6-dns as an extension to the s6 ecosystem.

- Why a separate client library ? Why not just use `getaddrinfo()` ?
- What is wrong with libresolv, BIND's client library ?

## Installation

### Requirements

- A POSIX-compliant system with a standard C development environment
- GNU make, version 3.81 or later
- skalibs version 2.15.0.0 or later. It's a build-time requirement. It's also a run-time requirement if you link against the shared version of the skalibs library.

### Licensing

s6-dns is free software. It is available under the ISC license.

### Download

- The current released version of s6-dns is 2.4.1.2. You can access its checksum here.
- Alternatively, you can checkout a copy of the s6-dns git repository:

       git clone git://git.skarnet.org/s6-dns

- There's also a Codeberg mirror, or a GitHub mirror, or a SourceHut mirror of the s6-dns git repository.

### Compilation

- See the enclosed INSTALL file for installation details.

### Upgrade notes

- This page lists the differences to be aware of between the previous versions of s6-dns and the current one.

## Reference

### Commands

All these commands exit 111 if they encounter a temporary error or hardware error, and 100 if they encounter a permanent error - such as a misuse. Short-lived commands exit 0 on success. Other exit codes are documented in the relevant page.

#### Command-line DNS clients programs

- The `s6-dnsip` program
- The `s6-dnsip4` program
- The `s6-dnsip6` program
- The `s6-dnsname` program
- The `s6-dnsmx` program
- The `s6-dnsns` program
- The `s6-dnssoa` program
- The `s6-dnssrv` program
- The `s6-dnstxt` program

#### Filtering tools

- The `s6-dnsip4-filter` program
- The `s6-dnsip6-filter` program
- The `s6-dnsname-filter` program

#### Command-line qualification

- The `s6-dnsqualify` program

#### DNS analysis and debug tools

- The `s6-dnsq` program
- The `s6-dnsqr` program

#### Miscellaneous utilities

- The `s6-randomip` program
- The `s6-dns-hosts-compile` program

### Libraries

#### Protocol implementation and synchronous resolution

- The `s6dns` library interface

#### Asynchronous resolution

- The `skadns` library interface

## Related resources

### s6-dns discussion

- `s6-dns` is discussed on the skaware mailing-list.
- It can also be discussed on the cr.yp.to dns mailing-list.

### Similar work

- BIND is the most widely used DNS software suite on the Internet. It's also arguably the most buggy, convoluted and impossible to understand.
- djbdns is DJB's DNS suite. It works very well, but is unfortunately unmaintained by the author. s6-dns follows the same design principles.