agnostic-dns

Crates.ioagnostic-dns
lib.rsagnostic-dns
version0.3.0
created_at2025-01-27 03:15:52.635759+00
updated_at2025-11-04 03:05:12.33424+00
description`agnostic-dns` is an agnostic abstraction layer over `hickory-dns`.
homepagehttps://github.com/al8n/agnostic
repositoryhttps://github.com/al8n/agnostic
max_upload_size
id1531958
size80,472
Al Liu (al8n)

documentation

README

Agnostic DNS

agnostic-dns is an agnostic abstraction layer over hickory-dns.

github LoC Build codecov

docs.rs crates.io crates.io license

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 OpenSSL or ring
  • 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

[dependencies]
agnostic-dns = "0.3"
  • tokio

    agnostic-dns = { version = "0.3", features = ["tokio"] }
    
  • smol

    agnostic-dns = { version = "0.3", features = ["smol"] }
    

Feature Matrix

Feature Description Enable With
Core
dns Basic DNS resolution Default
Runtimes
tokio Tokio runtime support features = ["tokio"]
smol Smol runtime support features = ["smol"]
Transport Protocols
dns-over-rustls DNS over TLS with rustls features = ["dns-over-rustls"]
dns-over-openssl DNS over TLS with OpenSSL features = ["dns-over-openssl"]
dns-over-native-tls DNS over TLS with native-tls features = ["dns-over-native-tls"]
dns-over-https-rustls DNS over HTTPS with rustls features = ["dns-over-https-rustls"]
dns-over-quic DNS over QUIC (RFC 9250) features = ["dns-over-quic"]
dns-over-h3 DNS over HTTP/3 features = ["dns-over-h3"]
Certificates
dns-webpki-roots Use webpki root certificates features = ["dns-webpki-roots"]
dns-native-certs Use OS native certificates features = ["dns-native-certs"]
DNSSEC
dnssec Basic DNSSEC validation features = ["dnssec"]
dnssec-openssl DNSSEC with OpenSSL crypto features = ["dnssec-openssl"]
dnssec-ring DNSSEC with ring crypto features = ["dnssec-ring"]
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.

Commit count: 173

cargo fmt