HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jedisct1
dnscrypt-proxy
Go2012–2019
jedisct1 / dnscrypt-proxy

dnscrypt-proxy

dnscrypt-proxy 2 - A flexible DNS proxy, with support for encrypted DNS protocols.

27Distinct people
53Mentions
1Explicit recommenders
9GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

dnscrypt-proxy 2 - A flexible DNS proxy, with support for encrypted DNS protocols.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Snap, hours later as I was looking for some things relating to setting up dnscrypt-proxy2 I landed on https://github.com/jedisct1/dnscrypt-proxy and spotted a certain…

codetrotter used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 1:57:11 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year53 dated mentions

Observed mentions: 2012-07-17 05:25:17 UTC to 2019-08-17 13:01:40 UTC.

01020302012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 27 mentions; 3 submissions, 24 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 12 mentions; 4 submissions, 8 comments2019

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC110
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC404
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC606
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC27324
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC1248

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Overview A flexible DNS proxy, with support for modern encrypted DNS protocols such as DNSCrypt v2 including Post-Quantum DNSCrypt (DNSCrypt 2026), DNS-over-HTTPS, Anonymized DNSCrypt and ODoH (Oblivious DoH). dnscrypt-proxy documentation ← Start here DNSCrypt project home page Discussions DNS-over-HTTPS and DNSCrypt resolvers Server and client implementations DNS stamps FAQ Download the latest release Available as source code and pre-built binaries for most operating systems and architectures (see below). Features DNS traffic encryption and authentication. Supports DNS-over-HTTPS (DoH) using TLS 1.3 and QUIC, PQDNSCrypt, DNSCrypt, Anonymized DNS and ODoH Client IP addresses can be hidden using Tor, SOCKS proxies or Anonymized DNS relays DNS query monitoring, with separate log files for regular and suspicious queries Filtering: block ads, malware, and other unwanted content. Compatible with all DNS services Time-based filtering, with a flexible weekly schedule Transparent redirection of specific domains to specific resolvers Optional hot-reloading of configuration files (disabled by default from v2.1.10) DNS caching, to reduce latency and improve privacy Local IPv6 blocking to reduce latency on IPv4-only networks Load balancing: pick a set of resolvers, dnscrypt-proxy will automatically measure and keep track of their speed, and balance the traffic across the fastest available ones. Cloaking: like a HOSTS file on steroids, that can return preconfigured addresses for specific names, or resolve and return the IP address of other names. This can be used for local development as well as to enforce safe search results on Google, Yahoo, DuckDuckGo and Bing Automatic background updates of resolvers lists Can force outgoing connections to use TCP Compatible with DNSSEC Includes a local DoH server in order to support ECH (ESNI) Pre-built binaries Up-to-date, pre-built binaries are available for: Android/arm Android/arm64 Android/x86 Android/x86_64 Dragonfly BSD FreeBSD/arm FreeBSD/x86 FreeBSD/x86_64 Linux/arm Linux/arm64 Linux/mips Linux/mipsle Linux/mips64 Linux/mips64le Linux/x86 Linux/x86_64 macOS/arm64 macOS/x86_64 NetBSD/x86 NetBSD/x86_64 OpenBSD/x86 OpenBSD/x86_64 Windows Windows 64 bit Windows ARM How to use these files, as well as how to verify their signatures, are documented in the installation instructions. Contributors Code Contributors This project exists thanks to all the people who contribute. Financial Contributors Become a financial contributor and help us sustain our community. [Contribute] Individuals Organizations Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
Read the full README on GitHub

What Hacker News says

27 sources
For 10$/year I am running a VPS server in Amsterdam with strongswan ([1] VPN server) and dnscrypt-proxy 2.0 ([2] DNS server which is dispersing queries to multiple DNSCrypt servers and also blocking various ads and bad agents) on it. I also keep nginx to avoid pinging Apple or Google for checking if internet works (captive.apple.com, http://connectivitycheck.gstatic.com/generate_204 are re-routed to my own server). Finally it is incredibly simple to use nginx to serve DNS-over-TLS from your own machine (so from my dnscypt-proxy) for using on Android Pie. Works on mobile as well. [3] [1] https://strongswan.org/ [2] https://github.com/jedisct1/dnscrypt-proxy [3] https://github.com/jedisct1/dnscrypt-proxy/wiki/Connecting-t...
In AdGuard DNS: A Privacy-Oriented DNS Server
DNSCrypt-Proxy[1] already supports the randomized DNS resolver need[2]. It also supports DNS-over-HTTPS, providing assurance that even your ISP won't be able to snoop on all of your DNS queries. While it doesn't support live comparison of DNS results, it can log out entries per DNS resolver and you can post-process those logs to validate their responses against each other, considering your queries will over time hit different resolvers. Not perfect since there are legitimate reasons to return different responses over time, but it's something. [1] https://github.com/jedisct1/dnscrypt-proxy [2] https://github.com/jedisct1/dnscrypt-proxy/wiki/Load-Balanci...
In Tell HN: Amazon now owns 3.0.0.0/8
Thanks for mentioning an alternative. It is extra work either way. What is better performance though? I'm using dnsmasq with Pi-Hole's blocklists, and forwarding to unbound for DNS over TLS. Forwarding to another client such as doh-client could also work though I'm not sure how this would work with Quad9. My router is being backup for this ensure there's less load on the MIPS machine. Go is cross-platform, sure. However dnscrypt-proxy [1] is also very portable. [1] https://github.com/jedisct1/dnscrypt-proxy
In DNS over TLS – Thoughts and Implementation
Pretty much there are 3 competing implementations for DNS resolution encryption (won't call it security): * DNSCrypt * DNS over TLS * DNS over HTTPS If you are looking for something well tested and well supported, check out DNSCrypt (and the awesome DNSCrypt-proxy): https://github.com/jedisct1/dnscrypt-proxy It doesn't get a much love as it should, but it is probably the best way to secure encrypt your DNS requests right now. The protocol was initially developed by OpenDNS, but many resolvers support it right now (cisco, cleanbrowsing, etc). The list of supporting services is impressive: https://download.dnscrypt.info/dnscrypt-resolvers/v2/public-... On the other hand, DNS over [HTTPS|TLS] are pretty new and don't have as much support, except for a few players. A good list if here as well: https://www.reddit.com/r/sysadmin/comments
Read the rest
In DNS over TLS – Thoughts and Implementation
Quite the opposite, actually. A DNSCrypt client can be implemented in a couple lines of Python: https://github.com/tresni/dnspython-dnscrypt/blob/master/dns... It probably took about 15 minutes to write these. Writing a fully functional client in Go, which is the core of dnscrypt-proxy 2, took about the same time: https://github.com/jedisct1/dnscrypt-proxy/commit/b076e01f7a... Correctly implementing DNS-over-TLS is way more complicated. It has to use TCP. So in order to avoid it being vulnerable to the most trivial slowloris attack, you need to implement a connection pool, reuse old connections, timers to enforce timeouts. If you want half-decent performance, you need to make sure that multiple, out-of-order queries and responses can be sent over the same connection. This requires tracking query identifiers, making sure that there are no
Read the rest
ID collisions in inflight queries, and if you are just building a proxy, you can’t expect any upstream server to support this. TLS session tickets allow DNS operators to track devices no matter what their IP are. TCP sessions allow DNS operators to fingerprint devices sharing the same external IP. From a privacy perspective, this is effectively a regression over plain DNS. So for people who care about this, you need to add the ability to disable these. Performance will be terrible, but that’s what you get for using a transport protocol that was never designed for DNS. This can be partially mitigated with DoH using forthcoming HTTP/2 extensions. But for raw TLS that doesn’t allow much except send() and receive() packets, there’s no hope without reinventing HTTP. Encrypted DNS requires padding. The way to do padding in DNS-over-TLS is to add extra records to DNS packets. So you need to parse and modify DNS packets. Which is slow and painful to write, if only because of name compression. Instead of that lousy hack, DNS-over-HTTP/2 can simply use existing HTTP/2 mechanisms: HTTP/2 frames already support padding. DNSCrypt doesn’t require packets to be parsed or modified either; padding bytes are simply appended to raw DNS packets before encryption, and are trivial to remove after decryption. As we recently saw, DNS-over-TLS is virtually useless against attacks such as BGP hijacks, unless certificates are pinned. So, you need to implement pinning. Figuring out how to do it using the OpenSSL API is going to keep you busy for quite some time. DNSCrypt only requires one function call to verify a signature. DNS-over-HTTP/2 can leverage what browsers and modern HTTP library already do. So, implementing DNS-over-TLS is hard. It’s not just about sticking stunnel in front of a stub resolver. Even just the TLS part is hard to implement securely. Validating TLS certificates in non-browser software remains the most dangerous code in the world: https://crypto.stanford.edu/~dabo/pubs/abstracts/ssl-client-... But it’s also pointless. Other protocols are easier to implement and more efficient. And from a server perspective, proposing DNS-over-TLS means that there is yet another thing to do certificate management for. Key management is hard. It’s the root cause of virtually all DNSSEC outages, and why people gave up with DNSSEC or didn’t even try. Software supposed to automate this exist, but the reality remains the same. In contrast, key management has been solved in the HTTP world. Through built-in support in web servers, ACME clients, CDNs and proxies. People already run web sites. Let them leverage what they already have and that works well instead of forcing them to go back to square one and figure out how to do key management for DNS. Ditto for authentication and logging. Which is why DNS-over-HTTP/2 makes way more sense than DNS-over-TLS DNS-over-TLS also requires a dedicated port. Which is even not reachable from many restricted network environments such as the WiFi network I am currently on. This kinda defeats the whole point of the protocol. DNS-over-HTTP/2 uses the one port that is less likely to be blocked, and is fully compatible with proxies including transparent ones from mobile carriers. DNSCrypt also uses port 443 by default, can use TCP only if required, but it doesn’t even need a dedicated port either; DNSCrypt and regular DNS can share the same port, as done by Cisco servers. So, DNS-over-TLS is hard to implement. Hard to deploy. Difficult to connect to. Slow. Won’t get any better without reinventing HTTP. Feels like it was invented 20 years ago, but it doesn’t really make sense any more today.
In A cartoon intro to DNS over HTTPS

Showing the 15 most recent of 27 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.