DNSCrypt encrypts and authenticates DNS traffic between your device and CleanBrowsing's servers. This guide covers installation and configuration of dnscrypt-proxy with CleanBrowsing stamps for all available filters.
Learn About Pricing
DNSCrypt is a protocol that encrypts and authenticates DNS traffic between a client and a DNS resolver. Unlike standard DNS (which sends queries in plaintext over UDP port 53), DNSCrypt wraps each query in an encrypted envelope, preventing eavesdropping, tampering, and man-in-the-middle attacks.
DNSCrypt differs from DNS-over-HTTPS (DoH) and DNS-over-TLS (DoT) in several important ways:
The most widely used DNSCrypt client is dnscrypt-proxy, an open-source tool available for Windows, macOS, Linux, and BSD. CleanBrowsing supports DNSCrypt across all its filters: Family, Adult, and Security.
The dnscrypt-proxy application is the standard client for connecting to DNSCrypt resolvers. Install it on your preferred platform:
sudo apt update
sudo apt install dnscrypt-proxy
Download the latest release from the dnscrypt-proxy GitHub releases page:
wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.1.5/dnscrypt-proxy-linux_x86_64-2.1.5.tar.gz
tar xzf dnscrypt-proxy-linux_x86_64-2.1.5.tar.gz
cd linux-x86_64
sudo cp dnscrypt-proxy /usr/local/bin/
sudo cp example-dnscrypt-proxy.toml /etc/dnscrypt-proxy/dnscrypt-proxy.toml
brew install dnscrypt-proxy
For Windows, download Simple DNSCrypt from simplednscrypt.org. It provides a graphical interface for managing dnscrypt-proxy and makes configuration straightforward. Alternatively, download the Windows binary from the GitHub releases page and run it as a service.
DNSCrypt uses stamps to encode all the information needed to connect to a resolver: the IP address, port, provider name, and public key. CleanBrowsing provides stamps for each filter level.
Blocks adult content, malware, phishing, and enforces Safe Search.
| Protocol | Address |
|---|---|
| IPv4 | 185.228.168.168:8443 |
| IPv6 | [2a0d:2a00:1::]:8443 |
IPv4 Stamp:
sdns://AQMAAAAAAAAAFDE4NS4yMjguMTY4LjE2ODo4NDQzILysMvrVQ2kXHwJh1C0SRDAqBwYaC0TQDEhp-DcY-0fYHjIuZG5zY3J5cHQtY2VydC5jbGVhbmJyb3dzaW5n
IPv6 Stamp:
sdns://AQMAAAAAAAAAFFsyYTBkOjJhMDA6MTo6XTo4NDQzILysMvrVQ2kXHwgy1gdQJ8MgjO7w6OmflBjcd2Bl1I8pEWNsZWFuYnJvd3Npbmcub3Jn
Blocks adult content and malware but does not enforce Safe Search or block mixed-content sites.
| Protocol | Address |
|---|---|
| IPv4 | 185.228.168.10:8443 |
| IPv6 | [2a0d:2a00:1::1]:8443 |
IPv4 Stamp:
sdns://AQMAAAAAAAAAEzE4NS4yMjguMTY4LjEwOjg0NDMgvKwy-tVDaRcfCDLWB1AnwyCM7vDo6Z-UGNx3YGXUjykRY2xlYW5icm93c2luZy5vcmc
IPv6 Stamp:
sdns://AQMAAAAAAAAAFVsyYTBkOjJhMDA6MTo6MV06ODQ0MyC8rDL61UNpFx8IMtYHUCfDIIzu8Ojpn5QY3HdgZdSPKRFjbGVhbmJyb3dzaW5nLm9yZw
Blocks only malware and phishing domains. No content filtering.
| Protocol | Address |
|---|---|
| IPv4 | 185.228.168.9:8443 |
| IPv6 | [2a0d:2a00:1::2]:8443 |
Edit the dnscrypt-proxy configuration file to use CleanBrowsing as your resolver. The configuration file is typically located at:
/etc/dnscrypt-proxy/dnscrypt-proxy.toml/usr/local/etc/dnscrypt-proxy.tomlC:\Program Files\dnscrypt-proxy\dnscrypt-proxy.tomlOpen the configuration file and add CleanBrowsing as a static entry. This example uses the Family Filter:
# At the top of dnscrypt-proxy.toml
server_names = ['cleanbrowsing-family']
# At the bottom, add a static server entry
[static]
[static.'cleanbrowsing-family']
stamp = 'sdns://AQMAAAAAAAAAFDE4NS4yMjguMTY4LjE2ODo4NDQzILysMvrVQ2kXHwJh1C0SRDAqBwYaC0TQDEhp-DcY-0fYHjIuZG5zY3J5cHQtY2VydC5jbGVhbmJyb3dzaW5n'
CleanBrowsing is included in the default dnscrypt-proxy public server list. You can simply set the server name:
server_names = ['cleanbrowsing-family']
Make sure the following sources are enabled in your configuration:
[sources]
[sources.'public-resolvers']
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md',
'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md']
cache_file = 'public-resolvers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = false
dnscrypt_servers = true
doh_servers = false
require_dnssec = false
require_nolog = false
require_nofilter = false
After configuring dnscrypt-proxy, start it and ensure it runs at boot.
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl status dnscrypt-proxy
sudo brew services start dnscrypt-proxy
If using Simple DNSCrypt, the service is managed through the GUI. For the standalone binary, install and start the service:
dnscrypt-proxy.exe -service install
dnscrypt-proxy.exe -service start
After starting dnscrypt-proxy, configure your system to use 127.0.0.1 as the DNS server. This directs all DNS queries through the local dnscrypt-proxy, which forwards them encrypted to CleanBrowsing.
On Linux, update /etc/resolv.conf:
nameserver 127.0.0.1
On macOS and Windows, set the DNS server to 127.0.0.1 in your network adapter settings.
Confirm that DNS queries are being encrypted and filtered through CleanBrowsing.
dig cleanbrowsing.org @127.0.0.1
You should receive a valid response. On Windows, use nslookup instead:
nslookup cleanbrowsing.org 127.0.0.1
View the dnscrypt-proxy log to confirm the connection to CleanBrowsing:
sudo journalctl -u dnscrypt-proxy --no-pager -n 50
Look for a line similar to:
[NOTICE] Server with the lowest initial latency: cleanbrowsing-family
Visit cleanbrowsing.org/checkfiltering in your browser to verify that CleanBrowsing filtering is active on your connection.
sudo systemctl disable --now systemd-resolved