PVV-DNS

This repository contains both the code and data needed to generate PVVs DNS configuration.

Note

This is currently very WIP, and not in production use. At the minute, DNS is still managed manually in /etc/bind/zones on ameno.

Normal PVV "hosts" (servers, mostly) should be defined in ./hosts.nix, and configuration and additional records can be placed in each zone configuration file in ./zones, such as ./zones/pvv.ntnu.no.nix.

The code in this repository is basically a whole heap of pre-processing to turn the hosts-file and zone-specific options into the format used by nix-community/dns.nix, that in turn generates zone files.

Building DNS zone files

Provided you have nix on your system, you should be able to run nix build .#, and the resulting config is placed in ./result/zones.

Examples;

A host configuration like

  drolsum = {
    ipv4 = pvvv4 217;
    ipv6 = pvvv6 217;
    aliases = [ "login2" ];
  };

  roundrobin = {
    ipv4 = [ (pvvv4 101) (pvvv4 202) ];
    ipv6 = [ (pvvv6 101) (pvvv6 202) ];
  };

... will generate zone files like

drolsum.pvv.ntnu.no. IN A 129.241.210.217
drolsum.pvv.ntnu.no. IN AAAA 2001:700:300:1900::217
login2.pvv.ntnu.no. IN CNAME drolsum

roundrobin.pvv.ntnu.no. IN A 129.241.210.201
roundrobin.pvv.ntnu.no. IN A 129.241.210.202
roundrobin.pvv.ntnu.no. IN AAAA 2001:700:300:1900::201
roundrobin.pvv.ntnu.no. IN AAAA 2001:700:300:1900::202

201.128-255.210.241.129.in-addr.arpa. PTR roundrobin.pvv.ntnu.no
202.128-255.210.241.129.in-addr.arpa. PTR roundrobin.pvv.ntnu.no
217.128-255.210.241.129.in-addr.arpa. PTR drolsum.pvv.ntnu.no

1.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9.1.0.0.3.0.0.0.7.0.1.0.0.2.ip6.arpa PTR roundrobin.pvv.ntnu.no
2.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9.1.0.0.3.0.0.0.7.0.1.0.0.2.ip6.arpa PTR roundrobin.pvv.ntnu.no
7.1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9.1.0.0.3.0.0.0.7.0.1.0.0.2.ip6.arpa PTR drolsum.pvv.ntnu.no

Future plans

  • Automate serial generation
  • Build and verify with CI/CD
  • Automatically push updated configurations to the DNS server
    • Also generate DNS server configuration files
      • NSD, included in OpenBSD
      • Bind9, common alternative
  • Per-record or per-host customizable TTL (e.g. for moving a CNAME around when replacing a service/server)
  • Improve dns.nix or replace it with a homemade zonefile generator to make the output more human readable
  • Also generate DHCP server configurations
Description
PVVs (future) host network configuration
Readme 116 KiB
Languages
Nix 100%