2
0

dnscrypt-proxy.toml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  1. ##############################################
  2. # #
  3. # dnscrypt-proxy configuration #
  4. # #
  5. ##############################################
  6. ## This is an example configuration file.
  7. ## You should adjust it to your needs, and save it as "dnscrypt-proxy.toml"
  8. ##
  9. ## Online documentation is available here: https://dnscrypt.info/doc
  10. ##################################
  11. # Global settings #
  12. ##################################
  13. ## List of servers to use
  14. ##
  15. ## Servers from the "public-resolvers" source (see down below) can
  16. ## be viewed here: https://dnscrypt.info/public-servers
  17. ##
  18. ## The proxy will automatically pick working servers from this list.
  19. ## Note that the require_* filters do NOT apply when using this setting.
  20. ##
  21. ## By default, this list is empty and all registered servers matching the
  22. ## require_* filters will be used instead.
  23. ##
  24. ## Remove the leading # first to enable this; lines starting with # are ignored.
  25. # server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare']
  26. ## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6.
  27. ## Example with both IPv4 and IPv6:
  28. ## listen_addresses = ['127.0.0.1:53', '[::1]:53']
  29. ##
  30. ## To listen to all IPv4 addresses, use `listen_addresses = ['0.0.0.0:53']`
  31. ## To listen to all IPv4+IPv6 addresses, use `listen_addresses = ['[::]:53']`
  32. listen_addresses = ['127.0.0.1:53']
  33. ## Maximum number of simultaneous client connections to accept
  34. max_clients = 250
  35. ## Switch to a different system user after listening sockets have been created.
  36. ## Note (1): this feature is currently unsupported on Windows.
  37. ## Note (2): this feature is not compatible with systemd socket activation.
  38. ## Note (3): when using -pidfile, the PID file directory must be writable by the new user
  39. # user_name = 'nobody'
  40. ## Require servers (from remote sources) to satisfy specific properties
  41. # Use servers reachable over IPv4
  42. ipv4_servers = true
  43. # Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity
  44. ipv6_servers = false
  45. # Use servers implementing the DNSCrypt protocol
  46. dnscrypt_servers = true
  47. # Use servers implementing the DNS-over-HTTPS protocol
  48. doh_servers = true
  49. # Use servers implementing the Oblivious DoH protocol
  50. odoh_servers = false
  51. ## Require servers defined by remote sources to satisfy specific properties
  52. # Server must support DNS security extensions (DNSSEC)
  53. require_dnssec = false
  54. # Server must not log user queries (declarative)
  55. require_nolog = true
  56. # Server must not enforce its own blocklist (for parental control, ads blocking...)
  57. require_nofilter = true
  58. # Server names to avoid even if they match all criteria
  59. disabled_server_names = []
  60. ## Always use TCP to connect to upstream servers.
  61. ## This can be useful if you need to route everything through Tor.
  62. ## Otherwise, leave this to `false`, as it doesn't improve security
  63. ## (dnscrypt-proxy will always encrypt everything even using UDP), and can
  64. ## only increase latency.
  65. force_tcp = false
  66. ## SOCKS proxy
  67. ## Uncomment the following line to route all TCP connections to a local Tor node
  68. ## Tor doesn't support UDP, so set `force_tcp` to `true` as well.
  69. # proxy = 'socks5://127.0.0.1:9050'
  70. ## HTTP/HTTPS proxy
  71. ## Only for DoH servers
  72. # http_proxy = 'http://127.0.0.1:8888'
  73. ## How long a DNS query will wait for a response, in milliseconds.
  74. ## If you have a network with *a lot* of latency, you may need to
  75. ## increase this. Startup may be slower if you do so.
  76. ## Don't increase it too much. 10000 is the highest reasonable value.
  77. timeout = 5000
  78. ## Keepalive for HTTP (HTTPS, HTTP/2) queries, in seconds
  79. keepalive = 30
  80. ## Add EDNS-client-subnet information to outgoing queries
  81. ##
  82. ## Multiple networks can be listed; they will be randomly chosen.
  83. ## These networks don't have to match your actual networks.
  84. # edns_client_subnet = ["0.0.0.0/0", "2001:db8::/32"]
  85. ## Response for blocked queries. Options are `refused`, `hinfo` (default) or
  86. ## an IP response. To give an IP response, use the format `a:<IPv4>,aaaa:<IPv6>`.
  87. ## Using the `hinfo` option means that some responses will be lies.
  88. ## Unfortunately, the `hinfo` option appears to be required for Android 8+
  89. # blocked_query_response = 'refused'
  90. ## Load-balancing strategy: 'p2' (default), 'ph', 'p<n>', 'first' or 'random'
  91. ## Randomly choose 1 of the fastest 2, half, n, 1 or all live servers by latency.
  92. ## The response quality still depends on the server itself.
  93. # lb_strategy = 'p2'
  94. ## Set to `true` to constantly try to estimate the latency of all the resolvers
  95. ## and adjust the load-balancing parameters accordingly, or to `false` to disable.
  96. ## Default is `true` that makes 'p2' `lb_strategy` work well.
  97. # lb_estimator = true
  98. ## Log level (0-6, default: 2 - 0 is very verbose, 6 only contains fatal errors)
  99. # log_level = 2
  100. ## Log file for the application, as an alternative to sending logs to
  101. ## the standard system logging service (syslog/Windows event log).
  102. ##
  103. ## This file is different from other log files, and will not be
  104. ## automatically rotated by the application.
  105. # log_file = 'dnscrypt-proxy.log'
  106. ## When using a log file, only keep logs from the most recent launch.
  107. # log_file_latest = true
  108. ## Use the system logger (syslog on Unix, Event Log on Windows)
  109. # use_syslog = true
  110. ## Delay, in minutes, after which certificates are reloaded
  111. cert_refresh_delay = 240
  112. ## DNSCrypt: Create a new, unique key for every single DNS query
  113. ## This may improve privacy but can also have a significant impact on CPU usage
  114. ## Only enable if you don't have a lot of network load
  115. # dnscrypt_ephemeral_keys = false
  116. ## DoH: Disable TLS session tickets - increases privacy but also latency
  117. # tls_disable_session_tickets = false
  118. ## DoH: Use a specific cipher suite instead of the server preference
  119. ## 49199 = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  120. ## 49195 = TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  121. ## 52392 = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
  122. ## 52393 = TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
  123. ## 4865 = TLS_AES_128_GCM_SHA256
  124. ## 4867 = TLS_CHACHA20_POLY1305_SHA256
  125. ##
  126. ## On non-Intel CPUs such as MIPS routers and ARM systems (Android, Raspberry Pi...),
  127. ## the following suite improves performance.
  128. ## This may also help on Intel CPUs running 32-bit operating systems.
  129. ##
  130. ## Keep tls_cipher_suite empty if you have issues fetching sources or
  131. ## connecting to some DoH servers. Google and Cloudflare are fine with it.
  132. # tls_cipher_suite = [52392, 49199]
  133. ## Bootstrap resolvers
  134. ##
  135. ## These are normal, non-encrypted DNS resolvers, that will be only used
  136. ## for one-shot queries when retrieving the initial resolvers list and if
  137. ## the system DNS configuration doesn't work.
  138. ##
  139. ## No user queries will ever be leaked through these resolvers, and they will
  140. ## not be used after IP addresses of DoH resolvers have been found (if you are
  141. ## using DoH).
  142. ##
  143. ## They will never be used if lists have already been cached, and if the stamps
  144. ## of the configured servers already include IP addresses (which is the case for
  145. ## most of DoH servers, and for all DNSCrypt servers and relays).
  146. ##
  147. ## They will not be used if the configured system DNS works, or after the
  148. ## proxy already has at least one usable secure resolver.
  149. ##
  150. ## Resolvers supporting DNSSEC are recommended, and, if you are using
  151. ## DoH, bootstrap resolvers should ideally be operated by a different entity
  152. ## than the DoH servers you will be using, especially if you have IPv6 enabled.
  153. ##
  154. ## People in China may want to use 114.114.114.114:53 here.
  155. ## Other popular options include 8.8.8.8, 9.9.9.9 and 1.1.1.1.
  156. ##
  157. ## If more than one resolver is specified, they will be tried in sequence.
  158. ##
  159. ## TL;DR: put valid standard resolver addresses here. Your actual queries will
  160. ## not be sent there. If you're using DNSCrypt or Anonymized DNS and your
  161. ## lists are up to date, these resolvers will not even be used.
  162. bootstrap_resolvers = ['9.9.9.9:53', '8.8.8.8:53']
  163. ## Always use the bootstrap resolver before the system DNS settings.
  164. ignore_system_dns = true
  165. ## Maximum time (in seconds) to wait for network connectivity before
  166. ## initializing the proxy.
  167. ## Useful if the proxy is automatically started at boot, and network
  168. ## connectivity is not guaranteed to be immediately available.
  169. ## Use 0 to not test for connectivity at all (not recommended),
  170. ## and -1 to wait as much as possible.
  171. netprobe_timeout = 60
  172. ## Address and port to try initializing a connection to, just to check
  173. ## if the network is up. It can be any address and any port, even if
  174. ## there is nothing answering these on the other side. Just don't use
  175. ## a local address, as the goal is to check for Internet connectivity.
  176. ## On Windows, a datagram with a single, nul byte will be sent, only
  177. ## when the system starts.
  178. ## On other operating systems, the connection will be initialized
  179. ## but nothing will be sent at all.
  180. netprobe_address = '9.9.9.9:53'
  181. ## Offline mode - Do not use any remote encrypted servers.
  182. ## The proxy will remain fully functional to respond to queries that
  183. ## plugins can handle directly (forwarding, cloaking, ...)
  184. # offline_mode = false
  185. ## Additional data to attach to outgoing queries.
  186. ## These strings will be added as TXT records to queries.
  187. ## Do not use, except on servers explicitly asking for extra data
  188. ## to be present.
  189. ## encrypted-dns-server can be configured to use this for access control
  190. ## in the [access_control] section
  191. # query_meta = ['key1:value1', 'key2:value2', 'token:MySecretToken']
  192. ## Automatic log files rotation
  193. # Maximum log files size in MB - Set to 0 for unlimited.
  194. log_files_max_size = 10
  195. # How long to keep backup files, in days
  196. log_files_max_age = 7
  197. # Maximum log files backups to keep (or 0 to keep all backups)
  198. log_files_max_backups = 1
  199. #########################
  200. # Filters #
  201. #########################
  202. ## Note: if you are using dnsmasq, disable the `dnssec` option in dnsmasq if you
  203. ## configure dnscrypt-proxy to do any kind of filtering (including the filters
  204. ## below and blocklists).
  205. ## You can still choose resolvers that do DNSSEC validation.
  206. ## Immediately respond to IPv6-related queries with an empty response
  207. ## This makes things faster when there is no IPv6 connectivity, but can
  208. ## also cause reliability issues with some stub resolvers.
  209. block_ipv6 = false
  210. ## Immediately respond to A and AAAA queries for host names without a domain name
  211. block_unqualified = true
  212. ## Immediately respond to queries for local zones instead of leaking them to
  213. ## upstream resolvers (always causing errors or timeouts).
  214. block_undelegated = true
  215. ## TTL for synthetic responses sent when a request has been blocked (due to
  216. ## IPv6 or blocklists).
  217. reject_ttl = 10
  218. ##################################################################################
  219. # Route queries for specific domains to a dedicated set of servers #
  220. ##################################################################################
  221. ## See the `example-forwarding-rules.txt` file for an example
  222. # forwarding_rules = 'forwarding-rules.txt'
  223. ###############################
  224. # Cloaking rules #
  225. ###############################
  226. ## Cloaking returns a predefined address for a specific name.
  227. ## In addition to acting as a HOSTS file, it can also return the IP address
  228. ## of a different name. It will also do CNAME flattening.
  229. ##
  230. ## See the `example-cloaking-rules.txt` file for an example
  231. # cloaking_rules = 'cloaking-rules.txt'
  232. ## TTL used when serving entries in cloaking-rules.txt
  233. # cloak_ttl = 600
  234. ###########################
  235. # DNS cache #
  236. ###########################
  237. ## Enable a DNS cache to reduce latency and outgoing traffic
  238. cache = true
  239. ## Cache size
  240. cache_size = 4096
  241. ## Minimum TTL for cached entries
  242. cache_min_ttl = 60
  243. ## Maximum TTL for cached entries
  244. cache_max_ttl = 600
  245. ## Minimum TTL for negatively cached entries
  246. cache_neg_min_ttl = 60
  247. ## Maximum TTL for negatively cached entries
  248. cache_neg_max_ttl = 600
  249. ########################################
  250. # Captive portal handling #
  251. ########################################
  252. [captive_portals]
  253. ## A file that contains a set of names used by operating systems to
  254. ## check for connectivity and captive portals, along with hard-coded
  255. ## IP addresses to return.
  256. # map_file = 'example-captive-portals.txt'
  257. ##################################
  258. # Local DoH server #
  259. ##################################
  260. [local_doh]
  261. ## dnscrypt-proxy can act as a local DoH server. By doing so, web browsers
  262. ## requiring a direct connection to a DoH server in order to enable some
  263. ## features will enable these, without bypassing your DNS proxy.
  264. ## Addresses that the local DoH server should listen to
  265. # listen_addresses = ['127.0.0.1:3000']
  266. ## Path of the DoH URL. This is not a file, but the part after the hostname
  267. ## in the URL. By convention, `/dns-query` is frequently chosen.
  268. ## For each `listen_address` the complete URL to access the server will be:
  269. ## `https://<listen_address><path>` (ex: `https://127.0.0.1/dns-query`)
  270. # path = '/dns-query'
  271. ## Certificate file and key - Note that the certificate has to be trusted.
  272. ## See the documentation (wiki) for more information.
  273. # cert_file = 'localhost.pem'
  274. # cert_key_file = 'localhost.pem'
  275. ###############################
  276. # Query logging #
  277. ###############################
  278. ## Log client queries to a file
  279. [query_log]
  280. ## Path to the query log file (absolute, or relative to the same directory as the config file)
  281. ## Can be set to /dev/stdout in order to log to the standard output.
  282. # file = 'query.log'
  283. ## Query log format (currently supported: tsv and ltsv)
  284. format = 'tsv'
  285. ## Do not log these query types, to reduce verbosity. Keep empty to log everything.
  286. # ignored_qtypes = ['DNSKEY', 'NS']
  287. ############################################
  288. # Suspicious queries logging #
  289. ############################################
  290. ## Log queries for nonexistent zones
  291. ## These queries can reveal the presence of malware, broken/obsolete applications,
  292. ## and devices signaling their presence to 3rd parties.
  293. [nx_log]
  294. ## Path to the query log file (absolute, or relative to the same directory as the config file)
  295. # file = 'nx.log'
  296. ## Query log format (currently supported: tsv and ltsv)
  297. format = 'tsv'
  298. ######################################################
  299. # Pattern-based blocking (blocklists) #
  300. ######################################################
  301. ## Blocklists are made of one pattern per line. Example of valid patterns:
  302. ##
  303. ## example.com
  304. ## =example.com
  305. ## *sex*
  306. ## ads.*
  307. ## ads*.example.*
  308. ## ads*.example[0-9]*.com
  309. ##
  310. ## Example blocklist files can be found at https://download.dnscrypt.info/blocklists/
  311. ## A script to build blocklists from public feeds can be found in the
  312. ## `utils/generate-domains-blocklists` directory of the dnscrypt-proxy source code.
  313. [blocked_names]
  314. ## Path to the file of blocking rules (absolute, or relative to the same directory as the config file)
  315. # blocked_names_file = 'blocked-names.txt'
  316. ## Optional path to a file logging blocked queries
  317. # log_file = 'blocked-names.log'
  318. ## Optional log format: tsv or ltsv (default: tsv)
  319. # log_format = 'tsv'
  320. ###########################################################
  321. # Pattern-based IP blocking (IP blocklists) #
  322. ###########################################################
  323. ## IP blocklists are made of one pattern per line. Example of valid patterns:
  324. ##
  325. ## 127.*
  326. ## fe80:abcd:*
  327. ## 192.168.1.4
  328. [blocked_ips]
  329. ## Path to the file of blocking rules (absolute, or relative to the same directory as the config file)
  330. # blocked_ips_file = 'blocked-ips.txt'
  331. ## Optional path to a file logging blocked queries
  332. # log_file = 'blocked-ips.log'
  333. ## Optional log format: tsv or ltsv (default: tsv)
  334. # log_format = 'tsv'
  335. ######################################################
  336. # Pattern-based allow lists (blocklists bypass) #
  337. ######################################################
  338. ## Allowlists support the same patterns as blocklists
  339. ## If a name matches an allowlist entry, the corresponding session
  340. ## will bypass names and IP filters.
  341. ##
  342. ## Time-based rules are also supported to make some websites only accessible at specific times of the day.
  343. [allowed_names]
  344. ## Path to the file of allow list rules (absolute, or relative to the same directory as the config file)
  345. # allowed_names_file = 'allowed-names.txt'
  346. ## Optional path to a file logging allowed queries
  347. # log_file = 'allowed-names.log'
  348. ## Optional log format: tsv or ltsv (default: tsv)
  349. # log_format = 'tsv'
  350. #########################################################
  351. # Pattern-based allowed IPs lists (blocklists bypass) #
  352. #########################################################
  353. ## Allowed IP lists support the same patterns as IP blocklists
  354. ## If an IP response matches an allow ip entry, the corresponding session
  355. ## will bypass IP filters.
  356. ##
  357. ## Time-based rules are also supported to make some websites only accessible at specific times of the day.
  358. [allowed_ips]
  359. ## Path to the file of allowed ip rules (absolute, or relative to the same directory as the config file)
  360. # allowed_ips_file = 'allowed-ips.txt'
  361. ## Optional path to a file logging allowed queries
  362. # log_file = 'allowed-ips.log'
  363. ## Optional log format: tsv or ltsv (default: tsv)
  364. # log_format = 'tsv'
  365. ##########################################
  366. # Time access restrictions #
  367. ##########################################
  368. ## One or more weekly schedules can be defined here.
  369. ## Patterns in the name-based blocked_names file can optionally be followed with @schedule_name
  370. ## to apply the pattern 'schedule_name' only when it matches a time range of that schedule.
  371. ##
  372. ## For example, the following rule in a blocklist file:
  373. ## *.youtube.* @time-to-sleep
  374. ## would block access to YouTube during the times defined by the 'time-to-sleep' schedule.
  375. ##
  376. ## {after='21:00', before= '7:00'} matches 0:00-7:00 and 21:00-0:00
  377. ## {after= '9:00', before='18:00'} matches 9:00-18:00
  378. [schedules]
  379. # [schedules.'time-to-sleep']
  380. # mon = [{after='21:00', before='7:00'}]
  381. # tue = [{after='21:00', before='7:00'}]
  382. # wed = [{after='21:00', before='7:00'}]
  383. # thu = [{after='21:00', before='7:00'}]
  384. # fri = [{after='23:00', before='7:00'}]
  385. # sat = [{after='23:00', before='7:00'}]
  386. # sun = [{after='21:00', before='7:00'}]
  387. # [schedules.'work']
  388. # mon = [{after='9:00', before='18:00'}]
  389. # tue = [{after='9:00', before='18:00'}]
  390. # wed = [{after='9:00', before='18:00'}]
  391. # thu = [{after='9:00', before='18:00'}]
  392. # fri = [{after='9:00', before='17:00'}]
  393. #########################
  394. # Servers #
  395. #########################
  396. ## Remote lists of available servers
  397. ## Multiple sources can be used simultaneously, but every source
  398. ## requires a dedicated cache file.
  399. ##
  400. ## Refer to the documentation for URLs of public sources.
  401. ##
  402. ## A prefix can be prepended to server names in order to
  403. ## avoid collisions if different sources share the same for
  404. ## different servers. In that case, names listed in `server_names`
  405. ## must include the prefixes.
  406. ##
  407. ## If the `urls` property is missing, cache files and valid signatures
  408. ## must already be present. This doesn't prevent these cache files from
  409. ## expiring after `refresh_delay` hours.
  410. ## Cache freshness is checked every 24 hours, so values for 'refresh_delay'
  411. ## of less than 24 hours will have no effect.
  412. ## A maximum delay of 168 hours (1 week) is imposed to ensure cache freshness.
  413. [sources]
  414. ## An example of a remote source from https://github.com/DNSCrypt/dnscrypt-resolvers
  415. [sources.'public-resolvers']
  416. urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md', 'https://ipv6.download.dnscrypt.info/resolvers-list/v3/public-resolvers.md', 'https://download.dnscrypt.net/resolvers-list/v3/public-resolvers.md']
  417. cache_file = 'public-resolvers.md'
  418. minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  419. refresh_delay = 72
  420. prefix = ''
  421. ## Anonymized DNS relays
  422. [sources.'relays']
  423. urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/relays.md', 'https://ipv6.download.dnscrypt.info/resolvers-list/v3/relays.md', 'https://download.dnscrypt.net/resolvers-list/v3/relays.md']
  424. cache_file = 'relays.md'
  425. minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  426. refresh_delay = 72
  427. prefix = ''
  428. ## ODoH (Oblivious DoH) servers and relays
  429. # [sources.'odoh-servers']
  430. # urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-servers.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-servers.md', 'https://ipv6.download.dnscrypt.info/resolvers-list/v3/odoh-servers.md', 'https://download.dnscrypt.net/resolvers-list/v3/odoh-servers.md']
  431. # cache_file = 'odoh-servers.md'
  432. # minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  433. # refresh_delay = 24
  434. # prefix = ''
  435. # [sources.'odoh-relays']
  436. # urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-relays.md', 'https://ipv6.download.dnscrypt.info/resolvers-list/v3/odoh-relays.md', 'https://download.dnscrypt.net/resolvers-list/v3/odoh-relays.md']
  437. # cache_file = 'odoh-relays.md'
  438. # minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  439. # refresh_delay = 24
  440. # prefix = ''
  441. ## Quad9
  442. # [sources.quad9-resolvers]
  443. # urls = ['https://www.quad9.net/quad9-resolvers.md']
  444. # minisign_key = 'RWQBphd2+f6eiAqBsvDZEBXBGHQBJfeG6G+wJPPKxCZMoEQYpmoysKUN'
  445. # cache_file = 'quad9-resolvers.md'
  446. # prefix = 'quad9-'
  447. ## Another example source, with resolvers censoring some websites not appropriate for children
  448. ## This is a subset of the `public-resolvers` list, so enabling both is useless
  449. # [sources.'parental-control']
  450. # urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/parental-control.md', 'https://download.dnscrypt.info/resolvers-list/v3/parental-control.md', 'https://ipv6.download.dnscrypt.info/resolvers-list/v3/parental-control.md', 'https://download.dnscrypt.net/resolvers-list/v3/parental-control.md']
  451. # cache_file = 'parental-control.md'
  452. # minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  453. #########################################
  454. # Servers with known bugs #
  455. #########################################
  456. [broken_implementations]
  457. # Cisco servers currently cannot handle queries larger than 1472 bytes, and don't
  458. # truncate reponses larger than questions as expected by the DNSCrypt protocol.
  459. # This prevents large responses from being received over UDP and over relays.
  460. #
  461. # Older versions of the `dnsdist` server software had a bug with queries larger
  462. # than 1500 bytes. This is fixed since `dnsdist` version 1.5.0, but
  463. # some server may still run an outdated version.
  464. #
  465. # The list below enables workarounds to make non-relayed usage more reliable
  466. # until the servers are fixed.
  467. fragments_blocked = ['cisco', 'cisco-ipv6', 'cisco-familyshield', 'cisco-familyshield-ipv6', 'cleanbrowsing-adult', 'cleanbrowsing-adult-ipv6', 'cleanbrowsing-family', 'cleanbrowsing-family-ipv6', 'cleanbrowsing-security', 'cleanbrowsing-security-ipv6']
  468. #################################################################
  469. # Certificate-based client authentication for DoH #
  470. #################################################################
  471. # Use a X509 certificate to authenticate yourself when connecting to DoH servers.
  472. # This is only useful if you are operating your own, private DoH server(s).
  473. # 'creds' maps servers to certificates, and supports multiple entries.
  474. # If you are not using the standard root CA, an optional "root_ca"
  475. # property set to the path to a root CRT file can be added to a server entry.
  476. [doh_client_x509_auth]
  477. #
  478. # creds = [
  479. # { server_name='*', client_cert='client.crt', client_key='client.key' }
  480. # ]
  481. ################################
  482. # Anonymized DNS #
  483. ################################
  484. [anonymized_dns]
  485. ## Routes are indirect ways to reach DNSCrypt servers.
  486. ##
  487. ## A route maps a server name ("server_name") to one or more relays that will be
  488. ## used to connect to that server.
  489. ##
  490. ## A relay can be specified as a DNS Stamp (either a relay stamp, or a
  491. ## DNSCrypt stamp) or a server name.
  492. ##
  493. ## The following example routes "example-server-1" via `anon-example-1` or `anon-example-2`,
  494. ## and "example-server-2" via the relay whose relay DNS stamp is
  495. ## "sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM".
  496. ##
  497. ## !!! THESE ARE JUST EXAMPLES !!!
  498. ##
  499. ## Review the list of available relays from the "relays.md" file, and, for each
  500. ## server you want to use, define the relays you want connections to go through.
  501. ##
  502. ## Carefully choose relays and servers so that they are run by different entities.
  503. ##
  504. ## "server_name" can also be set to "*" to define a default route, for all servers:
  505. ## { server_name='*', via=['anon-example-1', 'anon-example-2'] }
  506. ##
  507. ## If a route is ["*"], the proxy automatically picks a relay on a distinct network.
  508. ## { server_name='*', via=['*'] } is also an option, but is likely to be suboptimal.
  509. ##
  510. ## Manual selection is always recommended over automatic selection, so that you can
  511. ## select (relay,server) pairs that work well and fit your own criteria (close by or
  512. ## in different countries, operated by different entities, on distinct ISPs...)
  513. # routes = [
  514. # { server_name='example-server-1', via=['anon-example-1', 'anon-example-2'] },
  515. # { server_name='example-server-2', via=['sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM'] }
  516. # ]
  517. # Skip resolvers incompatible with anonymization instead of using them directly
  518. skip_incompatible = false
  519. # If public server certificates for a non-conformant server cannot be
  520. # retrieved via a relay, try getting them directly. Actual queries
  521. # will then always go through relays.
  522. # direct_cert_fallback = false
  523. ###############################
  524. # DNS64 #
  525. ###############################
  526. ## DNS64 is a mechanism for synthesizing AAAA records from A records.
  527. ## It is used with an IPv6/IPv4 translator to enable client-server
  528. ## communication between an IPv6-only client and an IPv4-only server,
  529. ## without requiring any changes to either the IPv6 or the IPv4 node,
  530. ## for the class of applications that work through NATs.
  531. ##
  532. ## There are two options to synthesize such records:
  533. ## Option 1: Using a set of static IPv6 prefixes;
  534. ## Option 2: By discovering the IPv6 prefix from DNS64-enabled resolver.
  535. ##
  536. ## If both options are configured - only static prefixes are used.
  537. ## (Ref. RFC6147, RFC6052, RFC7050)
  538. ##
  539. ## Do not enable unless you know what DNS64 is and why you need it, or else
  540. ## you won't be able to connect to anything at all.
  541. [dns64]
  542. ## (Option 1) Static prefix(es) as Pref64::/n CIDRs.
  543. # prefix = ['64:ff9b::/96']
  544. ## (Option 2) DNS64-enabled resolver(s) to discover Pref64::/n CIDRs.
  545. ## These resolvers are used to query for Well-Known IPv4-only Name (WKN) "ipv4only.arpa." to discover only.
  546. ## Set with your ISP's resolvers in case of custom prefixes (other than Well-Known Prefix 64:ff9b::/96).
  547. ## IMPORTANT: Default resolvers listed below support Well-Known Prefix 64:ff9b::/96 only.
  548. # resolver = ['[2606:4700:4700::64]:53', '[2001:4860:4860::64]:53']
  549. ########################################
  550. # Static entries #
  551. ########################################
  552. ## Optional, local, static list of additional servers
  553. ## Mostly useful for testing your own servers.
  554. [static]
  555. # [static.'myserver']
  556. # stamp = 'sdns://AQcAAAAAAAAAAAAQMi5kbnNjcnlwdC1jZXJ0Lg'