What you must be able to execute without reference after this module.
1Install: apt install bind9 bind9utils. Disable systemd-resolved stub listener. Verify named owns port 53.
2named.conf structure: root file includes options, local, and default-zones. Edit only named.conf.options and named.conf.local.
3Zone files: $TTL first, SOA second, NS records, then A/CNAME/MX records. Serial is YYYYMMDDnn -- increment on every change.
4Reverse zones: name is the network written backwards plus .in-addr.arpa.. PTR records use only the last octet.
5Change workflow: edit file, increment serial, named-checkconf -z, rndc reload ZONE, verify with dig SOA @127.0.0.1.
6Security defaults: allow-transfer { none; } globally, restrict recursion to trusted networks, hide version string, enable RRL.
7Secondaries: type slave with masters { PRIMARY-IP; }. Zone files stored in /var/cache/bind/. Monitor with rndc zonestatus.