diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2022-03-15 16:37:42 +0100 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2022-03-15 16:37:42 +0100 |
commit | 366cf64e848eebea98f9d9bb95e623597af74669 (patch) | |
tree | 949daf1e7b58ce2370b16663fb535ca10bc46bf1 /hosts/vidhar/dns | |
parent | 6dd45923b4bba68eb08b9d3ec43dc924734dd8c8 (diff) | |
download | nixos-366cf64e848eebea98f9d9bb95e623597af74669.tar nixos-366cf64e848eebea98f9d9bb95e623597af74669.tar.gz nixos-366cf64e848eebea98f9d9bb95e623597af74669.tar.bz2 nixos-366cf64e848eebea98f9d9bb95e623597af74669.tar.xz nixos-366cf64e848eebea98f9d9bb95e623597af74669.zip |
vidhar: ddns
Diffstat (limited to 'hosts/vidhar/dns')
-rw-r--r-- | hosts/vidhar/dns/Gupfile | 2 | ||||
-rw-r--r-- | hosts/vidhar/dns/default.nix | 127 | ||||
-rw-r--r-- | hosts/vidhar/dns/key.gup | 6 | ||||
-rw-r--r-- | hosts/vidhar/dns/keys/local.yaml | 26 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/arpa.in-addr.10.141.0.soa | 12 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/arpa.in-addr.10.141.1.soa | 14 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/arpa.in-addr.10.141.soa | 11 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/yggdrasil.lan.soa | 13 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/yggdrasil.mgmt.soa | 15 | ||||
-rw-r--r-- | hosts/vidhar/dns/zones/yggdrasil.soa | 21 |
10 files changed, 247 insertions, 0 deletions
diff --git a/hosts/vidhar/dns/Gupfile b/hosts/vidhar/dns/Gupfile new file mode 100644 index 00000000..ac96f620 --- /dev/null +++ b/hosts/vidhar/dns/Gupfile | |||
@@ -0,0 +1,2 @@ | |||
1 | key.gup: | ||
2 | keys/*.yaml \ No newline at end of file | ||
diff --git a/hosts/vidhar/dns/default.nix b/hosts/vidhar/dns/default.nix new file mode 100644 index 00000000..19a121f6 --- /dev/null +++ b/hosts/vidhar/dns/default.nix | |||
@@ -0,0 +1,127 @@ | |||
1 | { config, lib, pkgs, ... }: | ||
2 | |||
3 | with lib; | ||
4 | |||
5 | let | ||
6 | knotKeys = let | ||
7 | dir = ./keys; | ||
8 | toKeyInfo = name: v: | ||
9 | if v == "regular" || v == "symlink" | ||
10 | then { path = dir + "/${name}"; inherit name; } | ||
11 | else null; | ||
12 | in filter (v: v != null) (mapAttrsToList toKeyInfo (builtins.readDir dir)); | ||
13 | in { | ||
14 | config = { | ||
15 | services.unbound = { | ||
16 | enable = true; | ||
17 | resolveLocalQueries = false; | ||
18 | stateDir = "/var/lib/unbound"; | ||
19 | localControlSocketPath = "/run/unbound/unbound.ctl"; | ||
20 | settings = { | ||
21 | server = { | ||
22 | interface = ["127.0.0.1" "10.141.0.1" "::0"]; | ||
23 | prefer-ip6 = true; | ||
24 | access-control = ["0.0.0.0/0 allow" "::/0 allow"]; | ||
25 | root-hints = "${pkgs.dns-root-data}/root.hints"; | ||
26 | |||
27 | num-threads = 12; | ||
28 | so-reuseport = true; | ||
29 | msg-cache-slabs = 16; | ||
30 | rrset-cache-slabs = 16; | ||
31 | infra-cache-slabs = 16; | ||
32 | key-cache-slabs = 16; | ||
33 | |||
34 | rrset-cache-size = "100m"; | ||
35 | msg-cache-size = "50m"; | ||
36 | outgoing-range = 8192; | ||
37 | num-queries-per-thread = 4096; | ||
38 | |||
39 | so-rcvbuf = "4m"; | ||
40 | so-sndbuf = "4m"; | ||
41 | |||
42 | # serve-expired = true; | ||
43 | # serve-expired-ttl = 86400; | ||
44 | # serve-expired-reply-ttl = 0; | ||
45 | |||
46 | prefetch = true; | ||
47 | prefetch-key = true; | ||
48 | |||
49 | minimal-responses = false; | ||
50 | |||
51 | extended-statistics = true; | ||
52 | |||
53 | rrset-roundrobin = true; | ||
54 | use-caps-for-id = true; | ||
55 | |||
56 | local-zone = [ | ||
57 | "141.10.in-addr.arpa transparent" | ||
58 | "yggdrasil transparent" | ||
59 | ]; | ||
60 | domain-insecure = [ | ||
61 | "141.10.in-addr.arpa" | ||
62 | "yggdrasil" | ||
63 | ]; | ||
64 | }; | ||
65 | |||
66 | stub-zone = map (name: { | ||
67 | inherit name; | ||
68 | stub-addr = "127.0.0.1@5353"; | ||
69 | stub-first = true; | ||
70 | stub-no-cache = true; | ||
71 | stub-prime = false; | ||
72 | }) ["yggdrasil" "lan.yggdrasil" "mgmt.yggdrasil" "arpa.in-addr.10.141" "arpa.in-addr.10.141.0" "arpa.in-addr.10.141.1"]; | ||
73 | }; | ||
74 | }; | ||
75 | |||
76 | services.knot = { | ||
77 | enable = true; | ||
78 | keyFiles = map ({name, ...}: config.sops.secrets.${name}.path) knotKeys; | ||
79 | extraConfig = '' | ||
80 | server: | ||
81 | listen: 127.0.0.1@5353 | ||
82 | listen: ::1@5353 | ||
83 | |||
84 | acl: | ||
85 | - id: local_acl | ||
86 | key: local_key | ||
87 | action: update | ||
88 | |||
89 | template: | ||
90 | - id: local_zone | ||
91 | storage: /var/lib/knot | ||
92 | zonefile-sync: -1 | ||
93 | zonefile-load: difference-no-serial | ||
94 | serial-policy: dateserial | ||
95 | journal-content: all | ||
96 | semantic-checks: on | ||
97 | acl: [local_acl] | ||
98 | |||
99 | zone: | ||
100 | - domain: yggdrasil | ||
101 | template: local_zone | ||
102 | file: ${./zones/yggdrasil.soa} | ||
103 | - domain: lan.yggdrasil | ||
104 | template: local_zone | ||
105 | file: ${./zones/yggdrasil.lan.soa} | ||
106 | - domain: mgmt.yggdrasil | ||
107 | template: local_zone | ||
108 | file: ${./zones/yggdrasil.mgmt.soa} | ||
109 | - domain: 141.10.in-addr.arpa | ||
110 | template: local_zone | ||
111 | file: ${./zones/arpa.in-addr.10.141.soa} | ||
112 | - domain: 0.141.10.in-addr.arpa | ||
113 | template: local_zone | ||
114 | file: ${./zones/arpa.in-addr.10.141.0.soa} | ||
115 | - domain: 1.141.10.in-addr.arpa | ||
116 | template: local_zone | ||
117 | file: ${./zones/arpa.in-addr.10.141.1.soa} | ||
118 | ''; | ||
119 | }; | ||
120 | |||
121 | sops.secrets = listToAttrs (map ({name, path}: nameValuePair name { | ||
122 | format = "binary"; | ||
123 | owner = "knot"; | ||
124 | sopsFile = path; | ||
125 | }) knotKeys); | ||
126 | }; | ||
127 | } | ||
diff --git a/hosts/vidhar/dns/key.gup b/hosts/vidhar/dns/key.gup new file mode 100644 index 00000000..83c36b0e --- /dev/null +++ b/hosts/vidhar/dns/key.gup | |||
@@ -0,0 +1,6 @@ | |||
1 | #!/usr/bin/env zsh | ||
2 | |||
3 | keyName=${${2:t}%.yaml}_key | ||
4 | |||
5 | keymgr -t ${keyName} > $1 | ||
6 | sops -p 'A1C7C95E6CAF0A965CB47277BCF50A89C1B1F362,30D3453B8CD02FE2A3E7C78C0FB536FB87AE8F51' --input-type=binary --output-type=binary -e -i $1 | ||
diff --git a/hosts/vidhar/dns/keys/local.yaml b/hosts/vidhar/dns/keys/local.yaml new file mode 100644 index 00000000..e66f4b61 --- /dev/null +++ b/hosts/vidhar/dns/keys/local.yaml | |||
@@ -0,0 +1,26 @@ | |||
1 | { | ||
2 | "data": "ENC[AES256_GCM,data:hpWdnmsmBmO01PkTlmRLHdmXrPX6POuU/PWrOUMgH6glThzsFdk84tskUExnsl3N39ryCmgZwotIZ8zCWduPBn+nN3VTEP5Z4xltC8I82C6F283gWC3gxpTXFSwF7JetRM5uBQV0FFd9iXHUySEHdzoRqsGuZTMYdT44Bm6gGQHyt7N3/EeLHyJKa7MH+SLLznjlaTnmrAxEyGP8Talda0s/mkh4nRqQnbxX6aOTQpQ=,iv:eRQuxRNQGU2Zwudaqjr+QvLLpJ5QqrjvAN/uL6x8hUs=,tag:CYEt1K+gOGiOX9qQR/Q9jw==,type:str]", | ||
3 | "sops": { | ||
4 | "kms": null, | ||
5 | "gcp_kms": null, | ||
6 | "azure_kv": null, | ||
7 | "hc_vault": null, | ||
8 | "age": null, | ||
9 | "lastmodified": "2022-03-15T13:30:32Z", | ||
10 | "mac": "ENC[AES256_GCM,data:PG4ywF/U6ITmdRB4OU5uXu54YabYt9Yyy2oYEMx0XpMlpKWH5bmg2qQNFakxBD6wCy2H6e3LmwcUl2N692crm3n/qQRNPQ0ETHVlaPlRFG85tiz/Ngi6tasoKG+ciLAXMy05c+yY6oENN7grm1TTMZRGSIyxo27ZU+k4kmz4eVM=,iv:fluwCnXHAJ/z2oGWCLXbjooymXbViPrZdVJOnoSrn1g=,tag:QtNGIKMBDtKnb3JPuRqmiA==,type:str]", | ||
11 | "pgp": [ | ||
12 | { | ||
13 | "created_at": "2022-03-15T13:30:31Z", | ||
14 | "enc": "-----BEGIN PGP MESSAGE-----\n\nhF4DbYDvGI0HDr0SAQdAQAK54tXtgsLn6MmWQC/4irGRJd160lpAxCIT+nt/MBUw\nznjpLnbZXSft1RQI6/B95udkm0U/MBKt7wSMe9I/Po44qJrqHqb4jofz6NCeqxD3\n0l4Bl/DpnWfam9knZFQ9NIEaKYWXSmVuxVduhpYYGopXUrKol8BVTdXU6qHaPKgV\nQc72FvezgyHngZwXNEggvS1IWPq4m6pamLi77e8hNGiQx5CiaFXWwCP4gY6A80pS\n=FNi5\n-----END PGP MESSAGE-----\n", | ||
15 | "fp": "A1C7C95E6CAF0A965CB47277BCF50A89C1B1F362" | ||
16 | }, | ||
17 | { | ||
18 | "created_at": "2022-03-15T13:30:31Z", | ||
19 | "enc": "-----BEGIN PGP MESSAGE-----\n\nhF4DXxoViZlp6dISAQdA+/lLWPxgadpnWQlbAVbdzpbevoVKuaGrQmp79m4wKycw\nBeErMZugDNzHWXkTHXez5SpS94RYlGzhLcVLGfMg7C0h3wN192QaMrcH01udnjhK\n0l4BRYt9+9CCZL+Nb/ss+BIyOAFCZi2RkwzvXl9wVk+mb1As9/UYml9zqh/juU5F\nBZXqwNPA5RSNCoB0wy3A5yIB3uniMuYczTs67VHJ5cw2VVSQvXF5zue90i2F4mC4\n=IsU1\n-----END PGP MESSAGE-----\n", | ||
20 | "fp": "30D3453B8CD02FE2A3E7C78C0FB536FB87AE8F51" | ||
21 | } | ||
22 | ], | ||
23 | "unencrypted_suffix": "_unencrypted", | ||
24 | "version": "3.7.1" | ||
25 | } | ||
26 | } \ No newline at end of file | ||
diff --git a/hosts/vidhar/dns/zones/arpa.in-addr.10.141.0.soa b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.0.soa new file mode 100644 index 00000000..75e6b3a8 --- /dev/null +++ b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.0.soa | |||
@@ -0,0 +1,12 @@ | |||
1 | $ORIGIN 0.141.10.in-addr.arpa. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.lan.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031504 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.lan.yggdrasil. | ||
12 | 1 IN PTR vidhar.lan.yggdrasil. | ||
diff --git a/hosts/vidhar/dns/zones/arpa.in-addr.10.141.1.soa b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.1.soa new file mode 100644 index 00000000..2d535d56 --- /dev/null +++ b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.1.soa | |||
@@ -0,0 +1,14 @@ | |||
1 | $ORIGIN 1.141.10.in-addr.arpa. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.mgmt.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031505 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.mgmt.yggdrasil. | ||
12 | 1 IN PTR vidhar.mgmt.yggdrasil. | ||
13 | 2 IN PTR switch01.mgmt.yggdrasil. | ||
14 | 4 IN PTR ap01.mgmt.yggdrasil. | ||
diff --git a/hosts/vidhar/dns/zones/arpa.in-addr.10.141.soa b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.soa new file mode 100644 index 00000000..ea5a35f3 --- /dev/null +++ b/hosts/vidhar/dns/zones/arpa.in-addr.10.141.soa | |||
@@ -0,0 +1,11 @@ | |||
1 | $ORIGIN 141.10.in-addr.arpa. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.lan.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031505 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.lan.yggdrasil. | ||
diff --git a/hosts/vidhar/dns/zones/yggdrasil.lan.soa b/hosts/vidhar/dns/zones/yggdrasil.lan.soa new file mode 100644 index 00000000..c58b9a13 --- /dev/null +++ b/hosts/vidhar/dns/zones/yggdrasil.lan.soa | |||
@@ -0,0 +1,13 @@ | |||
1 | $ORIGIN lan.yggdrasil. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.lan.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031504 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.lan.yggdrasil. | ||
12 | |||
13 | vidhar IN A 10.141.0.1 | ||
diff --git a/hosts/vidhar/dns/zones/yggdrasil.mgmt.soa b/hosts/vidhar/dns/zones/yggdrasil.mgmt.soa new file mode 100644 index 00000000..8a630a9a --- /dev/null +++ b/hosts/vidhar/dns/zones/yggdrasil.mgmt.soa | |||
@@ -0,0 +1,15 @@ | |||
1 | $ORIGIN mgmt.yggdrasil. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.mgmt.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031505 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.mgmt.yggdrasil. | ||
12 | |||
13 | vidhar IN A 10.141.1.1 | ||
14 | switch01 IN A 10.141.1.2 | ||
15 | ap01 IN A 10.141.1.4 | ||
diff --git a/hosts/vidhar/dns/zones/yggdrasil.soa b/hosts/vidhar/dns/zones/yggdrasil.soa new file mode 100644 index 00000000..6e66a063 --- /dev/null +++ b/hosts/vidhar/dns/zones/yggdrasil.soa | |||
@@ -0,0 +1,21 @@ | |||
1 | $ORIGIN yggdrasil. | ||
2 | $TTL 300 | ||
3 | @ IN SOA vidhar.yggdrasil. root.yggdrasil.li. ( | ||
4 | 2022031504 ; serial | ||
5 | 300 ; refresh | ||
6 | 300 ; retry | ||
7 | 300 ; expire | ||
8 | 300 ; min TTL | ||
9 | ) | ||
10 | |||
11 | IN NS vidhar.yggdrasil. | ||
12 | |||
13 | surtr IN AAAA 2a03:4000:52:ada:1:: | ||
14 | vidhar IN AAAA 2a03:4000:52:ada:1:1:: | ||
15 | sif IN AAAA 2a03:4000:52:ada:1:2:: | ||
16 | |||
17 | grafana.vidhar IN CNAME vidhar.yggdrasil. | ||
18 | |||
19 | |||
20 | vidhar.lan IN A 10.141.0.1 | ||
21 | vidhar.mgmt IN A 10.141.1.1 | ||