Files
cluster/documents/bind9.md
Khwezi Mngoma 0410dc3950 first commit
2026-02-22 16:43:17 +02:00

3.1 KiB

#Copy SSH keys to VM

make sure that your local linux default ssh directory exists /root/.ssh if you are on windows

ssh-copy-id -i ~/.ssh/id_ed25519.pub khwezi@192.168.1.151

#Update system packages

sudo apt update && sudo apt upgrade -y

#Install Bind9

install accompanying utilities as well

sudo apt install bind9 bind9utils bind9-doc

#Configure Bind9

//1. Define global DNS settings
cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak
sudo nano /etc/bind/named.conf.options

//2. Modify file contents, use following example
//options {
//    directory "/var/cache/bind";
//    listen-on { any; }; // Listen on all IP addresses
//    allow-query { any; }; // Allow queries from any IP address
//    forwarders {
//        8.8.8.8; // Google Public DNS
//        8.8.4.4;
//    };
//    dnssec-validation auto;
//    auth-nxdomain no;    # conform to RFC1035
//    listen-on-v6 { any; };
//};
//Save changed and exit editor

//3. Create custom DNS Zones
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak
sudo nano /etc/bind/named.conf.local

// use the following example
//zone "mngoma.lab" {
//    type master;
//    file "/etc/bind/db.mngoma.lab";
//};
//
//zone "1.168.192.in-addr.arpa" {
//    type master;
//    file "/etc/bind/db.192.168.1";
//};

//4. Create Zone file(s) referenced in /etc/bind/named.conf.local
sudo cp /etc/bind/db.local /etc/bind/db.mngoma.lab
sudo cp /etc/bind/db.127 /etc/bind/db.192.168.1

//5. Edit zone files to contain the records you need
//;
//; Zone file for example.com
//;
//$ORIGIN example.com.
//$TTL 3H
//
//; SOA record - authoritative info about the zone
//@   IN  SOA ns1.example.com. hostmaster.example.com. (
//                2025010101    ; Serial Number
//                21600       ; Refresh (6 hours)
//                3600        ; Retry (1 hour)
//                604800      ; Expire (1 week)
//                86400       ; Minimum TTL (1 day)
//            )
//
//; NS Records - authoritative name servers for the domain
//@   IN  NS  ns1.example.com.
//@   IN  NS  ns2.example.com.
//
//; A Records - mapping hostnames to IPv4 addresses
//ns1     IN  A   192.168.1.10
//ns2     IN  A   192.168.1.11
//www     IN  A   192.168.1.20
//ftp     IN  A   192.168.1.30
//
//; AAAA Records - mapping hostnames to IPv6 addresses (optional)
//ns1     IN  AAAA    2001:db8::10
//www     IN  AAAA    2001:db8::20
//
//; MX Record - for mail exchange servers and priority
//@   IN  MX  10  mail.example.com.
//mail    IN  A   192.168.1.100
//
//; CNAME Record - Alias for another hostname
//web     IN  CNAME   www.example.com.
//----------

//6. check zone file syntax (validate)
sudo named-checkconf
sudo named-checkzone mngoma.lab /etc/bind/db.mngoma.lab
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192.168.1

//7. Restart bind9
sudo systemctl restart bind9

#Configure firewall (lockdown)

//1. enable firewall
sudo ufw enable

//2. allow all traffic from my address range
sudo ufw all from 192.168.1.0/24

//3. allow DNS ports
sudo ufw allow 53/udp
sudo ufw allow 53/tcp