aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2023-10-04 15:23:01 +0900
committerNguyễn Gia Phong <cnx@loang.net>2023-10-04 15:23:01 +0900
commit4298169a2ab58e019577ac32618cc46f19e45786 (patch)
treedfbcca91788624b036f479fa25661130ccc3b8b3
parentbbbb1183458f9a6c8fcd718818f65d1766ba5351 (diff)
downloadnixos-conf-4298169a2ab58e019577ac32618cc46f19e45786.tar.gz
Use nix value to config Knot
-rw-r--r--dns.nix159
1 files changed, 74 insertions, 85 deletions
diff --git a/dns.nix b/dns.nix
index 2a55ba3..1e1b0ea 100644
--- a/dns.nix
+++ b/dns.nix
@@ -18,38 +18,18 @@
{ ... }:
let
- cercleLibreZone = builtins.toFile "cercle.libre.zone" ''
- @ SOA danh.loang.net. cnx.loang.net. 2023021702 14400 3600 604800 3600
- @ NS danh.loang.net.
- @ A 37.205.11.127
- @ AAAA 2a03:3b40:100::1:2
- '';
- musikePirateZone = builtins.toFile "musike.pirate.zone" ''
- @ SOA danh.loang.net. cnx.loang.net. 2023071727 14400 3600 604800 3600
- @ NS danh.loang.net.
- @ A 37.205.11.127
- @ AAAA 2a03:3b40:100::1:2
- '';
- rubParodyZone = builtins.toFile "rub.parody.zone" ''
- @ SOA danh.loang.net. cnx.loang.net. 2023032101 14400 3600 604800 3600
- @ NS danh.loang.net.
- @ A 37.205.11.127
- @ AAAA 2a03:3b40:100::1:2
- '';
- sinyxIndyZone = builtins.toFile "sinyx.indy.zone" ''
- @ SOA danh.loang.net. cnx.loang.net. 2023022002 14400 3600 604800 3600
- @ NS danh.loang.net.
- @ A 37.205.11.127
- @ AAAA 2a03:3b40:100::1:2
- * A 37.205.11.127
- * AAAA 2a03:3b40:100::1:2
- '';
- stripromanPirateZone = builtins.toFile "striproman.pirate.zone" ''
- @ SOA danh.loang.net. mcsinyx.disroot.org. 2023022023 14400 3600 604800 3600
+ localZone = serial: let s = toString serial;
+ in ''
+ @ SOA danh.loang.net. cnx.loang.net. ${s} 14400 3600 604800 3600
@ NS danh.loang.net.
@ A 37.205.11.127
@ AAAA 2a03:3b40:100::1:2
'';
+ openNICZone = domain: serial: {
+ domain = domain;
+ file = builtins.toFile "${domain}.zone" (localZone serial);
+ dnssec-signing = false;
+ };
in {
networking.firewall = {
allowedTCPPorts = [ 53 ];
@@ -58,65 +38,74 @@ in {
services.knot = {
enable = true;
- extraConfig = ''
- server:
- listen: 0.0.0.0@53
- listen: ::@53
-
- remote:
- - id: secondary
- address: 204.87.183.53@53
- address: 2607:7c80:54:6::53@53
-
- log:
- - target: syslog
- any: info
-
- acl:
- - id: secondary
- address: 204.87.183.53
- address: 2607:7c80:54:6::53
- action: transfer
- - id: xarvos
- key: xrvs.net
- action: update
- update-owner: key
-
- template:
- - id: default
- storage: /var/lib/knot/zones
- file: %s
- dnssec-signing: on
-
- zone:
- - domain: cercle.libre
- file: ${cercleLibreZone}
- dnssec-signing: off
- - domain: cnx.gdn
- notify: secondary
- acl: secondary
- - domain: loang.net
- notify: secondary
- acl: secondary
- - domain: musike.pirate
- file: ${musikePirateZone}
- dnssec-signing: off
- - domain: rub.parody
- file: ${rubParodyZone}
- dnssec-signing: off
- - domain: sinyx.indy
- file: ${sinyxIndyZone}
- dnssec-signing: off
- - domain: striproman.pirate
- file: ${stripromanPirateZone}
- dnssec-signing: off
- - domain: xrvs.net
- notify: secondary
- acl: secondary
- acl: xarvos
- '';
keyFiles = [
"/var/lib/knot/keys/update/xrvs.net"
];
+ settings = {
+ server.listen = [ "0.0.0.0@53" "::@53" ];
+ remote = [
+ {
+ id = "secondary";
+ address = [ "204.87.183.53@53" "2607:7c80:54:6::53@53" ];
+ }
+ ];
+ log = [
+ {
+ target = "syslog";
+ any = "info";
+ }
+ ];
+ acl = [
+ {
+ id = "secondary";
+ address = [ "204.87.183.53" "2607:7c80:54:6::53" ];
+ action = "transfer";
+ }
+ {
+ id = "xarvos";
+ key = "xrvs.net";
+ action = "update";
+ update-owner = "key";
+ }
+ ];
+ template = [
+ {
+ id = "default";
+ storage = "/var/lib/knot/zones";
+ file = "%s";
+ dnssec-signing = true;
+ }
+ ];
+ zone = [
+ (openNICZone "cercle.libre" 2023021702)
+ {
+ domain = "cnx.gdn";
+ notify = "secondary";
+ acl = [ "secondary" ];
+ }
+ {
+ domain = "loang.net";
+ notify = "secondary";
+ acl = [ "secondary" ];
+ }
+ (openNICZone "musike.pirate" 2023071727)
+ (openNICZone "rub.parody" 2023032101)
+ {
+ domain = "sinyx.indy";
+ file = builtins.toFile "sinyx.indy.zone"
+ ((localZone 2023022002) + ''
+ * A 37.205.11.127
+ * AAAA 2a03:3b40:100::1:2
+ '');
+ dnssec-signing = false;
+ }
+ (openNICZone "striproman.pirate" 2023022023)
+ {
+ domain = "xrvs.net";
+ notify = "secondary";
+ acl = [ "secondary" "xarvos" ];
+ }
+ ];
+ };
};
}