79 lines
2.5 KiB
Nix
79 lines
2.5 KiB
Nix
|
{ config, lib, ... }:
|
||
|
with lib;
|
||
|
let
|
||
|
cfg = config.eboskma.unbound;
|
||
|
in
|
||
|
{
|
||
|
options.eboskma.unbound = { enable = mkEnableOption "unbound DNS"; };
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
services.unbound = {
|
||
|
enable = true;
|
||
|
localControlSocketPath = "/run/unbound/unbound.ctl";
|
||
|
settings = {
|
||
|
server = {
|
||
|
# Setting logfile to an empty string outputs to stderr
|
||
|
log-queries = false;
|
||
|
verbosity = 1;
|
||
|
|
||
|
port = 5335;
|
||
|
do-ip4 = true;
|
||
|
do-ip6 = true;
|
||
|
do-udp = true;
|
||
|
do-tcp = true;
|
||
|
prefer-ip6 = true;
|
||
|
|
||
|
hide-identity = true;
|
||
|
hide-version = true;
|
||
|
|
||
|
# Trust glue only if it is within the server's authority
|
||
|
harden-glue = true;
|
||
|
|
||
|
# Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS
|
||
|
harden-dnssec-stripped = true;
|
||
|
|
||
|
harden-referral-path = true;
|
||
|
|
||
|
# Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes
|
||
|
# see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details
|
||
|
use-caps-for-id = false;
|
||
|
|
||
|
# Reduce EDNS reassembly buffer size.
|
||
|
# Suggested by the unbound man page to reduce fragmentation reassembly problems
|
||
|
edns-buffer-size = 1472;
|
||
|
|
||
|
# Perform prefetching of close to expired message cache entries
|
||
|
# This only applies to domains that have been frequently queried
|
||
|
prefetch = true;
|
||
|
prefetch-key = true;
|
||
|
|
||
|
# This attempts to reduce latency by serving the outdated record before
|
||
|
# updating it instead of the other way around. Alternative is to increase
|
||
|
# cache-min-ttl to e.g. 3600.
|
||
|
cache-min-ttl = 0;
|
||
|
serve-expired = true;
|
||
|
|
||
|
rrset-cache-size = "256m";
|
||
|
msg-cache-size = "128m";
|
||
|
msg-cache-slabs = 4;
|
||
|
# One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1.
|
||
|
num-threads = 2;
|
||
|
|
||
|
# Ensure kernel buffer is large enough to not lose messages in traffic spikes
|
||
|
so-rcvbuf = "1m";
|
||
|
|
||
|
# Ensure privacy of local IP ranges
|
||
|
private-address = [
|
||
|
"192.168.0.0/16"
|
||
|
"169.254.0.0/16"
|
||
|
"172.16.0.0/12"
|
||
|
"10.0.0.0/8"
|
||
|
"fd00::/8"
|
||
|
"fe80::/10"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|