mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 08:28:11 +09:00
99 lines
1.7 KiB
Nix
99 lines
1.7 KiB
Nix
{ lib, ... }:
|
|
let
|
|
dohPort = 5300;
|
|
|
|
dohLocalUpstream = "127.0.0.1#${toString dohPort}";
|
|
|
|
internalDns = [
|
|
"10.50.80.53"
|
|
"10.50.80.54"
|
|
|
|
# "fd00:50:80::53"
|
|
# "fd00:50:80::54"
|
|
];
|
|
|
|
internalZones = [
|
|
"app.homelabs.run"
|
|
];
|
|
|
|
internalDnsServers = lib.concatMap (zone: map (dns: "/${zone}/${dns}") internalDns) internalZones;
|
|
in
|
|
{
|
|
services.resolved.enable = false;
|
|
|
|
networking.networkmanager.dns = "none";
|
|
|
|
services.dnscrypt-proxy = {
|
|
enable = true;
|
|
|
|
upstreamDefaults = true;
|
|
|
|
settings = {
|
|
listen_addresses = [
|
|
"127.0.0.1:${toString dohPort}"
|
|
];
|
|
|
|
server_names = [
|
|
"cloudflare"
|
|
"cloudflare-ipv6"
|
|
];
|
|
|
|
ipv4_servers = true;
|
|
ipv6_servers = true;
|
|
|
|
dnscrypt_servers = false;
|
|
doh_servers = true;
|
|
odoh_servers = false;
|
|
|
|
cache = false;
|
|
|
|
block_ipv6 = false;
|
|
|
|
ignore_system_dns = true;
|
|
|
|
bootstrap_resolvers = [
|
|
"9.9.9.11:53"
|
|
"149.112.112.11:53"
|
|
"[2620:fe::11]:53"
|
|
"[2620:fe::fe:11]:53"
|
|
];
|
|
|
|
netprobe_address = "1.1.1.1:443";
|
|
|
|
timeout = 5000;
|
|
keepalive = 30;
|
|
};
|
|
};
|
|
|
|
services.dnsmasq = {
|
|
enable = true;
|
|
|
|
resolveLocalQueries = true;
|
|
|
|
settings = {
|
|
no-resolv = true;
|
|
|
|
local-service = "host";
|
|
|
|
server = [ dohLocalUpstream ] ++ internalDnsServers;
|
|
|
|
all-servers = true;
|
|
|
|
cache-size = 10000;
|
|
|
|
dns-loop-detect = true;
|
|
domain-needed = true;
|
|
bogus-priv = true;
|
|
};
|
|
};
|
|
|
|
systemd.services.dnsmasq = {
|
|
wants = [ "dnscrypt-proxy.service" ];
|
|
after = [ "dnscrypt-proxy.service" ];
|
|
};
|
|
|
|
security.pki.certificateFiles = [
|
|
./root_ca.crt
|
|
];
|
|
}
|