Fast and lightweight DNS proxy as ad-blocker for local network with many features

Overview

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 Total alerts Dependabot Status

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
    • 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
  • 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 you privacy though 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 dashboard
    • Logging of DNS queries per day / per client in CSV format - easy to analyze
    • Statistics report via CLI
    • Various REST API endpoints
    • CLI tool
  • Simple configuration - single configuration file 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!

Issues
  • Blocky seems to keep query upstream domain via bootstrap DNS even after bootstrapped

    Blocky seems to keep query upstream domain via bootstrap DNS even after bootstrapped

    As title, I've noticed that Blocky seems to keep query upstream domain via bootstrap DNS even after bootstrapped, and it's frequently, not sure if it's expected? Thinking about maybe once the query to encrypted DNS upstream is established, should use the encrypted DNS to look up the upstream's IP addresses?

    Here's the partial of the timestamp records that I observed the query to of upstream encrypted DNS's domain name. I use only single one upstream in this case, and its TTL of the upstream domain is 300 secs, it looks like the query is much more frequent than the TTL.

    15:46:31
    15:46:33
    15:46:34
    15:46:34
    15:46:35
    15:46:36
    15:46:36
    15:46:37
    15:46:38
    15:47:36
    15:48:27
    15:48:42
    15:48:45
    15:48:47
    15:49:37
    15:49:54
    15:50:39
    15:50:49
    15:50:51
    15:50:52
    15:50:54
    15:51:37
    15:51:38
    15:52:09
    15:52:18
    15:52:19
    15:52:20
    15:52:21
    15:52:22
    15:52:23
    15:52:24
    15:52:25
    15:53:07
    15:53:18
    15:53:42
    15:53:43
    15:53:44
    15:53:45
    15:53:58
    15:54:00
    15:54:02
    15:54:02
    15:54:08
    15:54:25
    15:54:29
    15:54:50
    15:55:36
    15:55:52
    15:55:55
    15:56:22
    15:57:23
    15:57:36
    15:57:40
    15:57:40
    15:57:41
    
    enhancement 
    opened by PeterDaveHello 17
  • Caching doesn't seem to work properly

    Caching doesn't seem to work properly

    I have caching/prefetching set up pretty generously, however it seems that some queries are slow to look up when it should already be cached.

    A624CA4B-024E-4E27-823D-9216D620C325

    logLevel: warn
    
    upstream:
      default:
        - https://8.8.8.8/dns-query
        - https://8.8.4.4/dns-query
    
    caching:
      minTime: 5m
      maxTime: 30m
      prefetching: true
      prefetchExpires: 24h
      prefetchThreshold: 2
    
    bug 
    opened by agneevX 17
  • FR: DNS cache sync between multiple blocky instances

    FR: DNS cache sync between multiple blocky instances

    If blocky is deployed on multiple instances for concurrency and/or failsafe the cache most likely will differ. This will cause spikes in response time during instance switches.

    I'd like to propose an external second level cache for blocky. Redis would be logical solution as it's already been used in similar scenarios(unbound cache db).

    If activated this feature would include:

    • populate blocky cache from redis during startup
    • query redis after cache miss
    • update redis entry on cache insertion/update
    enhancement 
    opened by kwitsch 16
  • docker service name resolution

    docker service name resolution

    Feature request:

    Resolve bootstrap DNS queries which aren't FQDN against 127.0.0.11 instead of bootstrapDNS configuration(enable via configuration and disabled as default).

    Background:

    In docker stacks service names are resolved through 127.0.0.11. Currently it has to be the bootstrap DNS configuration if a service is used as an upstream resolver. With this workaround the list download DNS resolution is done through the host DNS configuration. This is a problem if blocky is set as DNS resolver for the host. The proposed feature would eliminate this problem as service names aren't typically FQDN.

    Possible FQDN check function: link

    question 
    opened by kwitsch 16
  • CNAME not resolving

    CNAME not resolving

    Using blocky in the latest version in docker...

    the website ravelry.com does not work. The host style-cdn.ravelrycache.com resolves as CNAME to g2s2z8r3.stackpathcdn.com but that does not work with blocky. The domain is not blocked (blacklisted), there is simply no entry that this host was queried.

    With pihole, there is no problem.....

    question 
    opened by arminliensberger 16
  • Windows Server 2019 64bit won't execute blocky

    Windows Server 2019 64bit won't execute blocky

    Error received:

    This app can't run on your PC To find a version for your PC, check with the software publisher.

    Latest 0.8 release AMD64 Windows build.

    opened by DaBrondo 15
  • different cpu usage..

    different cpu usage..

    image

    This is a cpu graph from observium.

    The host is a vm (i run arch btw..) 4 cpus, 4G, xanmod lts 5.15.40 vmxnet3, etc..

    about 4k (+/- 10%) chromebooks, via wifi with this vm as their only recursor..

    (blocky is sitting in front of dnscrypt-proxy)

    ---
    
    port: 10.20.8.29:53
    httpPort: 4000
    bootstrapDns: tcp+udp:10.20.8.29:40
    
    upstream:
      default:
        - tcp+udp:10.20.8.29:40
    
    upstreamTimeout: 5s
    
    filtering:
      queryTypes:
        - AAAA
        - HTTPS
        - ANY
    
    caching:
      minTime: 2400s
      maxTime: 9600s
      maxItemsCount: 32768
      prefetching: true
    
    logLevel: warn
    # optional: Log level (one from debug, info, warn, error). Default: info
    logTimestamp: false
    

    Yesterday was the first day of only blocky as the recursor..

    Previously it was coredns..

    Will see how it looks today..

    also.. can't seem to get the sigusr1 things to dump with the logLevel at warn..

     sv status blocky
    run: blocky: (pid 163871) 832s; run: log: (pid 31930) 65530s
    
    kill -s SIGUSR1 163871
    
    
    tail -F /var/log/blocky/current
    ERROR server: error on processing request:resolution was not successful, used resolvers: 'upstream 'tcp+udp:10.20.8.29:40'' and 'upstream 'tcp+udp:10.20.8.29:40'' errors: [can't resolve request via upstream server 10.20.8.29:40: dns: overflowing header size can't resolve request via upstream server 10.20.8.29:40: dns: overflowing header size]
    ERROR server: error on processing request:resolution was not successful, used resolvers: 'upstream 'tcp+udp:10.20.8.29:40'' and 'upstream 'tcp+udp:10.20.8.29:40'' errors: [can't resolve request via upstream server 10.20.8.29:40: dns: overflowing header size can't resolve request via upstream server 10.20.8.29:40: dns: overflowing header size]
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.46.224:37166: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34184: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34244: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34284: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34208: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34378: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34498: write: broken pipe
    ERROR can't write message: write tcp 10.20.8.29:53->10.120.63.169:34324: write: broken pipe
    

    set the logLevel to info..

     INFO server: current configuration:
     INFO server: -> resolver: 'FilteringResolver'
     INFO server:      filtering query Types: 'AAAA, ANY, HTTPS'
     INFO server: -> resolver: 'ClientNamesResolver'
     INFO server:      deactivated, use only IP address
     INFO server: -> resolver: 'QueryLoggingResolver'
     INFO server:      type: "console"
     INFO server:      target: ""
     INFO server:      logRetentionDays: 0
     INFO server: -> resolver: 'MetricsResolver'
     INFO server:      metrics:
     INFO server:        Enable = false
     INFO server:        Path   = /metrics
     INFO server: -> resolver: 'CustomDNSResolver'
     INFO server:      deactivated
     INFO server: -> resolver: 'HostsFileResolver'
     INFO server:      deactivated
     INFO server: -> resolver: 'BlockingResolver'
     INFO server:      deactivated
     INFO server: -> resolver: 'CachingResolver'
     INFO server:      minCacheTimeInSec = 2400
     INFO server:      maxCacheTimeSec = 9600
     INFO server:      cacheTimeNegative = 30 minutes
     INFO server:      prefetching = true
     INFO server:      prefetchExpires = 2 hours
     INFO server:      prefetchThreshold = 5
     INFO server:      cache items count = 624
     INFO server: -> resolver: 'ConditionalUpstreamResolver'
     INFO server:      deactivated
     INFO server: -> resolver: 'ParallelBestResolver'
     INFO server:      upstream resolvers:
     INFO server:      - default
     INFO server:        - upstream 'tcp+udp:10.20.8.29:40'
     INFO server: - DNS listening on addrs/ports: [10.20.8.29:53]
     INFO server: - TLS listening on addrs/ports: []
     INFO server: - HTTP listening on addrs/ports: [4000]
     INFO server: - HTTPS listening on addrs/ports: []
     INFO server: runtime information:
     INFO server: MEM Alloc =                 1 MB
     INFO server: MEM HeapAlloc =             1 MB
     INFO server: MEM Sys =                  15 MB
     INFO server: MEM NumGC =                95
     INFO server: RUN NumCPU =                4
     INFO server: RUN NumGoroutine =         17
    

    Open to suggestions..

    opened by bcookatpcsd 13
  • Support of DoH/DoT as bootstrap DNS

    Support of DoH/DoT as bootstrap DNS

    Currently, bootstrap DNS can be plain DNS only (UDP/TCP via 53). It should be possible to use DoT/DoH as bootstrap DNS. If host system has no valid DNS configuration, bootstrap should be defined as IP address only.

    enhancement 
    opened by 0xERR0R 13
  • windows: start up with loopback dns configured - no route to host

    windows: start up with loopback dns configured - no route to host

    I'm using a test machine to play around with blocky, which the machine has 127.0.0.1 configured as the DNS server to use blocky. When starting blocky in this scenario, it is unable to download any of the feeds off the get go. I thought that maybe bootstrapDns would be the right setting to enable but it doesn't appear to help. Am I missing something or could blocky use the upstream resolvers to download the feeds on stat up? Thanks!

    [2021-08-22 08:18:43]  INFO list_cache: starting download link=http://sysctl.org/cameleon/hosts
    [2021-08-22 08:18:43]  INFO list_cache: starting download link=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
    [2021-08-22 08:18:43]  WARN list_cache: error during file processing: Get "http://sysctl.org/cameleon/hosts": dial tcp: lookup sysctl.org: no such host
    [2021-08-22 08:18:43]  WARN list_cache: error during file processing: Get "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts": dial tcp: lookup raw.githubusercontent.com: no such host
    [2021-08-22 08:18:43]  INFO list_cache: group import finished group=ads total_count=0
    [2021-08-22 08:18:43]  INFO list_cache: starting download link=https://urlhaus.abuse.ch/downloads/hostfile/
    [2021-08-22 08:18:43]  WARN list_cache: error during file processing: Get "https://urlhaus.abuse.ch/downloads/hostfile/": dial tcp: lookup urlhaus.abuse.ch: no such host
    [2021-08-22 08:18:43]  INFO list_cache: group import finished group=phishing total_count=0
    

    Current config:

    upstream:
      default:
        - 1.0.0.1
        - 9.9.9.9
        - 94.140.14.14
    blocking:
      blackLists:
        ads:
          - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
          - http://sysctl.org/cameleon/hosts
          - https://block.energized.pro/basic/formats/hosts
        phishing:
          - https://urlhaus.abuse.ch/downloads/hostfile/
        porn:
          - https://block.energized.pro/porn/formats/hosts
      whiteLists:
        ads:
          - https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/whitelist.txt
      clientGroupsBlock:
        default:
          - ads
          - phishing
    port: 53
    httpPort: 4000
    bootstrapDns: tcp+udp:8.8.4.4
    
    bug question wontfix 
    opened by adamsewell 12
  • Standalone stops working

    Standalone stops working

    Using standalone version and installed it on root folder with custom folder named blocky. Made setup using template on JSON example. And it's working fine but when I close SSH session console blocking ads stops working as Blocky too. How to make it work all the time? I even try to use my IP as main nameserver in hosts, but it didn't help. Any idea? Also, I don't understand how to use whitelist feature, and what format mus to be in whitelist.txt placed in folder?

    opened by asterriya 12
  • AXFR fails most times

    AXFR fails most times

    Assume you have this snippet beneath in your config with two identically DNS Server but different protocols. If the DNS client is sending an AXFR query to transfer a zone, it uses the TCP Protocol and the UDP.

    Because Blocky randomly selects two external upstream DNS server from the list (UDP+TCP), the fastest response wins, which is usually the UDP response.

    However, UDP is always denied by Auth. DNS Server when trying to perform Zone Transfer over UDP and sends back a Servfail DNS Message.

    Blocky must honor this and must forward TCP based DNS Queries (like AXFR/IXFR) to TCP Upstream DNS Server only.

    Otherwise, any AXFR Queries over UDP will fail.

    https://tools.ietf.org/html/rfc1035#section-4.2.1

    UDP is not acceptable for zone transfers, ....

    https://tools.ietf.org/html/rfc5936#section-2

    An important aspect to keep in mind is that the definition of AXFR is restricted to TCP [RFC0793] (see Section 4 for details). The design of the AXFR process has certain inherent features that are not easily ported to UDP [RFC0768].

    Example

    upstream:

        # these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query
        # format for resolver: net:host:[port][/path]. net could be tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh))
        externalResolvers:
          **- tcp:80.241.218.68**
          **- udp:80.241.218.68**
          
    
    bug enhancement 
    opened by mapl 12
  • [Feature Request] Support for primary key by default on DNS log to MySQL

    [Feature Request] Support for primary key by default on DNS log to MySQL

    We use Digital Ocean's managed MySQL instances for a lot of our database needs, including wanting to log queries to our existing instance. One issue with this is they require any table to have a Primary Key. Would it be possible to add that natively to logging to MySQL databases? We ended up writing a exporter from file to MySQL to get around this but it would be nice to have natively.

    Some of their documentation: https://docs.digitalocean.com/products/databases/mysql/how-to/create-primary-keys/

    opened by adamsewell 1
  • Bump github.com/alicebob/miniredis/v2 from 2.21.0 to 2.22.0

    Bump github.com/alicebob/miniredis/v2 from 2.21.0 to 2.22.0

    Bumps github.com/alicebob/miniredis/v2 from 2.21.0 to 2.22.0.

    Release notes

    Sourced from github.com/alicebob/miniredis/v2's releases.

    stream fixes, Dump() control, fix COMMAND

    • set miniredis.DumpMaxLineLen to get more Dump() info (thanks @​afjoseph)
    • fix invalid response of COMMAND (thanks @​zsh1995)
    • fix possibility to generate duplicate IDs in XADD (thanks @​readams)
    • adds support for XAUTOCLAIM min-idle parameter (thanks @​readams)
    Changelog

    Sourced from github.com/alicebob/miniredis/v2's changelog.

    v2.22.0

    • set miniredis.DumpMaxLineLen to get more Dump() info (thanks @​afjoseph)
    • fix invalid resposne of COMMAND (thanks @​zsh1995)
    • fix possibility to generate duplicate IDs in XADD (thanks @​readams)
    • adds support for XAUTOCLAIM min-idle parameter (thanks @​readams)
    Commits
    • 0203a2d update changelog for v2.22.0
    • 6c2297e Merge pull request #275 from readams/master
    • 19602f2 do conversion to time.Milliseconds earlier
    • 529c1de Merge pull request #276 from readams/autoclaim-minidle
    • a784dd4 Adds support for XAUTOCLAIM min-idle parameter.
    • 2384c4c Fix possibility to generate duplicate IDs in XADD
    • 80cb163 Merge pull request #273 from zsh1995/fix/command
    • 03f03fd Fix invalid resposne of COMMAND
    • c6a13ad Merge pull request #268 from afjoseph/addMaxLen
    • 4847602 [miniredis] Add maxCullLen to minirdis.Dump()
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/stretchr/testify from 1.7.5 to 1.8.0

    Bump github.com/stretchr/testify from 1.7.5 to 1.8.0

    Bumps github.com/stretchr/testify from 1.7.5 to 1.8.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • feature: hide client ip/name in querylog

    feature: hide client ip/name in querylog

    I'd like to hide the Client IP and Name in the querylog for privacy reasons.

    • [x] Extend config
    • [x] Fix tests
    • [x] Implement for CSV etc. as well
    • [x] Move logic to QueryLoggingResolver.writeLog~~Resolve or LogEntry~~
    enhancement 
    opened by axelrindle 3
  • Link blocky-frontend in the project documentation

    Link blocky-frontend in the project documentation

    Discussed in https://github.com/0xERR0R/blocky/discussions/261

    The project https://github.com/Mozart409/blocky-frontend should be linked under https://0xerr0r.github.io/blocky/installation/#other-installation-types on development branch. This should be cherry-picked to master

    documentation 
    opened by 0xERR0R 0
Releases(v0.19)
DNS server using miekg/dns offering dynamic subdomains, time-over-dns, and standard zone file support.

dns-go DNS server using miekg/dns offering dynamic subdomains, time-over-dns, and standard zone file support. dynamic subdomains web.myapp.192.168.1.1

Jean Ribes 0 Dec 14, 2021
A DNS client in Go that supports Google DNS over HTTPS

dingo A DNS client (stub resolver) implemented in Go for the Google DNS-over-HTTPS. It effectively encrypts all your DNS traffic. It also supports Ope

Pawel Foremski 757 Jun 11, 2022
A smol DNS server (<100 loc) that's configured with a static JSON file. Useful for split-dns.

A smol DNS server (<100 loc) that's configured with a static JSON file. Useful for split-dns.

Arne Bahlo 78 Jun 24, 2022
Free and open source, powerful network-wide ads & trackers blocking DNS server

Privacy protection center for you and your devices Free and open source, powerful network-wide ads & trackers blocking DNS server. AdGuard.com | Wiki

Lupael 1 Nov 20, 2021
Fast DNS implementation for Go

Fast DNS implementation for Go Features 0 Dependency Similar Interface with net/http Fast DoH Server Co-create with fasthttp Fast DNS Client with rich

phuslu 67 May 29, 2022
DNSTake — A fast tool to check missing hosted DNS zones that can lead to subdomain takeover

DNSTake — A fast tool to check missing hosted DNS zones that can lead to subdomain takeover

Pwnesia 638 Jun 22, 2022
A tool to solve DNS pollution of GitHub website. Query the real IP address of domain names such as github.com, and refresh the domain name setting of the system hosts file.

githubDNS Target A tool to solve DNS pollution of GitHub website. Query the real IP address of domain names such as github.com, and refresh the domain

null 0 Oct 14, 2021
Create cluster to run ingress controller and set the dns resolver

kubebuilder-crd-dep-svc-ing create cluster to run ingress controller and set the dns resolver $ kind create cluster --config clust.yaml $ sudo

null 1 Nov 15, 2021
DNS library in Go

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

Miek Gieben 6.4k Jun 25, 2022
DNS over HTTPS [mirror]

dnss dnss is a daemon for using DNS over HTTPS. It can act as a proxy, receiving DNS requests and resolving them using DNS-over-HTTPs (DoH). This can

Alberto Bertogli 97 Jul 1, 2022
DNS server with per-client targeted responses

GeoDNS servers This is the DNS server powering the NTP Pool system and other similar services. Questions or suggestions? For bug reports or feature re

Ask Bjørn Hansen 1.2k Jun 26, 2022
GRONG is a DNS (Domain Name System) authoritative name server.It is more a research project than a production-ready program.

GRONG (Gross and ROugh Nameserver written in Go) is a DNS (Domain Name System) authoritative name server. It is intended as a research project and is

Stéphane Bortzmeyer 57 Oct 17, 2020
Multicast DNS library for Go

Introduction This package allows Go processes to publish multicast DNS style records onto their local network segment. For more information about mDNS

Dave Cheney 189 Jun 27, 2022
Resolver (DNS) cache daemon.

RESCACHED(1) Manual Page NAME rescached - DNS resolver cache daemon. Table of Contents SYNOPSIS OPTIONS DESCRIPTION FEATURES BEHIND THE DNS HOW CACHE

Shulhan 26 May 25, 2022
CUP - Cloudflare (DNS) Updater Program

CUP The Cloudflare (DNS) Updater CUP is a tool to turn CloudFlare DNS into a Dynamic DNS service. Documentation Documentation can be found in the docs

Taylor Vierrether 29 Jun 6, 2022
🐶 Command-line DNS Client for Humans. Written in Golang

doggo ?? Command-line DNS client for humans doggo is a modern command-line DNS client (like dig) written in Golang. It outputs information in a neat c

Karan Sharma 912 Jun 26, 2022
CoreDNS is a DNS server that chains plugins

CoreDNS is a DNS server/forwarder, written in Go, that chains plugins. Each plugin performs a (DNS) function. CoreDNS is a Cloud Native Computing Foun

CoreDNS 9.4k Jun 28, 2022
Are you forwarding DNS traffic to another server for some reason, but want to make sure only queries for certain names are passed? Say no more.

DNSFWD Redirect DNS traffic to an upstream. Get Latest: wget https://github.com/C-Sto/dnsfwd/releases/latest/download/dnsfwd_linux (replace linux with

C_Sto 15 Apr 13, 2022
Gotator is a tool to generate DNS wordlists through permutations.

Gotator is a tool to generate DNS wordlists through permutations.

Josué Encinar 194 Jun 26, 2022