Skip to content

Commit c2abd96

Browse files
committed
feat: (nixos/network): swap bind for coredns
1 parent 2b1ee34 commit c2abd96

File tree

4 files changed

+52
-47
lines changed

4 files changed

+52
-47
lines changed

hosts/quasar/services/adguard.nix

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ let
1414
host = "${name}.${address}";
1515
hostDNS = "dns.${address}";
1616
port = toString cfg.ports.adguard;
17+
portDNS = toString cfg.ports.adguarddns;
1718

1819
webports = "${port}:${port}";
1920
mkTLstr = type: "traefik.http.${type}.${name}";
@@ -36,17 +37,17 @@ in {
3637

3738
ports = [
3839
webports # frontend
39-
"1053:53/tcp" # DNS
40-
"1053:53/udp" # DNS
40+
"${portDNS}:53/tcp" # DNS
41+
"${portDNS}:53/udp" # DNS
4142
# "67:67/udp" # DHCP
4243
# "68:68/tcp" # DHCP
4344
# "68:68/udp" # DHCP
4445
# "80:80/tcp" # DNS over HTTPS
4546
"1443:1443/tcp" # DNS over HTTPS
4647
"1443:1443/udp" # DNS over HTTPS
47-
"853:853/tcp" # DNS over TLS
4848
"784:784/udp" # DNS over QUIC
4949
"853:853/udp" # DNS over QUIC
50+
"853:853/tcp" # DNS over TLS
5051
"8853:8853/udp" # DNS over QUIC
5152
# "5443:5443/tcp" # DNScrypt
5253
# "5443:5443/udp" # DNScrypt
@@ -69,6 +70,8 @@ in {
6970
inherit (config.services.traefik) group;
7071
};
7172
};
72-
73-
networking.firewall.allowedTCPPorts = [ 853 ];
73+
networking.firewall = {
74+
allowedTCPPorts = [ 853 ];
75+
allowedUDPPorts = [ 853 ];
76+
};
7477
}

hosts/quasar/services/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ in {
1313
# TODO: group by type & use consistent values
1414
nas.ports = {
1515
adguard = 9900;
16+
adguarddns = 1053;
1617
apprise = 9005;
1718
bazarr = 6767;
1819
calibre = 8805;

modules/nixos/network/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ in {
9292
# host only
9393
dash = host 4000;
9494
grafana = host 3000;
95-
prometheus = host 9090;
95+
prometheus = host 3001;
9696
loki = host 3002;
9797
};
9898
};

modules/nixos/network/dns.nix

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,65 +4,66 @@ let
44
cfg = config.network;
55
enabled = cfg.enable && cfg.isHost;
66

7-
inherit (cfg) domain;
7+
inherit (cfg) address domain hostIP;
8+
9+
port = toString 53;
810
in {
911
config = lib.mkIf enabled {
10-
services.bind = {
12+
services.coredns = {
1113
enable = true;
1214

13-
forwarders = [
14-
# local adguard home
15-
"0.0.0.0 port 1053"
16-
];
15+
config = let
16+
enabledHosts = builtins.filter (host:
17+
host != "nixiso"
18+
&& self.nixosConfigurations.${host}.config.network.enable) hostnames;
1719

18-
cacheNetworks = [
19-
"192.168.1.0/24"
20-
"192.168.50.0/24"
21-
"10.0.0.0/24"
22-
"127.0.0.0/24"
23-
"::1/128"
24-
];
20+
zonePairs = map (hostname: {
21+
inherit hostname;
22+
inherit (self.nixosConfigurations.${hostname}.config.network) ip;
23+
}) enabledHosts;
2524

26-
zones = let
27-
mkZone = { name, ip }: {
28-
name = "${name}.${domain}";
29-
master = true;
30-
file = pkgs.writeText "${name}.${domain}.zone" ''
25+
mkZoneFile = hostname: ip:
26+
pkgs.writeText "${hostname}.${domain}.zone" ''
3127
$TTL 3600
3228
33-
$ORIGIN ${name}.${domain}.
34-
@ IN SOA ns.${name}.${domain}. info.${domain}. (
35-
2024082302 ; serial
36-
12h ; refresh
37-
15m ; retry
38-
3w ; expire
39-
2h ; minimum ttl
40-
)
29+
$ORIGIN ${hostname}.${domain}.
30+
@ IN SOA ns.${hostname}.${domain}. info.${domain}. (
31+
2024090300 ; serial
32+
12h ; refresh
33+
15m ; retry
34+
3w ; expire
35+
2h ; minimum ttl
36+
)
4137
42-
IN NS ns.${name}.${domain}.
38+
IN NS ns.${hostname}.${domain}.
4339
44-
ns IN A ${ip}
40+
ns IN A ${ip}
4541
4642
; -- add dns records below
4743
48-
@ IN A ${ip}
49-
* IN A ${ip}
44+
@ IN A ${ip}
45+
* IN A ${ip}
5046
'';
51-
};
5247

53-
enabledHosts = builtins.filter (host:
54-
host != "nixiso"
55-
&& self.nixosConfigurations.${host}.config.network.enable) hostnames;
56-
zonePairs = map (host:
57-
mkZone {
58-
name = host;
59-
inherit (self.nixosConfigurations.${host}.config.network) ip;
60-
}) enabledHosts;
61-
in zonePairs;
48+
zoneEntries = map ({ hostname, ip }: ''
49+
${hostname}.${domain}:${port} {
50+
file ${mkZoneFile hostname ip}
51+
log
52+
}
53+
'') zonePairs;
54+
in ''
55+
.:${port} {
56+
forward . tls://${hostIP} { tls_servername dns.${address} }
57+
cache
58+
log
59+
}
60+
61+
${lib.concatStringsSep "\n" zoneEntries}
62+
'';
6263
};
6364

6465
networking = {
65-
resolvconf.useLocalResolver = true;
66+
resolvconf.useLocalResolver = false;
6667

6768
firewall.allowedTCPPorts = [ 53 ];
6869
firewall.allowedUDPPorts = [ 53 ];

0 commit comments

Comments
 (0)