zallison/foghorn

By zallison

Updated about 2 months ago

Caching, pluggable DNS server written in python. Run DNS however you want to.

Image
Networking
Security
Developer tools
0

2.3K

zallison/foghorn repository overview

https://github.com/zallison/Foghorn/

Foghorn is a lightweight, caching DNS server built with Python (3.10+). It's designed to be fast and extensible, featuring a pluggable policy system that allows you to customize its behavior to fit your needs.

With special thanks to Fiona Weatherwax for their contributions and inspiration.

For developer documentation (architecture, transports, plugin internals, testing), see README-DEV.md.


Mount your config file as /foghorn/config.yaml

Make sure your port-forwards are correct for your config. Example:

  • 53 -> 5353: UDP/TCP listen
  • 801 -> 1801: DNS-over-TLS
  • 443 -> 1443: DNS-over-HTTPS
  • 8053 -> 8053: Admin / Stats webserver

Features

  • DNS Caching: Speeds up DNS resolution by caching responses from upstream servers.
  • Extensible Plugin System: Easily add custom logic to control DNS resolution.
  • Flexible Configuration: Configure listeners, upstream resolvers (UDP/TCP/DoT/DoH), and plugins using YAML.
  • Built-in Plugins:
    • Access Control: CIDR-based allow/deny (allowlist/blocklist terminology in docs).
    • Greylist: Temporarily block newly seen domains.
    • New Domain Filter: Block recently registered domains.
    • Upstream Router: Route queries to different upstream servers by domain/suffix.
    • Filter: Filter by domain patterns/keywords and by response IPs.
    • Examples: Showcase of simple policies and rewrites.

Tag summary

Content type

Image

Digest

sha256:1549262c1

Size

525.7 MB

Last updated

about 2 months ago

docker pull zallison/foghorn