From 8abcef78849b0dbb64a88adcbbba031ab080c143 Mon Sep 17 00:00:00 2001 From: Ben Dews Date: Thu, 17 May 2018 18:50:33 +1000 Subject: [PATCH] Added guide for DNS-Over-HTTPS using cloudflared Signed-off-by: Ben Dews --- docs/guides/dns-over-https.md | 125 ++++++++++++++++++++++++++++++++++ docs/images/DoHConfig.png | Bin 0 -> 19362 bytes mkdocs.yml | 1 + 3 files changed, 126 insertions(+) create mode 100644 docs/guides/dns-over-https.md create mode 100644 docs/images/DoHConfig.png diff --git a/docs/guides/dns-over-https.md b/docs/guides/dns-over-https.md new file mode 100644 index 0000000..3f20a0c --- /dev/null +++ b/docs/guides/dns-over-https.md @@ -0,0 +1,125 @@ +### Why use DNS-Over-HTTPS? + +DNS-Over-HTTPS is a protocol for performing DNS lookups via the same protocol you use to browse the web securely: **HTTPS**. + +With standard DNS, requests are sent in plain-text, with no method to detect tampering or misbehaviour. This means that not only can a malicous actor look at all the DNS requests you are making (and therefore what websites you are visiting), they can also tamper with the response and redirect your device to resources in their control (such as a fake login page for internet banking). + +DNS-Over-HTTPS prevents this by using standard HTTPS requests to retrieve DNS information. This means that the connection from the device to the DNS server is secure and can not easily be snooped, monitored, tampered with or blocked. +It is worth noting however, that the upstream DNS-Over-HTTPS provider will still have this ability. + +## Configuring DNS-Over-HTTPS + +Along with releasing their DNS service [1.1.1.1](https://blog.cloudflare.com/announcing-1111/), Cloudflare implemented DNS-Over-HTTPS proxy functionality in to one of their tools: `cloudflared`. + +In the following sections we will be covering how to install and configure this tool on `Pi-hole`. + +### Installing `cloudflared` + +The installation is fairly straightforward, however be aware of what architecture you are installing on (`amd64` or `arm`). + +#### AMD64 architecture (most devices) + +Download the installer package, then use `apt-get` to install the package along with any dependencies. Proceed to run the binary with the `-v` flag to check it is all working. + +``` +wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb +sudo apt-get install ./cloudflared-stable-linux-amd64.deb +cloudflared -v +``` + +#### ARM architecture (Raspberry Pi) + +Here we are downloading the precompiled binary and copying it to the `/usr/local/bin/` directory to allow execution by the cloudflared user. Proceed to run the binary with the `-v` flag to check it is all working. + +``` +wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz +tar -xvzf cloudflared-stable-linux-arm.tgz +cp ./cloudflared /usr/local/bin +chmod +x /usr/local/bin/cloudflared +cloudflared -v +``` + +#### Configuring `cloudflared` to run on startup + +Create a cloudflared user to run the daemon. + +``` +sudo useradd -s /usr/sbin/nologin -r -M cloudflared +``` + +Proceed to create a configuration file for `cloudflared` by copying the following in to `/etc/default/cloudflared`. This file contains the command-line options that get passed to cloudflared on startup. + +``` +# Commandline args for cloudflared +CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query +``` + +Update the permissions for the configuration file and `cloudflared` binary to allow access for the cloudflared user + +``` +sudo chown cloudflared:cloudflared /etc/default/cloudflared +sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared +``` + +Then create the `systemd` script by copying the following in to `/lib/systemd/system/cloudflared.service`. This will control the running of the service and allow it to run on startup. + +``` +[Unit] +Description=cloudflared DNS over HTTPS proxy +After=syslog.target network-online.target + +[Service] +Type=simple +User=cloudflared +EnvironmentFile=/etc/default/cloudflared +ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS +Restart=on-failure +RestartSec=10 +KillMode=process + +[Install] +WantedBy=multi-user.target +``` + +Enable the `systemd` service to run on startup, then start the service and check its status. +``` +sudo systemctl enable cloudflared +sudo systemctl start cloudflared +sudo systemctl status cloudflared +``` + +Now test that it is working! Run the following `dig` command, a response should be returned similar to the one below + +``` +dig @127.0.0.1 -p 5053 google.com + + +; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.1 -p 5053 google.com +; (1 server found) +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65181 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 1536 +;; QUESTION SECTION: +;google.com. IN A + +;; ANSWER SECTION: +google.com. 299 IN A 243.65.127.221 + +;; Query time: 3 msec +;; SERVER: 127.0.0.1#5053(127.0.0.1) +;; MSG SIZE rcvd: 65 +``` + +### Configuring Pi-hole +Finally, configure Pi-hole to use the local `cloudflared` service as the upstream DNS server: + +![Screenshot of Pi-hole configuration](../images/DoHConfig.png) + +(don't forget to hit Return or click on `Save`) + + +[^guide]: Based on [this guide by Ben Dews | bendews.com](https://bendews.com/posts/implement-dns-over-https/) diff --git a/docs/images/DoHConfig.png b/docs/images/DoHConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..d9370288bbfbd09996732cb1ff5880f7531fb7f2 GIT binary patch literal 19362 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index f0e1fc8..44d1c0c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,6 +52,7 @@ pages: - 'In-depth manual': "ftldns/in-depth.md" - 'Guides': - 'Pi-hole as All-Around DNS Solution': guides/unbound.md + - 'Configuring DNS-Over-HTTPS on Pi-hole': guides/dns-over-https.md - 'Pi-hole and OpenVPN Server': - 'Overview': 'guides/vpn/overview.md' - 'Installation': 'guides/vpn/installation.md'