feat(dns01): init DNS config (#9)
Some checks failed
lint / check (push) Successful in 23s
build configuration / build_krz01 (push) Failing after 1m23s

Reviewed-on: #9
Co-authored-by: Constantin Gierczak--Galle <git.cst1@mailbox.org>
Co-committed-by: Constantin Gierczak--Galle <git.cst1@mailbox.org>
This commit is contained in:
Constantin Gierczak--Galle 2024-12-07 12:53:31 +01:00 committed by cst1
parent 1f82719dcb
commit 862168b2bc
4 changed files with 67 additions and 31 deletions

View file

@ -10,7 +10,17 @@ lib.extra.mkConfig {
"nsd" "nsd"
]; ];
extraConfig = { }; extraConfig = {
# TODO : retrieve this address from meta/network.nix
deployment.targetHost = "45.13.104.26";
networking.firewall = {
enable = true;
logRefusedConnections = lib.mkForce true;
logRefusedPackets = lib.mkForce true;
allowedTCPPorts = [ 53 ];
allowedUDPPorts = [ 53 ];
};
};
root = ./.; root = ./.;
} }

View file

@ -1,22 +0,0 @@
{ dns, ... }:
with dns.lib.combinators;
{
SOA = {
nameServer = "ns1";
adminEmail = "webmaster@dgnum.eu";
serial = 2019030800;
};
NS = [
# TODO: add nameservers with GLUE and everything
];
#A = [ "203.0.113.1" ];
#AAAA = [ "4321:0:1:2:3:4:567:89ab" ];
subdomains = {
photoprism = host "129.199.146.101" null;
immich = host "129.199.146.101" null;
};
}

View file

@ -0,0 +1,51 @@
{ dns, lib, ... }:
let
inherit (lib) mapAttrs' nameValuePair;
meta = (import ./../../meta) lib;
in
with dns.lib.combinators;
{
SOA = {
nameServer = "ns01.lab.dgnum.eu";
adminEmail = "dns@dgnum.eu";
serial = 2019030800;
retry = 3600;
minimum = 300;
};
NS = [ "ns01.lab.dgnum.eu." ];
#A = [ "203.0.113.1" ];
#AAAA = [ "4321:0:1:2:3:4:567:89ab" ];
subdomains = {
# Hosted services
# NOTE: for now manually supplied, in the future automatically filled in
photoprism = host "129.199.146.101" null;
immich = host "129.199.146.101" null;
# Nameservers
ns01 = host "45.13.104.26" "2a0e:e701:1120:1000:ffff::45.13.104.26";
# *.infra.beta.dgnum.eu
infra = {
subdomains = mapAttrs' (
host:
{ site, ... }:
nameValuePair "${host}.${site}" (
with meta.network.${host}.addresses;
{
A = ipv4;
AAAA = ipv6;
subdomains = {
v4.A = ipv4;
v6.AAAA = ipv6;
};
}
)
) meta.nodes;
};
};
}

View file

@ -1,4 +1,4 @@
{ sources, ... }: { sources, lib, ... }:
let let
dns = import sources.dns-nix { }; dns = import sources.dns-nix { };
@ -6,17 +6,14 @@ in
{ {
services.nsd = { services.nsd = {
enable = true; enable = true;
verbosity = 1000;
interfaces = [ "2a0e:e701:1120:1000:ffff::45.13.104.26" ];
zones = { zones = {
"beta.dgnum.eu" = { "lab.dgnum.eu" = {
# provideXFR = [ ... ]; # provideXFR = [ ... ];
# notify = [ ... ]; # notify = [ ... ];
data = dns.lib.toString "beta.dgnum.eu" (import ./beta.dgnum.eu.nix { inherit dns; }); data = dns.lib.toString "lab.dgnum.eu" (import ./lab.dgnum.eu.nix { inherit dns lib; });
}; };
}; };
}; };
networking = {
firewall = {
allowedUDPPorts = [ 53 ];
};
};
} }