Skip to content
Sebastian Schmidt edited this page Jul 1, 2018 · 22 revisions

Introduction

dnscrypt-proxy is a DNS proxy that implements the dnscrypt and DNS-over-HTTPS (doh) protocols

Installation

NOTE: This package is incompatible with the DNS server package from Synology!

For the NAS devices please follow the instructions here: https://synocommunity.com/

On routers you need to download the spk file for the correct architecture. The spk files can be found here: https://github.com/publicarray/spksrc/releases. Next you need to change the trust level in your Package Center settings to Any publisher. If you have the know how I suggest unzipping and inspecting the scripts inside of the spk file. This is to make sure that there is nothing malicious going on. Finally click the 'Manual Install' button in the Package Center and Install the spk file.

  • RT2600ac = ipq806x
  • RT1900ac = northstarplus

  • Listen Addresses: List of local addresses and ports to listen to. Can be IPv4 and/or IPv6.
  • IPv6 Servers: Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity
  • Server Names: List of servers to use. If empty, all registered servers matching the require_* filters will be used, The proxy will automatically pick the fastest, working servers from the list.

Configuration

  • Generate Blacklist: will fetch provided lists and update the var/blacklist.txt file using the generate-domains-blacklist.py script
  • Save: Saves the file to disk. You need to manually restart dnscrypt-proxy to apply changes

Optional: Network devices configuration

Cloudflare has some good instructions on how to change your dns settings to point to a custom dns server. Instead of 1.1.1.1 you need to use your Synology's IP address. e.g. 192.168.1.1

Optional: Test that everything is working as expected.

To see which servers are resolving your queries you can visit dnsleaktest.com

If you prefer the command line you can use dig whoami.akamai.net, drill resolver.dnscrypt.org or nslookup whoami.ultradns.net to find out which resolver is currently in use.

Using the output the SERVER should be the IP address of the device running dnscrypt-proxy. The IP address in the ANSWER SECTION should be your preferred DNS resolver. Note that on anycast networks like 1.1.1.1 or 8.8.8.8 the IPs will differ and can checked by the ASN

Example:

$ drill whoami.akamai.net
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 12996
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; whoami.akamai.net.	IN	A

;; ANSWER SECTION:
whoami.akamai.net.	119	IN	A	35.201.20.179

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 113 msec
;; EDNS: version 0; flags: ; udp: 4096
;; SERVER: 192.168.1.1
;; WHEN: Wed Jun 20 20:43:26 2018
;; MSG SIZE  rcvd: 79
  • Here the SERVER is 192.168.1.1. Which so happens to be my gateway and the device running dnscrypt-proxy.
  • The ANSWER SECTION has one of my chosen servers IP address: 35.201.20.179

If the selected DNS servers support DNSSEC you can test it here.

If you like to run some more tests: https://github.com/publicarray/ansible-role-unbound/wiki/DNS-Tests

Clone this wiki locally