All Projects → yegle → Your Dns

yegle / Your Dns

Licence: mit
A docker-compose file to provide a secure adblocking DNS server

Projects that are alternatives of or similar to Your Dns

devops-notes
My technical documentation in the SRE / DevOps paradigm.
Stars: ✭ 19 (-94.29%)
Mutual labels:  dns-server
zonemanager
Central DNS/DHCP database with replication to Amazon Route53, BIND, MikroTik routers and other services.
Stars: ✭ 29 (-91.29%)
Mutual labels:  dns-server
Vedetta
OpenBSD Router Boilerplate
Stars: ✭ 260 (-21.92%)
Mutual labels:  dns-server
newdns
A library for building custom DNS servers in Go.
Stars: ✭ 40 (-87.99%)
Mutual labels:  dns-server
Secure-Adblocking-DNS
Secure (DNS-over-TLS) Adblocking (Pi-hole) Recursive (unbound) Server System setup
Stars: ✭ 19 (-94.29%)
Mutual labels:  dns-server
dnsfwd
DNS forwarder over a (TCP) virtual circuit
Stars: ✭ 21 (-93.69%)
Mutual labels:  dns-server
afdns
Ad free DNS server. A docker container with a DNS server configured to block advertisement hosts.
Stars: ✭ 27 (-91.89%)
Mutual labels:  dns-server
Surging
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service gove…
Stars: ✭ 3,088 (+827.33%)
Mutual labels:  dns-server
ddns
Simple restful dynamic DNS service
Stars: ✭ 25 (-92.49%)
Mutual labels:  dns-server
v6dns
A DNS Server which lets IPv4-prioritized devices to use IPv6 first, or lets IPv6-prioritized devices to use IPv4 first.
Stars: ✭ 16 (-95.2%)
Mutual labels:  dns-server
AmpliSpy
Check local or remote list of DNS servers for suitability in DNS Amplification DoS.
Stars: ✭ 39 (-88.29%)
Mutual labels:  dns-server
Windows.10.DNS.Block.List
Windows DNS Block List
Stars: ✭ 18 (-94.59%)
Mutual labels:  dns-server
sslip.io
Golang-based DNS server which maps DNS records with embedded IP addresses to those addresses.
Stars: ✭ 195 (-41.44%)
Mutual labels:  dns-server
unbound-dns-firewall
DNS-Firewall Python script for UNBOUND
Stars: ✭ 23 (-93.09%)
Mutual labels:  dns-server
Roguesploit
Powerfull Wi-Fi trap!
Stars: ✭ 262 (-21.32%)
Mutual labels:  dns-server
xip.name
Simple wildcard DNS inspired by xip.io
Stars: ✭ 143 (-57.06%)
Mutual labels:  dns-server
coredns
CoreDNS is a DNS server that chains plugins
Stars: ✭ 8,962 (+2591.29%)
Mutual labels:  dns-server
Mos Chinadns
一个开箱即用的 DNS 分流器。
Stars: ✭ 320 (-3.9%)
Mutual labels:  dns-server
Netflix Proxy
Smart DNS proxy to watch Netflix
Stars: ✭ 3,220 (+866.97%)
Mutual labels:  dns-server
MicroDNSSrv
A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32)
Stars: ✭ 43 (-87.09%)
Mutual labels:  dns-server

your-dns

A docker-compose file to provide a secure adblocking DNS server

NOTE: if you are interested in a hosted solution, please take a look at nextdns.io. I'm not affiliated with nextdns.io.

NEW: Try using your-dns.run as a DNS-over-TLS server. You can use this domain with "Private DNS" feature in > Android 9 (Pie). This server is set up using the your-dns-run branch of this repo.

Goal

Run a secure DoT (DNS-over-TLS) and DoH (DNS-over-HTTPS) DNS server that can do ad blocking and hide your DNS query from your ISP.

Non Goal

Hide your DNS query from upstream recursive DNS server. Why? Because to me hide my trail from various ISPs (Verizon, ATT, and any other ISPs behind public WiFis) is more important.

Privacy Tradeoffs

We are running a DNS forwarder instead of a DNS resolver. Running a forwarder and connect to upstream DNS over secure connection does hide your DNS queries from your ISP, but it would also leaks your web history (in the form of DNS query) to the upstream DNS.

Your web history is always open to your ISP until ESNI is widely adopted. Even with ESNI, it's still easy for the ISP to learn your web history based on the IP addresses you connected.

The main benefit of running a forwarder that communicate securely with upstream DNS is that your ISP won't be able to manipulate your DNS query results, e.g. hijack the NXDOMAIN response to show ads, force traffic to go through a transparent proxy (with more and more sites offering HTTPS, this is less of a concern) and so on.

There's a trade off you need to make whether the benefit beats the reduced privacy. Personally, making it harder for the ISP to learn my web history is a good enough reason.

All components in this stack

overview of components

  1. Adguard Home: Ad blocking DNS server with native DoT/DoH support.
  2. Pomerium: An identity-aware reverse proxy. This allows me to remote access PiHole's web UI. More importantly, Pomerium is used to get SSL certificate automatically from Let's Encrypt. (reference)
  3. Optional: Autoheal: Auto-restart container that failed health check.
  4. Optional: Ouroboros: Auto-pull latest version of each container.

NOTE: Previously Pihole+CoreDNS was used. That setup was deprecated. If you are still looking for that, take a look at the "pihole" branch.

Prerequisites

  1. Install Docker (how) and docker-compose command (how).
  2. Know how to DNAT from your public IP to the server running the stack. Or alternatively if you have IPv6, allow dport=853 access to your server.

Run the stack

The following instruction will run a list of jobs on docker to DNS-over-TLS service on port 853 and foward your request through PiHole then to Cloudflare DNS.

By default the setup uses Cloudflare's 1.1.1.1 DNS server. You can modify Corefile and specify a different server. A list of DNS-over-TLS name server is available at https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers.

  1. Create a network called infra_network. (Why not create the network in the compose file? Because you cannot create the default network in compose file, and can only replace it with external.)
    docker network create --subnet 172.30.0.0/16 infra_network
  1. Rename example.env to .env and update the values in the file. See the comment in that file for instructions.
  2. Rename adguard/conf/AdguardHome.yaml.example to adguard/conf/AdguardHome.yaml.
  3. Update the tls_server_name in pomerium.yaml to match the actual domain name you will use.
  4. docker-compose up -d and you are done :-)

TODO

None

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].