Skip to content

v1.0.0

Choose a tag to compare

@Ashteeer Ashteeer released this 09 Aug 18:23
· 3 commits to main since this release

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 IDnsRequestController interface, 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.d unwrapping, 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

  1. Download IPCollectorApp-v1.0.0.zip below.
  2. DNS server web console -> Apps -> Install, upload the zip.
  3. 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.