v1.0.0
First public release of DNS IP Collector, a Technitium DNS Server app that intercepts every incoming DNS request on every transport protocol and maintains a self-refreshing list of unique clients in the ip:hash format.
Highlights
- All protocols. Uses the official
IDnsRequestControllerinterface, which the DNS server calls for every request before processing: UDP, TCP, DoT (Tls), DoH and DoH3 (Https), DoQ (Quic), plus the PROXY protocol variants. - IPv4 and IPv6, including
::ffff:a.b.c.dunwrapping, link local scope id handling and optional subnet aggregation (/24,/64, ...). - Expiration with refresh. A new client is stored with
now + retentionSeconds; every subsequent query pushes its expiry forward. A background timer purges entries that go untouched for the whole retention period. - Survives restarts. Expiry timestamps are persisted next to the list.
- Never interferes. The app always returns
Allow; any internal failure is caught and logged and cannot affect DNS resolution. - Config driven. File paths, retention, hashing (algorithm / salt / length / encoding), line templates, network and protocol filters and log verbosity all live in
dnsApp.config. Saving the config hot reloads the app.
Hash
hash = ENCODE( ALGORITHM( UTF8( salt + ip ) ) )[0 .. length]
Defaults to SHA256, empty salt, lowercase hex, first 16 characters, so the value can be reproduced by any external tool.
Install
- Download
IPCollectorApp-v1.0.0.zipbelow. - DNS server web console -> Apps -> Install, upload the zip.
- Open Config to adjust the settings, then Save.
The list is written to <dns-server-config>/apps/<app name>/ip-list.txt.
Requirements
Technitium DNS Server v15.3 or later (app API DnsServerCore.ApplicationCommon 10.1, .NET 10). Verified against v15.4.