DNS AdBlocker plugin for CoreDNS.
The project is no longer maintained, due to the lack of free time. I have therefore archived it. Feel free to fork it.
First get the CoreDNS source code by running, after you cloned this repository into the proper path in your GOPATH
go get github.com/coredns/coredns
Then navigate to the coredns directory
cd $(go env GOPATH)/src/github.com/coredns/coredns
Next update the plugin.cfg
in the root of the coredns repository as follows
sed -i 's|loadbalance:loadbalance|ads:github.com/c-mueller/ads\nloadbalance:loadbalance|g' plugin.cfg
while I would suggest having the ads
plugin before the cache
plugin because it will
cause the changes in the blocklists to be applied instantly. However the overall performance of
the DNS server could degrade when having many regex rules. In that case I recommend putting the
plugin before the hosts
plugin:
sed -i 's|hosts:hosts|ads:github.com/c-mueller/ads\nhosts:hosts|g' plugin.cfg
Finally run make
to build CoreDNS with the ads
plugin
The releases section also contains binaries of the latest CoreDNS with the ads plugin. These get built automatically using drone. Once they have been triggered.
Building untagged code is complicated. The simplest way i've stumbled upon for CoreDNS is mimicing a in tree plugin using symlinks.
For this you have to create a symlink to the ads
repository in the plugins/
folder using a command similar to the following:
Assuming you are in the plugins/
directory
ln -s ~/go/src/github.com/c-mueller/ads ads
Make sure to replace ~/go/src/github.com/c-mueller/ads
with the proper path to the ads
repo.
Next we have to insert the plugin into the plugin.cfg
. here we use the following command, instead of the one above:
sed -i 's|loadbalance:loadbalance|ads:ads\nloadbalance:loadbalance|g' plugin.cfg
Before running make in the CoreDNS repo we have to make sure the ads
repo does not contain a go.mod
file. to do this we rename it to go.mod.old
.
If you want to continue developing using Goland for example. The file should be renamed again to make sure syntax highlighting works.
To prevent version conflicts between CoreDNS and the ads plugin it is important to keep the
go.mod
file empty or if dependencies have been added that are not used by coreDNS only these should
be added in the go.mod
file on master.
For reference the empty go.mod
file looks like this:
module github.com/c-mueller/ads
go 1.12
The go sum file should get deleted.
Because this strategy will make development annoying you can run go mod tidy
to regenerate a proper go,mod
file.
The following shows how to use the ads plugin with default parameters, if you want to configure it further take a look at This Document.
Running the ads
plugin with all defaults is done by just adding the ads
keyword to your Corefile.
For example:
.:53 {
ads
forward . 1.1.1.1
log
errors
}
This plugin is licensed under Apache 2 License. See LICENSE for more information.