|
|
||
|---|---|---|
| deployment | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| blocklists.go | ||
| blocklists_test.go | ||
| config.go | ||
| config.json | ||
| dns.go | ||
| go.mod | ||
| go.sum | ||
| http.go | ||
| main.go | ||
| makefile | ||
README.md
Gopherhole
Go built DNS server for blocking ads. Like Pi-hole but for hackers.
Works with Pi-hole block lists.
Find more Pi-Hole compatible block lists here: https://firebog.net/
- Custom Manual DNS records
- Allow and Deny lists
- Custom upstream DNS servers for recursively resolving domains.
- HTTP API (text based and JSON formats)
- header
X-Gopherhole- - CRUD and refresh for block list entries
- CRUD and refresh for white list entries
- CRUD for upstream servers
- CRUD for custom records
- CRUD for all other settings
- header
- DNS over HTTPS.
- Optionally respect hosts file for upstream resolvers
- Generate example config command
- Prometheus metrics support.
- structured JSON logging
- Client IP, Domain, resolver answer, resolver used, UTC time, elapsed time, was blocked, cached state
- DHCP server
How to use
-
go get git.vdhsn.com/adam/gopherhole -
run like so:
gopherhole -config ./config.json -bind-http 127.0.0.1 -bind-dns 127.0.0.1 -block-forward-ip 127.0.0.1 -
example config.json file below:
{ "upstream": [ "1.1.1.1", "8.8.8.8" ], "records": { "mynas.internal": { "Type": "A", "Record": "192.168.0.99" }, "eyeofsauron.com": { "Type": "CNAME", "Record": "www.google.com" } }, "blocklists": [ "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts", "https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt", "https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt" ] }
License
GPL-V3