agnostic-dns is an agnostic abstraction layer over hickory-dns.
Introduction
agnostic-dns provides runtime-agnostic DNS resolution built on hickory-dns. It supports multiple transport protocols (UDP, TCP, DoT, DoH, DoQ, DoH3) and DNSSEC validation - all working seamlessly across tokio, and smol runtimes.
Key Features
- Multiple Transport Protocols:
- DNS over UDP/TCP (standard)
- DNS over TLS (DoT)
- DNS over HTTPS (DoH)
- DNS over QUIC (DoQ)
- DNS over HTTP/3 (DoH3)
- DNSSEC Support: Validate DNS responses with ring or aws-lc-rs
- Runtime Agnostic: Works with tokio, and smol
- Flexible Configuration: Use system settings or custom resolvers
- Comprehensive: Built on the mature hickory-dns library
Supported Runtimes
- tokio - Enable with
features = ["tokio"] - smol - Enable with
features = ["smol"]
Installation
[]
= "0.4"
-
tokio= { = "0.4", = ["tokio"] } -
smol= { = "0.4", = ["smol"] }
Feature Matrix
| Feature | Description | Enable With |
|---|---|---|
| Runtimes | ||
tokio |
Tokio runtime support | features = ["tokio"] |
smol |
Smol runtime support | features = ["smol"] |
| Transport Protocols | ||
tls-ring |
DNS over TLS (ring crypto) | features = ["tls-ring"] |
tls-aws-lc-rs |
DNS over TLS (aws-lc-rs crypto) | features = ["tls-aws-lc-rs"] |
https-ring |
DNS over HTTPS (ring crypto) | features = ["https-ring"] |
https-aws-lc-rs |
DNS over HTTPS (aws-lc-rs crypto) | features = ["https-aws-lc-rs"] |
quic-ring |
DNS over QUIC (ring crypto) | features = ["quic-ring"] |
quic-aws-lc-rs |
DNS over QUIC (aws-lc-rs crypto) | features = ["quic-aws-lc-rs"] |
h3-ring |
DNS over HTTP/3 (ring crypto) | features = ["h3-ring"] |
h3-aws-lc-rs |
DNS over HTTP/3 (aws-lc-rs crypto) | features = ["h3-aws-lc-rs"] |
| Certificates | ||
webpki-roots |
Use webpki root certificates | features = ["webpki-roots"] |
rustls-platform-verifier |
Use platform certificate verifier | features = ["rustls-platform-verifier"] |
| DNSSEC | ||
dnssec-ring |
DNSSEC with ring crypto | features = ["dnssec-ring"] |
dnssec-aws-lc-rs |
DNSSEC with aws-lc-rs crypto | features = ["dnssec-aws-lc-rs"] |
| Other | ||
tracing |
Distributed tracing support | features = ["tracing"] |
License
agnostic-dns is under the terms of both the MIT license and the
Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT for details.
Copyright (c) 2025 Al Liu.