Skip to main content
Background Image

DNSDiag 2.9.0 Release

·403 words·2 mins·
Babak Farrokhi
Author
Babak Farrokhi
Engineering and Technical Operations Leader

I’m pleased to announce the release of DNSDiag version 2.9.0. This update adds support for modern DNS protocols (DoQ and DoH3), introduces NSID support for anycast tracing, and includes significant code quality improvements.

Key Features
#

DNS over QUIC and HTTP/3

dnseval now supports DoQ (DNS over QUIC) and DoH3 (DNS over HTTP/3) protocols, allowing you to benchmark resolvers using these newer encrypted DNS transports alongside traditional DoT and DoH.

NSID Support in dnstraceroute

Added --nsid flag to dnstraceroute for identifying which anycast instance you’re reaching. This is useful when debugging routing to distributed DNS infrastructure.

# ./dnstraceroute.py --nsid -s 9.9.9.9 geocities.com
dnstraceroute.py DNS: 9.9.9.9:53, hostname: geocities.com, rdatatype: A
1       169.254.169.254 (169.254.169.254) 1.160 ms
2       100.100.200.1 (100.100.200.1) 1.728 ms
3       10.72.2.93 (10.72.2.93) 2.568 ms
4       10.72.4.17 (10.72.4.17) 2.330 ms
5       10.72.4.1 (10.72.4.1) 31.262 ms
6       amsix.pch.net (80.249.208.250) 3.048 ms
7       dns9.quad9.net (9.9.9.9) [NSID: res714.ams] 10.000 ms

DNS Cookie Support

The --cookie flag in dnsping displays DNS cookies (RFC 7873) for enhanced security and cache optimization testing.

# ./dnsping.py -c 2 --cookie -s anyns.pch.net quad9.net
dnsping.py DNS: anyns.pch.net:53, hostname: quad9.net, proto: UDP, class: IN, type: A, flags: [RD]
82 bytes from anyns.pch.net: seq=1 time=30.552 ms NOERROR [COOKIE:27f609c017bb2ec4ea70de5c68eec3fc39f6a53ee49c55f8]
82 bytes from anyns.pch.net: seq=2 time=24.794 ms NOERROR [COOKIE:719631dd9fcce722d3ac859b68eec3fd2e5430b5c8a7f8cf]

--- anyns.pch.net dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=24.794 ms, avg=27.673 ms, max=30.552 ms, stddev=4.072 ms

Cache Warmup

dnseval now includes cache warmup functionality to ensure more equitable comparisons between DNS resolvers by eliminating cold cache effects from measurements.

EDNS Flags Display

dnseval output now includes EDNS flags, providing better visibility into DNS server capabilities and behavior.

Python 3.14 Support

DNSDiag now supports Python 3.14 alongside existing Python versions.

Code Quality Improvements
#

This release includes substantial refactoring following PEP 8 conventions with comprehensive type hints throughout the codebase. CLI error handling and parameter validation have been improved across all tools.

Bug Fixes
#

This release fixes several issues including IPv4/IPv6 address family selection (now defaults to AF_UNSPEC for automatic handling), DoH3 feature detection, Windows hostname resolution with getaddrinfo(), IPv4-mapped IPv6 address handling, DNS COOKIE display in verbose mode, and TCP connection termination.

Installation
#

DNSDiag 2.9.0 is available on the GitHub release page, or can be installed via:

pip install dnsdiag

or

uv tool install dnsdiag

To upgrade an existing installation:

pip install --upgrade dnsdiag

or

uv tool upgrade dnsdiag

Please report any bugs or feature requests through the GitHub issue tracker.