dnscrypt-proxy
dnscrypt-resolvers
Our great sponsors
dnscrypt-proxy | dnscrypt-resolvers | |
---|---|---|
163 | 11 | |
10,912 | 1,117 | |
1.1% | 2.3% | |
8.4 | 9.1 | |
5 days ago | 10 days ago | |
Go | Python | |
ISC License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dnscrypt-proxy
-
What to do with your DNS when ODoH's Trust-Me-Bruh Model doesn't work for you
There is more than one way to do this but I have decided to use dnscrypt-proxy. We will not be using dnscrypt for the dnscrypt protocol though you could elect to use that as the underlying DNS protocol. dnscrypt-proxy lets's us use a SOCKS5 proxy through which the DNS queries will be sent. We will use a Tor SOCKS5 proxy here. You can choose which protocols should be enabled and which ones should be disabled. There are two points:
-
Installing DNSCrypt-Proxy on Silverblue - possible SELinux issue
I tried installing the RPM from the Fedora repos but it's out-of-date and there were no instructions on how to get it operational, so I went with the manual approach as per their wiki: https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-linux
-
SmartDNS – local DNS server that forwards to multiple upstream DNS servers
This is awesome, thanks -- going to look into that now. I found SmartDNS interesting and thought I would share it, it's pretty simple to setup. I can see why it's Chinese focused, they have "interesting" internet access over there :-).
I have been looking into DNS quite a bit lately (Unbound, etc), as DNS lookup performance has been pretty subpar lately. I'm in Perth, Australia, and we're pretty remote so our latency is meh at best, and Cloudflare performance has been all over the shop lately, I think they're having issues in WA). DNS can also cause really routing issues here sometimes as we get better latency to Singapore than Sydney, so we might get shunted off to SG.
I've also been using dnscrypt-proxy2 (https://github.com/DNSCrypt/dnscrypt-proxy) for a while, but the above issues with Cloudflares DNS is what triggered me to look into other options.
I use a min-cache-ttl of 15 minutes, which seems to work well.
Thank you for sharing this tip about, looking into this now :).
- I need help with DNScrypt proxy v2 and dnsmasq to prevent dns leaks
- trying to use Anonymized DNS with DNScrypty proxy v2 on openwrt router
- help with DNScrypt proxy v2 and dnsmasq to prevent dns leaks
-
Is using tailscale on a public unsecured wifi as safe as using a VPN?
Sure. I run dnscrypt_proxy behind a pihole. https://github.com/DNSCrypt/dnscrypt-proxy
- TotalPlay intercepta las peticiones de DNS y las suplanta.
- Dnscrypt-proxy package need to update
dnscrypt-resolvers
-
Unifi ad block bypasses pihole
Block the google, cloudflare ones - will cover most situations. Or white-list egress IPs for your unknown devices if you have to use them. Or setup a transparent proxy and inspect the content there and deny DNS. There ARE ways but yes things get a bit more complex. Most firewalls will be happy to index a long list of IPs as a set and perform well checking if src/dst ip matches. So you can use sites like https://github.com/dnscrypt/dnscrypt-resolvers to extract the list of IPs and update the set.
-
DNS0: The European public DNS that makes your internet safer
Since they don't seem to be mentioned on their website, DNS Stamps are sdns://AgMAAAAAAAAAACCaOjT3J965vKUQA9nOnDn48n3ZxSQpAcK6saROY1oCGQdkbnMwLmV1Ci9kbnMtcXVlcnk ("zero" version) and sdns://AgMAAAAAAAAAACCaOjT3J965vKUQA9nOnDn48n3ZxSQpAcK6saROY1oCGQxraWRzLmRuczAuZXUKL2Rucy1xdWVyeQ ("kids" version).
But these are already present in the list of public encrypted resolvers (https://github.com/DNSCrypt/dnscrypt-resolvers/blob/master/v...).
-
Encrypted DNS test/monitoring system
I had some spare time over the holiday period so I created a site that displays current information about the responses from the DNS servers listed in the public-resolvers.md file (https://github.com/DNSCrypt/dnscrypt-resolvers/blob/master/v3/public-resolvers.md) and makes the latest results available. Have a look at https://status.ednst.com/index.html for details on how to use the site.
-
Why are NextDNS servers not defined in the GRC DNS Benchmark Resolver List?
For servers using encryption, there are the most up-to-date lists: https://github.com/dnscrypt/dnscrypt-resolvers
-
FOSS Alternative to O&O ShutUp10? (Windows 10 hardening)
Github DNSCrypt/DNS Server
- Will Adguard support Anonymized DNSCrypt DNS Relays when using DNSCRYPT?
-
perhaps an incorrect configuration, resulting in a dns leak?
I use resolvers v3 myself there are six addresses installed in adguard home:
-
[FATAL] Unsupported key in configuration file: [fallback_resolver]
############################################## # # # dnscrypt-proxy configuration # # # ############################################## ## This is an example configuration file. ## You should adjust it to your needs, and save it as "dnscrypt-proxy.toml" ## ## Online documentation is available here: https://dnscrypt.info/doc ################################## # Global settings # ################################## ## List of servers to use ## ## Servers from the "public-resolvers" source (see down below) can ## be viewed here: https://dnscrypt.info/public-servers ## ## If this line is commented, all registered servers matching the require_* filters ## will be used. ## ## The proxy will automatically pick the fastest, working servers from the list. ## Remove the leading # first to enable this; lines starting with # are ignored. # server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare'] #server_names = [''] ## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6. listen_addresses = ['127.0.0.1:5392','[::1]:5392'] ## Maximum number of simultaneous client connections to accept max_clients = 250 ## Switch to a different system user after listening sockets have been created. ## Note (1): this feature is currently unsupported on Windows. ## Note (2): this feature is not compatible with systemd socket activation. ## Note (3): when using -pidfile, the PID file directory must be writable by the new user # user_name = 'nobody' ## Require servers (from static + remote sources) to satisfy specific properties # Use servers reachable over IPv4 ipv4_servers = true "/opt/dnscrypt-proxy/dnscrypt-proxy.toml" 613L, 18546C 1,0-1 Haut ## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6. listen_addresses = ['127.0.0.1:5392','[::1]:5392'] ## Maximum number of simultaneous client connections to accept max_clients = 250 ## Switch to a different system user after listening sockets have been created. # Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity ipv6_servers = true # Use servers implementing the DNSCrypt protocol dnscrypt_servers = true # Use servers implementing the DNS-over-HTTPS protocol doh_servers = true ## Require servers defined by remote sources to satisfy specific properties # Server must support DNS security extensions (DNSSEC) require_dnssec = true # Server must not log user queries (declarative) require_nolog = true # Server must not enforce its own blacklist (for parental control, ads blocking...) require_nofilter = true # Server names to avoid even if they match all criteria disabled_server_names = [] ## Always use TCP to connect to upstream servers. ## This can be useful if you need to route everything through Tor. ## Otherwise, leave this to `false`, as it doesn't improve security ## (dnscrypt-proxy will always encrypt everything even using UDP), and can ## only increase latency. force_tcp = false ## SOCKS proxy ## Uncomment the following line to route all TCP connections to a local Tor node ## Tor doesn't support UDP, so set `force_tcp` to `true` as well. # proxy = 'socks5://127.0.0.1:9050' ## HTTP/HTTPS proxy ## Only for DoH servers # http_proxy = 'http://127.0.0.1:8888' ## How long a DNS query will wait for a response, in milliseconds. ## If you have a network with *a lot* of latency, you may need to ## increase this. Startup may be slower if you do so. ## Don't increase it too much. 10000 is the highest reasonable value. timeout = 250 ## Keepalive for HTTP (HTTPS, HTTP/2) queries, in seconds keepalive = 30 ## Response for blocked queries. Options are `refused`, `hinfo` (default) or ## an IP response. To give an IP response, use the format `a:,aaaa:`. ## Using the `hinfo` option means that some responses will be lies. ## Unfortunately, the `hinfo` option appears to be required for Android 8+ # blocked_query_response = 'refused' ## Load-balancing strategy: 'p2' (default), 'ph', 'first' or 'random' # lb_strategy = 'p2' ## Set to `true` to constantly try to estimate the latency of all the resolvers ## and adjust the load-balancing parameters accordingly, or to `false` to disable. # lb_estimator = true ## Log level (0-6, default: 2 - 0 is very verbose, 6 only contains fatal errors) log_level = 1 ## log file for the application log_file = '/var/log/dnscrypt-proxy.log' ## Use the system logger (syslog on Unix, Event Log on Windows) # use_syslog = true ## Delay, in minutes, after which certificates are reloaded cert_refresh_delay = 60 ## DNSCrypt: Create a new, unique key for every single DNS query ## This may improve privacy but can also have a significant impact on CPU usage ## Only enable if you don't have a lot of network load # dnscrypt_ephemeral_keys = false ## DoH: Disable TLS session tickets - increases privacy but also latency # tls_disable_session_tickets = false ## DoH: Use a specific cipher suite instead of the server preference ## 49199 = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ## 49195 = TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ## 52392 = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 ## 52393 = TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 ## 4865 = TLS_AES_128_GCM_SHA256 ## 4867 = TLS_CHACHA20_POLY1305_SHA256 ## ## On non-Intel CPUs such as MIPS routers and ARM systems (Android, Raspberry Pi...), ## the following suite improves performance. ## This may also help on Intel CPUs running 32-bit operating systems. ## ## Keep tls_cipher_suite empty if you have issues fetching sources or ## connecting to some DoH servers. Google and Cloudflare are fine with it. tls_cipher_suite = [52392, 49199,4865, 4867] ## Fallback resolver ## This is a normal, non-encrypted DNS resolver, that will be only used ## for one-shot queries when retrieving the initial resolvers list, and ## only if the system DNS configuration doesn't work. ## No user application queries will ever be leaked through this resolver, ## and it will not be used after IP addresses of resolvers URLs have been found. ## It will never be used if lists have already been cached, and if stamps ## don't include host names without IP addresses. ## It will not be used if the configured system DNS works. ## A resolver supporting DNSSEC is recommended. This may become mandatory. ## ## People in China may need to use 114.114.114.114:53 here. ## Other popular options include 8.8.8.8 and 1.1.1.1. fallback_resolver = '9.9.9.9:53' ## Never let dnscrypt-proxy try to use the system DNS settings; ## unconditionally use the fallback resolver. ignore_system_dns = true ## Maximum time (in seconds) to wait for network connectivity before ## initializing the proxy. ## Useful if the proxy is automatically started at boot, and network ## connectivity is not guaranteed to be immediately available. ## Use 0 to not test for connectivity at all (not recommended), ## and -1 to wait as much as possible. netprobe_timeout = 60 ## Address and port to try initializing a connection to, just to check ## if the network is up. It can be any address and any port, even if ## there is nothing answering these on the other side. Just don't use ## a local address, as the goal is to check for Internet connectivity. ## On Windows, a datagram with a single, nul byte will be sent, only ## when the system starts. ## On other operating systems, the connection will be initialized ## but nothing will be sent at all. netprobe_address = '9.9.9.9:53' ## Offline mode - Do not use any remote encrypted servers. ## The proxy will remain fully functional to respond to queries that ## plugins can handle directly (forwarding, cloaking, ...) # offline_mode = false ## Additional data to attach to outgoing queries. ## These strings will be added as TXT records to queries. ## Do not use, except on servers explicitly asking for extra data ## to be present. # query_meta = ["key1:value1", "key2:value2", "key3:value3"] ## Automatic log files rotation # Maximum log files size in MB - Set to 0 for unlimited. log_files_max_size = 10 # How long to keep backup files, in days log_files_max_age = 7 # Maximum log files backups to keep (or 0 to keep all backups) log_files_max_backups = 1 ######################### # Filters # ######################### ## Immediately respond to IPv6-related queries with an empty response ## This makes things faster when there is no IPv6 connectivity, but can ## also cause reliability issues with some stub resolvers. ## Do not enable if you added a validating resolver such as dnsmasq in front ## of the proxy. block_ipv6 = false ## TTL for synthetic responses sent when a request has been blocked (due to ## IPv6 or blacklists). reject_ttl = 600 ################################################################################## # Route queries for specific domains to a dedicated set of servers # ################################################################################## ## Example map entries (one entry per line): ## example.com 9.9.9.9 ## example.net 9.9.9.9,8.8.8.8,1.1.1.1 # forwarding_rules = 'forwarding-rules.txt' ############################### # Cloaking rules # ############################### ## Cloaking returns a predefined address for a specific name. ## In addition to acting as a HOSTS file, it can also return the IP address ## of a different name. It will also do CNAME flattening. ## ## Example map entries (one entry per line) ## example.com 10.1.1.1 ## www.google.com forcesafesearch.google.com #cloaking_rules = '/etc/dnscrypt-proxy/cloaking-rules.txt' ## TTL used when serving entries in cloaking-rules.txt # cloak_ttl = 600 ########################### # DNS cache # ########################### ## Enable a DNS cache to reduce latency and outgoing traffic cache = false ## Cache size cache_size = 512 ## Minimum TTL for cached entries cache_min_ttl = 600 ## Maximum TTL for cached entries cache_max_ttl = 86400 ## Minimum TTL for negatively cached entries cache_neg_min_ttl = 60 ## Maximum TTL for negatively cached entries cache_neg_max_ttl = 600 ############################### # Query logging # ############################### ## Log client queries to a file [query_log] ## Path to the query log file (absolute, or relative to the same directory as the executable file) ## Can be /dev/stdout to log to the standard output (and set log_files_max_size to 0) # file = 'query.log' ## Query log format (currently supported: tsv and ltsv) format = 'tsv' ## Do not log these query types, to reduce verbosity. Keep empty to log everything. # ignored_qtypes = ['DNSKEY', 'NS'] ############################################ # Suspicious queries logging # ############################################ ## Log queries for nonexistent zones ## These queries can reveal the presence of malware, broken/obsolete applications, ## and devices signaling their presence to 3rd parties. [nx_log] ## Path to the query log file (absolute, or relative to the same directory as the executable file) # file = 'nx.log' ## Query log format (currently supported: tsv and ltsv) format = 'tsv' ###################################################### # Pattern-based blocking (blacklists) # ###################################################### ## Blacklists are made of one pattern per line. Example of valid patterns: ## ## example.com ## =example.com ## *sex* ## ads.* ## ads*.example.* ## ads*.example[0-9]*.com ## ## Example blacklist files can be found at https://download.dnscrypt.info/blacklists/ ## A script to build blacklists from public feeds can be found in the ## `utils/generate-domains-blacklists` directory of the dnscrypt-proxy source code. [blacklist] ## Path to the file of blocking rules (absolute, or relative to the same directory as the executable file) # blacklist_file = 'blacklist.txt' ## Optional path to a file logging blocked queries # log_file = 'blocked.log' ## Optional log format: tsv or ltsv (default: tsv) # log_format = 'tsv' ########################################################### # Pattern-based IP blocking (IP blacklists) # ########################################################### ## IP blacklists are made of one pattern per line. Example of valid patterns: ## ## 127.* ## fe80:abcd:* ## 192.168.1.4 [ip_blacklist] ## Path to the file of blocking rules (absolute, or relative to the same directory as the executable file) # blacklist_file = 'ip-blacklist.txt' ## Optional path to a file logging blocked queries # log_file = 'ip-blocked.log' ## Optional log format: tsv or ltsv (default: tsv) # log_format = 'tsv' ###################################################### # Pattern-based whitelisting (blacklists bypass) # ###################################################### ## Whitelists support the same patterns as blacklists ## If a name matches a whitelist entry, the corresponding session ## will bypass names and IP filters. ## ## Time-based rules are also supported to make some websites only accessible at specific times of the day. [whitelist] ## Path to the file of whitelisting rules (absolute, or relative to the same directory as the executable file) # whitelist_file = 'whitelist.txt' ## Optional path to a file logging whitelisted queries # log_file = 'whitelisted.log' ## Optional log format: tsv or ltsv (default: tsv) # log_format = 'tsv' ########################################## # Time access restrictions # ########################################## ## One or more weekly schedules can be defined here. ## Patterns in the name-based blocklist can optionally be followed with @schedule_name ## to apply the pattern 'schedule_name' only when it matches a time range of that schedule. ## ## For example, the following rule in a blacklist file: ## *.youtube.* @time-to-sleep ## would block access to YouTube only during the days, and period of the days ## define by the 'time-to-sleep' schedule. ## ## {after='21:00', before= '7:00'} matches 0:00-7:00 and 21:00-0:00 ## {after= '9:00', before='18:00'} matches 9:00-18:00 [schedules] # [schedules.'time-to-sleep'] # mon = [{after='21:00', before='7:00'}] # tue = [{after='21:00', before='7:00'}] # wed = [{after='21:00', before='7:00'}] # thu = [{after='21:00', before='7:00'}] # fri = [{after='23:00', before='7:00'}] # sat = [{after='23:00', before='7:00'}] # sun = [{after='21:00', before='7:00'}] # [schedules.'work'] # mon = [{after='9:00', before='18:00'}] # tue = [{after='9:00', before='18:00'}] # wed = [{after='9:00', before='18:00'}] # thu = [{after='9:00', before='18:00'}] # fri = [{after='9:00', before='17:00'}] ######################### # Servers # ######################### ## Remote lists of available servers ## Multiple sources can be used simultaneously, but every source ## requires a dedicated cache file. ## ## A prefix can be prepended to server names in order to ## avoid collisions if different sources share the same for ## ## If the `urls` property is missing, cache files and valid signatures ## must be already present; This doesn't prevent these cache files from ## expiring after `refresh_delay` hours. [sources] ## An example of a remote source from https://github.com/DNSCrypt/dnscrypt-resolvers [sources.'public-resolvers'] urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md'] cache_file = 'public-resolvers.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' prefix = '' ## Anonymized DNS relays [sources.'relays'] urls = ['https://github.com/DNSCrypt/dnscrypt-resolvers/raw/master/v2/relays.md', 'https://download.dnscrypt.info/resolvers-list/v2/relays.md'] cache_file = 'relays.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 72 prefix = '' ## Quad9 over DNSCrypt - https://quad9.net/ # [sources.quad9-resolvers] # urls = ['https://www.quad9.net/quad9-resolvers.md'] # minisign_key = 'RWQBphd2+f6eiAqBsvDZEBXBGHQBJfeG6G+wJPPKxCZMoEQYpmoysKUN' # cache_file = 'quad9-resolvers.md' # prefix = 'quad9-' ## Another example source, with resolvers censoring some websites not appropriate for children ## This is a subset of the `public-resolvers` list, so enabling both is useless # [sources.'parental-control'] # urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/parental-control.md', 'https://download.dnscrypt.info/resolvers-list/v2/parental-control.md'] # cache_file = 'parental-control.md' # minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' ################################ # Anonymized DNS # ################################ [anonymized_dns] routes = [{ server_name='*', via=['sdns://gRE1MS4xNTguMTA2LjQyOjQ0Mw','sdns://gRE1MS4xNS4xMDYuMTc2OjQ0Mw','sdns://gRIxMzkuOTkuMjIyLjcyOjg0NDM','sdns://gR5bMmEwMzpiMGMwOjE6ZTA6OjJlM zplMDAxXTo0NDM','sdns://gRI4OS4xNjMuMjE0LjE3NDo0NDM']} ] ## Routes are indirect ways to reach DNSCrypt servers. ## ## A route maps a server name ("server_name") to one or more relays that will be ## used to connect to that server. ## ## A relay can be specified as a DNS Stamp (either a relay stamp, or a ## DNSCrypt stamp), an IP:port, a hostname:port, or a server name. ## ## The following example routes "example-server-1" via `anon-example-1` or `anon-example-2``, ## and "example-server-2" via the relay whose relay DNS stamp ## is "sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM". ## ## !!! THESE ARE JUST EXAMPLES !!! ## ## Review the list of available relays from the "relays.md` file, and, for each ## server you want to use, define the relays you want connections to go through. ## ## Carefully choose relays and servers so that the are run by different entities. ## ## "server_name" can also be set to "*" to define a default route, but this is not ## recommended. if you do so, keep "server_names" short and distinct from relays. # routes = [ # { server_name='example-server-1', via=['anon-example-1', 'anon-example-2'] }, # { server_name='example-server-2', via=['sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM'] } # ] ## Optional, local, static list of additional servers ## Mostly useful for testing your own servers. #[static] # [static.'myserver'] # stamp = 'sdns:AQcAAAAAAAAAAAAQMi5kbnNjcnlwdC1jZXJ0Lg'
-
Questions about Anonymized DNS and ODoH
list of odoh relays can be found here: https://github.com/DNSCrypt/dnscrypt-resolvers/blob/master/v3/odoh-relays.md
- Worth the read? ODoH (Oblivious DoH)
What are some alternatives?
GoodbyeDPI - GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)
encrypted-dns-server - An easy to install, high-performance, zero maintenance proxy to run an encrypted DNS server.
cloudflared - Cloudflare Tunnel client (formerly Argo Tunnel)
SimpleDnsCrypt - A simple management tool for dnscrypt-proxy
nextdns - NextDNS CLI client (DoH Proxy)
dnscrypt-server-docker - A Docker image for a non-censoring, non-logging, DNSSEC-capable, DNSCrypt-enabled DNS resolver
DNS-over-HTTPS - An implementation of RFC 8484 - DNS Queries over HTTPS (DoH).
DnsLibs - DNS filtering library that's used in AdGuard products
shift-rmm
spksrc - Cross compilation framework to create native packages for the Synology's NAS
udm-utilities - A collection of enhancements for UnifiOS based devices [Moved to: https://github.com/unifi-utilities/unifios-utilities]
Sophia-Script-for-Windows - :zap: The most powerful PowerShell module on GitHub for fine-tuning Windows 10 & Windows 11