DnsToolkit.Net
1.0.0
dotnet add package DnsToolkit.Net --version 1.0.0
NuGet\Install-Package DnsToolkit.Net -Version 1.0.0
<PackageReference Include="DnsToolkit.Net" Version="1.0.0" />
<PackageVersion Include="DnsToolkit.Net" Version="1.0.0" />
<PackageReference Include="DnsToolkit.Net" />
paket add DnsToolkit.Net --version 1.0.0
#r "nuget: DnsToolkit.Net, 1.0.0"
#:package DnsToolkit.Net@1.0.0
#addin nuget:?package=DnsToolkit.Net&version=1.0.0
#tool nuget:?package=DnsToolkit.Net&version=1.0.0
DnsToolkit.Net
A complete managed .Net DNS client and DNS server, DNSSEC and DANE validation and SPF and SenderID validation written in C#.
DnsToolkit.Net is a fork of ARSoft.Tools.Net by Alexander Reinert, which targets netstandard2.0, net8.0 and net10.0 instead of net6.0 only. All credit for the library itself goes to the original author.
Differences to ARSoft.Tools.Net
- Namespaces and the assembly are named
DnsToolkit.Netinstead ofARSoft.Tools.Net - Targets netstandard2.0 (e.g. .NET Framework 4.7.2+), net8.0 and net10.0
TlsClientTransportandTlsServerTransportcan be created with explicit TLS parameters on all targets. The constructors takingSslClientAuthenticationOptionsandSslServerAuthenticationOptionsare available on net8.0 and net10.0 only.- The TLS handshake of
TlsServerTransportis limited by the timeout of the transport. - The DNS over HTTPS server (
HttpsServerTransport,MapDns) is removed, so the package does not require ASP.NET Core. The DNS over HTTPS client is available. - On netstandard2.0:
- Pending socket operations cannot be cancelled. On cancellation the library stops waiting for them and closes the affected connections where possible.
Nuget Package
The library is available on Nuget: https://www.nuget.org/packages/DnsToolkit.Net
Features
Parsing and Validating of SPF/SenderID records:
- RFC 4406 - Sender ID: Authenticating E-Mail
- RFC 4408 - Sender Policy Framework (SPF)
- RFC 7208 - Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1
Encoding and Decoding:
- RFC 4648 - The Base16, Base32, and Base64 Data Encodings
DNS related
- DNS Client
- Client for Link-Local Multicast Name Resolution
- One-shot-client for Multicast DNS
- (Multithreaded) DNS Server
- Supports synchronous as well as asynchronous resolving
- Discovery of local configured resolver dns servers on Windows and Linux
- Different resolvers
- Stub resolver
- Recursive resolver
- DNSSEC validating stub resolver
- DNSSEC validating recursive resolver
- UDP and TCP support
- Full IPv6 support
- DANE validation stream class
- RFC 1034 - Domain Names - Concepts and Facilities
- RFC 1035 - Domain Names – Implementation and Specification
- RFC 1183 - New DNS RR Definitions
- RFC 1348 - DNS NSAP RRs
- RFC 1637 - DNS NSAP Resource Records
- RFC 1706 - DNS NSAP Resource Records
- RFC 1712 - DNS Encoding of Geographical Location
- RFC 1876 - A Means for Expressing Location Information in the Domain Name System
- RFC 1995 - Incremental Zone Transfer
- RFC 1996 - A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)
- RFC 2136 - Dynamic Updates in the Domain Name System
- RFC 2163 - Using the Internet DNS to Distribute MIXER Conformant Global Address Mapping (MCGAM)
- RFC 2168 - Resolution of Uniform Resource Identifiers using the Domain Name System
- RFC 2181 - Clarifications to the DNS Specification
- RFC 2230 - Key Exchange Delegation Record for the DNS
- RFC 2308 - Negative Caching of DNS Queries (DNS NCACHE)
- RFC 2535 - Domain Name System Security Extensions
- RFC 2536 - DSA KEYs and SIGs in the Domain Name System
- RFC 2537 - RSA/MD5 KEYs and SIGs in the Domain Name System
- RFC 2539 - Storage of Diffie-Hellman Keys in the Domain Name System
- RFC 2671 - Extension Mechanisms for DNS (EDNS0)
- RFC 2672 - Non-Terminal DNS Name Redirection
- RFC 2673 - Binary Labels in the Domain Name System
- RFC 2782 - A DNS RR for specifying the location of services (DNS SRV)
- RFC 2845 - Secret Key Transaction Authentication for DNS (TSIG)
- RFC 2915 - The Naming Authority Pointer (NAPTR) DNS Resource Record
- RFC 2930 - Secret Key Establishment for DNS (TKEY RR)
- RFC 2931 - DNS Request and Transaction Signatures (SIG(0)s) (Record parsing only)
- RFC 3110 - RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System
- RFC 3123 - A DNS RR Type for Lists of Address Prefixes (APL RR)
- RFC 3225 - Indicating Resolver Support of DNSSEC
- RFC 3226 - DNSSEC and IPv6 A6 aware server/resolver message size requirements
- RFC 3403 - Dynamic Delegation Discovery System (DDDS)
- RFC 3425 - Obsoleting IQUERY
- RFC 3596 - DNS Extensions to Support IP Version 6
- RFC 3597 - Handling of Unknown DNS Resource Record (RR) Types
- RFC 3658 - Delegation Signer (DS) Resource Record (RR)
- RFC 3755 - Legacy Resolver Compatibility for Delegation Signer (DS)
- RFC 3757 - Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag
- RFC 4025 - A Method for Storing IPsec Keying Material in DNS
- RFC 4033 - DNS Security Introduction and Requirements
- RFC 4034 - Resource Records for the DNS Security Extensions
- RFC 4035 - Protocol Modifications for the DNS Security Extensions
- RFC 4255 - Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
- RFC 4398 - Storing Certificates in the Domain Name System (DNS)
- RFC 4431 - The DNSSEC Lookaside Validation (DLV) DNS Resource Record
- RFC 4509 - Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs)
- RFC 4635 - HMAC SHA TSIG Algorithm Identifiers
- RFC 4701 - A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR)
- RFC 4795 - Link-Local Multicast Name Resolution (LLMNR)
- RFC 5001 - DNS Name Server Identifier (NSID) Option
- RFC 5155 - DNS Security (DNSSEC) Hashed Authenticated Denial of Existence
- RFC 5205 - Host Identity Protocol (HIP) Domain Name System (DNS) Extension
- RFC 5452 - Measures for Making DNS More Resilient against Forged Answers
- RFC 5702 - Use of SHA-2 Algorithms with RSA in DNSKEY and RRSIG Resource Records for DNSSEC
- RFC 5864 - DNS SRV Resource Records for AFS
- RFC 5933 - Use of GOST Signature Algorithms in DNSKEY and RRSIG Resource Records for DNSSEC
- RFC 5936 - DNS Zone Transfer Protocol (AXFR)
- RFC 5966 - DNS Transport over TCP - Implementation Requirements
- RFC 6563 - Moving A6 to Historic Status
- RFC 6594 - Use of the SHA-256 Algorithm with RSA, Digital Signature Algorithm (DSA), and Elliptic Curve DSA (ECDSA) in SSHFP Resource Records
- RFC 6605 - Elliptic Curve Digital Signature Algorithm (DSA) for DNSSEC
- RFC 6672 - DNAME Redirection in the DNS (Record parsing only)
- RFC 6698 - The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA
- RFC 6742 - DNS Resource Records for the Identifier-Locator Network Protocol (ILNP)
- RFC 6762 - Multicast DNS (One-shot queries only)
- RFC 6840 - Clarifications and Implementation Notes for DNS Security (DNSSEC)
- RFC 6844 - DNS Certification Authority Authorization (CAA) Resource Record
- RFC 6891 - Extension Mechanisms for DNS (EDNS(0))
- RFC 6975 - Signaling Cryptographic Algorithm Understanding in DNS Security Extensions (DNSSEC)
- RFC 7043 - Resource Records for EUI-48 and EUI-64 Addresses in the DNS
- RFC 7129 - Authenticated Denial of Existence in the DNS
- RFC 7208 - Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1
- RFC 7218 - Adding Acronyms to Simplify Conversations about DNS-Based Authentication of Named Entities (DANE)
- RFC 7314 - Extension Mechanisms for DNS (EDNS) EXPIRE Option
- RFC 7344 - Automating DNSSEC Delegation Trust Maintenance
- RFC 7477 - Child-to-Parent Synchronization in DNS
- RFC 7479 - Using Ed25519 in SSHFP Resource Records
- RFC 7553 - The Uniform Resource Identifier (URI) DNS Resource Record
- RFC 7766 - DNS Transport over TCP - Implementation Requirements
- RFC 7828 - The edns-tcp-keepalive EDNS0 Option (Option parsing only)
- RFC 7830 - The EDNS(0) Padding Option
- RFC 7858 - Specification for DNS over Transport Layer Security (TLS)
- RFC 7871 - Client Subnet in DNS Queries (Option parsing only)
- RFC 7873 - Domain Name System (DNS) Cookies (Option parsing only)
- RFC 7929 - DNS-Based Authentication of Named Entities (DANE) Bindings for OpenPGP
- RFC 8005 - Host Identity Protocol (HIP) Domain Name System (DNS) Extension
- RFC 8080 - Edwards-Curve Digital Security Algorithm (EdDSA) for DNSSEC
- RFC 8162 - Using Secure DNS to Associate Certificates with Domain Names for S/MIME
- RFC 8427 - Representing DNS Messages in JSON
- RFC 8484 - DNS Queries over HTTPS (DoH) (client only)
- RFC 8749 - Moving DNSSEC Lookaside Validation (DLV) to Historic Status
- RFC 8777 - DNS Reverse IP Automatic Multicast Tunneling (AMT) Discovery
- RFC 8914 - Extended DNS Errors
- RFC 8945 - Secret Key Transaction Authentication for DNS (TSIG)
- RFC 8976 - Message Digest for DNS Zones
- RFC 9156 - DNS Query Name Minimisation to Improve Privacy (recursive resolvers, enabled by default)
- RFC 9210 - DNS Transport over TCP - Operational Requirements
- RFC 9373 - EdDSA Value for IPSECKEY
- RFC 9460 - Service Binding and Parameter Specification via the DNS (SVCB and HTTPS RRs) (Record parsing only)
- RFC 9461 - Service Binding Mapping for DNS Servers (dohpath parameter)
- RFC 9540 - Discovery of Oblivious Services via Service Binding Records (ohttp parameter)
- RFC 9824 - Compact Denial of Existence in DNSSEC
- draft-vixie-dnsext-dns0x20 - Use of Bit 0x20 in DNS Labels to Improve Transaction Identity
- draft-sekar-dns-llq - DNS Long-Lived Queries
- draft-sekar-dns-ul - Dynamic DNS Update Leases
- draft-cheshire-edns0-owner-option - EDNS0 OWNER Option
License
The library is released under Apache License 2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- BouncyCastle.Cryptography (>= 2.7.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.2)
- Microsoft.Extensions.Caching.Memory (>= 10.0.2)
- System.IO.Pipelines (>= 10.0.2)
- System.Memory (>= 4.6.3)
- System.Text.Json (>= 8.0.5)
- System.Threading.Channels (>= 10.0.2)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
net10.0
- BouncyCastle.Cryptography (>= 2.7.0)
- Microsoft.Extensions.Caching.Memory (>= 10.0.2)
-
net8.0
- BouncyCastle.Cryptography (>= 2.7.0)
- Microsoft.Extensions.Caching.Memory (>= 8.0.1)
- System.IO.Pipelines (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 85 | 10/12/2026 |
| 1.0.0-preview.3 | 52 | 10/12/2026 |
| 1.0.0-preview.2 | 62 | 10/11/2026 |