Skip to content

Commit 96b6216

Browse files
authored
Merge pull request #8
Add project content for darvaza.org/penne
2 parents f7106b8 + 12073ff commit 96b6216

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

content/projects/darvaza-penne.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
title: darvaza.org/penne
3+
description: Config-driven, pipeline-oriented DNS resolver that allows complex workflows to be defined simply, with split-horizon DNS support built on the Darvaza sidecar engine and resolver interface.
4+
category:
5+
- darvaza
6+
- networking
7+
- go
8+
repo: github:darvaza-proxy/penne
9+
licence: MIT
10+
go: darvaza.org/penne
11+
---
12+
13+
Config-driven, pipeline-oriented DNS resolver that allows complex
14+
workflows to be defined simply. Built using the Darvaza sidecar
15+
engine and :go-pkg{mod="darvaza.org/resolver"}.
16+
17+
## Architecture
18+
19+
Penne uses a pipeline/middleware design with three resolver modes:
20+
21+
- **Iterative** — performs iterative DNS resolution from root servers.
22+
- **Forwarder** — forwards queries to upstream resolvers.
23+
- **Chained** — chains multiple resolver strategies together.
24+
25+
## Key features
26+
27+
- **Horizons** — named CIDR sets that route, annotate, or filter DNS
28+
requests based on the client's IP address, enabling split-horizon DNS.
29+
- **Pattern matching** — uses globbing (via
30+
:go-pkg{mod="github.com/gobwas/glob"}) instead of regex for suffix
31+
matching and name rewrites, with capture group replacements
32+
(`${n}`).
33+
- **Capabilities** — domain-specific resolver restriction, record
34+
filtering (e.g., dropping `AAAA` records), and request/response
35+
rewriting.
36+
37+
## Configuration
38+
39+
Penne is designed to be config-driven, with YAML or JSON
40+
configuration files defining resolver pipelines, horizons,
41+
and transformation rules. This allows complex DNS workflows to
42+
be declared without writing code.
43+
44+
## Planned features
45+
46+
Future versions of Penne will adopt a plugin architecture — each
47+
capability below is planned as a standalone plugin, so you only
48+
install the pieces you need. The planned plugins are:
49+
50+
- **Authoritative DNS** — host your own DNS zones with persistent
51+
storage, turning Penne into a full network DNS server.
52+
- **DHCP server** — integrated DHCP lease management alongside DNS,
53+
keeping address assignment and name resolution under one roof.
54+
- **IPAM server** — IP Address Management for tracking address
55+
usage, planning subnets, and managing allocations across the
56+
network.
57+
- **Security licence (Protective DNS)** — threat protection at the
58+
DNS layer, blocking known malicious domains, phishing sites, and
59+
malware command-and-control servers.
60+
- **Enhanced reporting** — richer analytics and reporting on DNS
61+
activity across the network.
62+
- **Blocklists** — network-wide domain blocking, similar to ad-blockers
63+
but applied at the server level for all clients.
64+
- **HA clustering** — high-availability mode with multiple Penne nodes
65+
staying in sync to provide failover if one node goes down.
66+
67+
## See also
68+
69+
- DNS resolver library — :go-pkg{mod="darvaza.org/resolver"}
70+
- Core helpers — :go-pkg{mod="darvaza.org/core"}
71+
- Structured logging — :go-pkg{mod="darvaza.org/slog"}

0 commit comments

Comments
 (0)