pawal/gonemaster
2
17
Fork
You've already forked gonemaster
0
Gonemaster is a Go implementation of the Zonemaster engine and CLI. https://gonemaster.evilbit.de/
  • Go 78%
  • Svelte 8.4%
  • JavaScript 7.8%
  • TypeScript 2%
  • CSS 1.8%
  • Other 2%
Patrik Wallström 2edb21eaa0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Merge pull request 'dnssec-chain-viz' ( #91 ) from dnssec-chain-viz into main
Reviewed-on: #91 
2026年07月12日 13:09:26 +02:00
.gitea docs: add architecture document and anti-rot CI check 2026年05月17日 17:49:48 +02:00
analysis-ui analysis-ui: use the gonemaster glyph as the favicon 2026年07月09日 23:08:17 +02:00
cmd engine: track query timeouts separately from response times 2026年07月09日 12:37:36 +02:00
docs docs: document the dnssec chain endpoints, UI section, and flag 2026年07月10日 17:41:07 +02:00
engine Prep for v1.6.0 2026年07月12日 12:56:40 +02:00
packaging packaging: add gonemaster-mcp to release binaries and packages 2026年05月31日 23:05:43 +02:00
scoring engine: add nameserver18 Extended DNS Errors (EDE, RFC 8914) testcase 2026年06月27日 11:41:22 +02:00
server server: surface dnssec chain lookup errors instead of masking them as 404 2026年07月11日 22:51:48 +02:00
share i18n: rewrap nameserver15 catalog entries to match file wrapping style ( #80 ) 2026年07月05日 21:49:56 +02:00
site server: rename nameserver15 testcase to software version disclosure ( #80 ) 2026年07月05日 21:43:05 +02:00
tools gofmt: reformat sources with the Go 1.26 toolchain 2026年06月15日 16:53:10 +02:00
ui admin-ui: use tillitskedja for chain of trust in Swedish 2026年07月10日 23:54:45 +02:00
ui-public ui-public: group DS records by key tag in the dnssec chain graph 2026年07月12日 13:06:28 +02:00
.gitattributes Added .gitattributes 2026年01月27日 23:27:20 +01:00
.gitignore make: add package-deb/rpm targets for cross-arch nfpm builds 2026年05月20日 15:22:08 +02:00
.gitmodules docs: scaffold Hugo site with Relearn 6.4.1 theme submodule 2026年05月14日 01:23:21 +02:00
.woodpecker.yml ci: fail the build when sources are not gofmt-clean 2026年06月15日 16:56:10 +02:00
Changelog Prep for v1.6.0 2026年07月12日 12:56:40 +02:00
docker-compose.test.yml cleanup: small cleanup 2026年05月03日 22:16:33 +02:00
go.mod build: require Go 1.26 and bump CI images to golang:1.26 2026年06月15日 15:33:27 +02:00
go.sum deps: bump codeberg.org/miekg/dns to v0.6.81 2026年06月15日 13:56:10 +02:00
LICENSE Removed 'All rights reserved.' 2026年05月04日 16:07:15 +02:00
Makefile make: run analysis-ui tests as part of make test 2026年06月11日 21:57:29 +02:00
README.md docs: restructure README with quick start, releases, nagios/MCP, and license 2026年07月09日 01:00:21 +02:00

gonemaster

gonemaster is a Go implementation of the Zonemaster DNS test engine, with a local CLI, an HTTP server, a server automation client, a Nagios plugin, an MCP bridge for AI agents, and public analysis views for tagged domain cohorts.

The public UI is available here: https://gonemaster.evilbit.de/

What gonemaster Tests

gonemaster checks the DNS health of a domain by running it through a series of testcases grouped into modules. Each testcase emits log messages that are scored into a numeric result and a letter grade. The modules are:

  • basic - does the zone exist and have a working authoritative nameserver.
  • address - nameserver IP addresses and their reverse DNS (PTR) mappings.
  • connectivity - UDP/TCP reachability and network (ASN and prefix) diversity.
  • consistency - whether nameservers agree on SOA, serials, NS sets, and more.
  • delegation - parent/child delegation: NS records, glue, and referrals.
  • dnssec - the DNSSEC chain of trust: DS, DNSKEY, signatures, and algorithms.
  • nameserver - nameserver behaviour and capabilities, such as EDNS handling.
  • syntax - hostname and domain name syntax.
  • zone - zone-level records such as SOA timers and MX.

For the full inventory of testcases and what each one checks, see the specifications. Scoring and letter grades are described in the scoring documentation.

Highlights

  • Parallel-safe engine runs with per-run state isolation.
  • Text, JSON, JSON stream, and raw log output.
  • Undelegated testing with explicit nameserver and DS input.
  • HTTP server with persistent queue, batches, tags, profiles, and metrics.
  • Public API and public UI that avoid exposing internal job IDs.
  • Public cohort analysis with immutable snapshots.
  • Stored packet cache save/restore for reproducible runs.

Quick Start

Run One Local Test

gonemaster example.com
gonemaster --json --domain example.com | jq
gonemaster --module dnssec --testcase dnssec01 example.com

Direct CLI documentation: pawal.codeberg.page/gonemaster/cli

Start the Server

The server embeds the admin, public, and analysis web UIs; building them requires Node.js:

make ui-build
go build -o ./gonemaster-server ./cmd/gonemaster-server
./gonemaster-server

For an API-only server without the embedded UIs (no Node.js required), build with make build-gonemaster-server-noui.

Server documentation: pawal.codeberg.page/gonemaster/server

Automate the Server

gonemaster-client jobs create --domain example.com --wait --view summary
gonemaster-client jobs batch --file domains.txt --tag tld --wait
gonemaster-client entries query --tag tld --module DNSSEC --latest

Client documentation: pawal.codeberg.page/gonemaster/client

Publish Analysis Cohorts

gonemaster-client tags create tld --description "Top-level domains"
gonemaster-client tags add-domains tld --file tlds.txt
gonemaster-client jobs batch --from-tag tld --tag tld --wait

Analysis documentation: pawal.codeberg.page/gonemaster/analysis

Install

Prebuilt binaries for Linux, macOS, and Windows are published on the releases page.

Install the local CLI with Go (1.26 or later):

go install codeberg.org/pawal/gonemaster/cmd/gonemaster@latest

Build from source:

git clone https://codeberg.org/pawal/gonemaster.git
cd gonemaster
go test ./...
go build -o gonemaster ./cmd/gonemaster
sudo install -m 0755 gonemaster /usr/local/bin/gonemaster

The Makefile includes common targets such as build, test, ui-build, packaging, and documentation/specification checks. Run make help for the current list.

Documentation

Full documentation: pawal.codeberg.page/gonemaster

Start with the architecture overview for a one-sitting tour of the system: binaries, request lifecycles, data model, concurrency, security posture, and known limitations.

  • CLI - local test runner
  • Server - HTTP server and queue
  • Client - automation client
  • Nagios - Nagios and Icinga plugin
  • MCP - Model Context Protocol bridge for AI agents
  • Analysis - cohort analysis and snapshots
  • Specifications - testcase and tag reference
  • OpenAPI - machine-readable API spec
  • Changelog - release history
  • pkg.go.dev - Go package docs; engine is the main entry point for embedding gonemaster programmatically

Screenshots

CLI output:

ascii animation

Admin UI:

UI screenshot

Metrics view:

Metrics screenshot

License

gonemaster is released under a BSD-style license. See LICENSE.