☀️ 🌙
Open Source

CoreDNS Manager

Enterprise-grade DNS resolver management for CoreDNS and Unbound.
Unified CLI, API, and Web interfaces for production DNS operations.

Multi-Resolver Support

Unified management for CoreDNS and Unbound with a consistent interface across both resolvers.

Migration Engine

Bidirectional migration between CoreDNS and Unbound with validation and rollback support.

Kubernetes Native

First-class K8s support with pod testing, ConfigMap management, and Helm charts.

Powerful CLI

Full-featured dnsctl command with service control, cache ops, queries, and comparisons.

REST API

FastAPI-powered REST API for programmatic access and integration with your infrastructure.

MCP Integration

Model Context Protocol server for AI/LLM integration with DNS operations.

Installation

Quick Install (Recommended)

One-line install via curl:

curl -fsSL https://raw.githubusercontent.com/straticus1/dnsscience-coredns-manager/main/install.sh | bash
Via pip
pip install git+https://github.com/straticus1/dnsscience-coredns-manager.git
From Source
git clone https://github.com/straticus1/dnsscience-coredns-manager.git
cd dnsscience-coredns-manager
pip install -e .
Docker
docker pull ghcr.io/straticus1/dnsscience-coredns-manager:latest
docker run -it ghcr.io/straticus1/dnsscience-coredns-manager dnsctl --help
Kubernetes (Helm)
helm repo add dnsscience https://charts.dnsscience.io
helm install dnsscience dnsscience/coredns-manager --namespace dns-system --create-namespace

CLI Reference

Command Description
dnsctl service Service control (status, start, stop, restart, reload)
dnsctl cache Cache operations (stats, flush, purge, inspect)
dnsctl query DNS queries (lookup, trace, bench, bulk)
dnsctl config Configuration management (validate, diff, show, reload)
dnsctl compare Resolver comparison (run, shadow, report)
dnsctl migrate Migration operations (plan, execute, validate, rollback)
dnsctl k8s Kubernetes operations (test-pod, configmap, discover)
dnsctl health Health monitoring (check, watch, metrics)

Quick Examples

Check resolver status
dnsctl service status
Trace DNS resolution
dnsctl query trace example.com
Compare resolvers
dnsctl compare run example.com \
  --resolver1 coredns \
  --resolver2 unbound
Plan a migration
dnsctl migrate plan \
  --source coredns \
  --target unbound
Flush cache
dnsctl cache flush --all
Start API server
dnsctl-api
# or
uvicorn dnsscience.api.main:app --host 0.0.0.0 --port 8000

Requirements

  • Python 3.11+
  • CoreDNS 1.11+ and/or Unbound 1.19+
  • Kubernetes 1.28+ (for K8s features)

Architecture

+---------------------------------------------------------------------+
|                   DNS Science CoreDNS Manager                        |
+--------+------------+-----------+----------+----------+------+------+
|  CLI   |  REST API  | MCP Server| n8n Nodes|  Web UI  |Admin |
| (Typer)|  (FastAPI) |  (MCP SDK)|  (Custom)| (React)  |(htmx)|
+---------------------------------------------------------------------+
|                      Core Business Logic                             |
+---------------------------------------------------------------------+
|  +----------------+        +----------------+                        |
|  | CoreDNS Client |        | Unbound Client |                        |
|  | - Service Ctrl |        | - Service Ctrl |                        |
|  | - Cache Ops    |        | - Cache Ops    |                        |
|  | - Query Engine |        | - Query Engine |                        |
|  | - Config Parse |        | - Config Parse |                        |
|  +----------------+        +----------------+                        |
|                                                                      |
|  +----------------+----------------+-----------------+               |
|  | Compare Engine | Migration Eng. | K8s Integration|               |
|  | - Diff Algo    | - Config Conv  | - Pod Testing  |               |
|  | - Shadow Mode  | - Validation   | - Discovery    |               |
|  | - Scoring      | - Rollback     | - ConfigMaps   |               |
|  +----------------+----------------+-----------------+               |
+----------------------------------------------------------------------+

Need Help?

Get support from the DNS Science community