feat(dns01): init DNS config (#9)
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:
parent
1f82719dcb
commit
862168b2bc
4 changed files with 67 additions and 31 deletions
|
@ -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 = ./.;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
51
machines/dns01/lab.dgnum.eu.nix
Normal file
51
machines/dns01/lab.dgnum.eu.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -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 ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue