Fast and lightweight DNS proxy as ad-blocker for local network with many features
Go to file
Kwitsch 8ece708fe9
devcontainer & unit test refactoring (#1220)
* extension cleanup & added ginkgo watch

* added gcov2lcov

* added test explorer and reworked scripts

* go mod tidy

* use package cache volume

* script rework

* defined tasks

* defined launch

* don't try to convert if test was canceld

* generate lcov only in devcontainer

* disable coverage upload on forks

* wip: make lcov

* fixed unit tests for parallel

* parallel test for lists

* fix serve test for parallel

* parallel test fixes

* deleted accident commit

* wip: make lcov

* restructured settings location

* start script refactoring

* added GetProcessPort

* fixed parallel ports

* race fix

* changed port for github runner binding

* fixed local list var in test

* more local vars in tests fix

* less local vars

* run test & race parallel

* removed invalid error check

* fixed error  check

* less local variables

* fixed timing problem

* removed gcov2lcov

* added generate-lcov

* added GINKGO_PROCS to makefile

* fixed workflow

* run generate-lcov on save *.go

* added tooltitude
2023-11-11 11:58:31 -05:00
.devcontainer devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
.github devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
.vscode devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
api feat: add API endpoint to flush the DNS Cache (#1178) 2023-09-30 16:13:01 -04:00
cache devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
cmd devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
config refactor: pass context for goroutine shutdown (#1187) 2023-10-07 16:21:40 -04:00
docs feat: add API endpoint to flush the DNS Cache (#1178) 2023-09-30 16:13:01 -04:00
e2e chore(test): use testcontainers modules (#1164) 2023-09-22 10:35:51 -04:00
evt chore(refactor): refactor cache implementation (#1174) 2023-09-30 17:14:59 +02:00
helpertest devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
lists devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
log fix: ANSI color codes being printed on Windows (#1225) 2023-11-08 00:29:53 +01:00
metrics refactor: configuration rework (usage and printing) (#920) 2023-03-12 22:14:10 +01:00
model feat: add upstream strategy `strict` (#1093) 2023-08-21 09:50:23 +02:00
querylog refactor: pass context for goroutine shutdown (#1187) 2023-10-07 16:21:40 -04:00
redis fix: use different TTL of multiple records in answer 2023-09-25 22:12:25 +02:00
resolver devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
server devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
util chore(text): fix ipv6 representation 2023-09-19 19:24:00 +02:00
web feat: API-first approach for REST interface (#1129) 2023-09-09 19:30:55 +02:00
.dockerignore Feature/devcontainer (#1179) 2023-10-02 22:08:05 +02:00
.gitattributes Feature/devcontainer (#1179) 2023-10-02 22:08:05 +02:00
.gitignore devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
.golangci.yml chore(build): update golangci-lint to 1.54.2 (#1121) 2023-08-31 14:47:30 +02:00
.goreleaser.yml Goreleaser fix (#1003) 2023-04-26 08:57:22 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-03-05 10:58:39 +01:00
Dockerfile Fix/opencontainer labels (#1192) 2023-10-08 23:34:54 +02:00
LICENSE added license text 2020-01-13 21:57:57 +01:00
Makefile devcontainer & unit test refactoring (#1220) 2023-11-11 11:58:31 -05:00
README.md fix(docs): fix documentation link in README.md (#1133) (#1134) 2023-09-11 13:39:59 +02:00
codecov.yml feat: API-first approach for REST interface (#1129) 2023-09-09 19:30:55 +02:00
go.mod build(deps): bump golang.org/x/tools from 0.14.0 to 0.15.0 (#1229) 2023-11-10 09:24:41 +01:00
go.sum build(deps): bump golang.org/x/tools from 0.14.0 to 0.15.0 (#1229) 2023-11-10 09:24:41 +01:00
main.go use full-qualified name as module 2021-08-27 13:41:36 +02:00
main_static.go added setLocaltime 2022-11-12 21:37:01 +01:00
mkdocs.yml chore: mirror git repo to codeberg 2023-03-13 14:04:18 +01:00
tools.go feat: API-first approach for REST interface (#1129) 2023-09-09 19:30:55 +02:00

README.md

GitHub Workflow Status GitHub Workflow Status GitHub latest version GitHub Release Date GitHub go.mod Go version Docker pulls Docker Image Size (latest) Codecov Codacy grade Go Report Card Donation

Blocky

Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features:

Features

  • Blocking - Blocking of DNS queries with external lists (Ad-block, malware) and whitelisting

    • Definition of black and white lists per client group (Kids, Smart home devices, etc.)
    • Periodical reload of external black and white lists
    • Regex support
    • Blocking of request domain, response CNAME (deep CNAME inspection) and response IP addresses (against IP lists)
  • Advanced DNS configuration - not just an ad-blocker

    • Custom DNS resolution for certain domain names
    • Conditional forwarding to external DNS server
    • Upstream resolvers can be defined per client group
  • Performance - Improves speed and performance in your network

    • Customizable caching of DNS answers for queries -> improves DNS resolution speed and reduces amount of external DNS queries
    • Prefetching and caching of often used queries
    • Using multiple external resolver simultaneously
    • Low memory footprint
  • Various Protocols - Supports modern DNS protocols

    • DNS over UDP and TCP
    • DNS over HTTPS (aka DoH)
    • DNS over TLS (aka DoT)
  • Security and Privacy - Secure communication

    • Supports modern DNS extensions: DNSSEC, eDNS, ...
    • Free configurable blocking lists - no hidden filtering etc.
    • Provides DoH Endpoint
    • Uses random upstream resolvers from the configuration - increases your privacy through the distribution of your DNS traffic over multiple provider
    • Blocky does NOT collect any user data, telemetry, statistics etc.
  • Integration - various integration

    • Prometheus metrics
    • Prepared Grafana dashboards (Prometheus and database)
    • Logging of DNS queries per day / per client in CSV format or MySQL/MariaDB/PostgreSQL database - easy to analyze
    • Various REST API endpoints
    • CLI tool
  • Simple configuration - single or multiple configuration files in YAML format

    • Simple to maintain
    • Simple to backup
  • Simple installation/configuration - blocky was designed for simple installation

    • Stateless (no database, no temporary files)
    • Docker image with Multi-arch support
    • Single binary
    • Supports x86-64 and ARM architectures -> runs fine on Raspberry PI
    • Community supported Helm chart for k8s deployment

Quick start

You can jump to Installation chapter in the documentation.

Full documentation

You can find full documentation and configuration examples at: https://0xERR0R.github.io/blocky/

Contribution

Issues, feature suggestions and pull requests are welcome!

ko-fi