9 networkmanager.dns = lib.mkForce "none";
14 #resolvconf.enable = lib.mkForce false;
15 resolvconf.useLocalResolver = true;
16 dhcpcd.extraConfig = "nohook resolv.conf";
19 # Create a user for matching egress on it in the firewall
20 systemd.services.dnscrypt-proxy2.serviceConfig.User = "dnscrypt-proxy2";
21 users.users.dnscrypt-proxy2 = {
23 group = "dnscrypt-proxy2";
25 users.groups.dnscrypt-proxy2 = { };
26 services.dnscrypt-proxy2 = {
28 # https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml
29 upstreamDefaults = true;
31 bootstrap_resolvers = [
37 # ExplanationNote: DNSSEC does not work for NTP servers
38 # on machine with a clock set to far in the past.
39 pkgs.writeText "dnscrypt-proxy2-cloaking_rules" ''
40 0.nixos.pool.ntp.org 77.104.162.218
41 0.nixos.pool.ntp.org 129.250.35.250
42 0.nixos.pool.ntp.org 176.58.109.199
43 0.nixos.pool.ntp.org 213.210.39.123
44 1.nixos.pool.ntp.org 192.33.214.57
45 1.nixos.pool.ntp.org 31.3.135.232
46 1.nixos.pool.ntp.org 212.25.15.128
47 1.nixos.pool.ntp.org 109.233.182.115
48 2.nixos.pool.ntp.org 195.58.34.161
49 2.nixos.pool.ntp.org 81.0.208.219
50 2.nixos.pool.ntp.org 81.200.57.13
51 2.nixos.pool.ntp.org 188.124.59.142
52 2.nixos.pool.ntp.org 2606:4700:f1::123
53 2.nixos.pool.ntp.org 2001:470:6f:483::101
54 2.nixos.pool.ntp.org 2001:67c:d74:66::71be
55 2.nixos.pool.ntp.org 2001:718:801:230::8c
56 3.nixos.pool.ntp.org 88.198.200.96
57 3.nixos.pool.ntp.org 78.47.168.188
58 3.nixos.pool.ntp.org 62.128.1.18
59 3.nixos.pool.ntp.org 80.153.195.191
61 disabled_server_names = [
64 dnscrypt_servers = true;
66 fallback_resolvers = [
71 forwarding_rules = pkgs.writeText "dnscrypt-proxy2-forwarding_rules" '''';
72 ignore_system_dns = true;
76 #proxy = "socks5://127.0.0.1:9050";
78 netprobe_timeout = 60;
84 require_dnssec = true;
85 require_nofilter = true;
87 sources.public-resolvers = {
89 "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
90 "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
92 cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
93 minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
98 blocked_names_file = pkgs.writeText "dnscrypt-proxy2-blocked_names_file" ''
102 #log_file = 'dnscrypt-blacklist-domains.log'
107 networking.nftables.ruleset = ''
110 meta l4proto { udp, tcp } th dport domain skuid ${config.users.users.dnscrypt-proxy2.name} counter accept comment "dnscrypt-proxy2: DNS"
111 tcp dport https skuid ${config.users.users.dnscrypt-proxy2.name} counter accept comment "dnscrypt-proxy2: DNS over HTTPS"