sudo apt update sudo apt install bind9 bind9utils bind9-doc dnsutils /etc/bind/named.conf.options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ options { directory "/var/cache/bind"; // Listen on all interfaces listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; // Allow queries from your local network (adjust subnet as needed) allow-query { any; }; // Disable recursion for authoritative-only server recursion no; dnssec-validation auto; auth-nxdomain no; }; /etc/bind/named.conf.local ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ zone "lakefox.net" { type master; file "/etc/bind/zones/lakefox.net"; }; > Add one for each domain sudo mkdir /etc/bind/zones /etc/bind/zones/lakefox.net ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $TTL 604800 @ IN SOA lakefox.net. admin.lakefox.net ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; Name servers @ IN NS ns1 @ IN NS ns2 ; A records ns1 IN A 24.49.140.127 ns2 IN A 24.49.140.127; @ IN A 24.49.140.127 -> This is only for the NS An example of a non NS record would look like this: /etc/bind/zones/grimui.com ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $TTL 604800 @ IN SOA grimui.com. admin.grimui.com ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; Name servers @ IN NS ns1.lakefox.net. @ IN NS ns2.lakefox.net. ; A records @ IN A 24.49.140.127 > The name servers, if they are not relative, must end in a "." and have a ending newline To test a DNS config: sudo named-checkzone lakefox.net /etc/bind/zones/lakefox.net Restart bind9 after each update: sudo systemctl restart bind9