For this document, replace 10.0.2.15 with the ip address of your computer.
# log in as root, this assumes sudo is setup from your account.
sudo bash
# if you can't sudo : su -l root
# make sure your systems is up to date
apt-get update
apt-get upgrade
apt-get dist-upgrade
# install the server and utilities
apt-get -y install bind9 dnsutils
# Save the original copy and make a new one.
mv /etc/bind/named.conf.options /etc/bind/named.conf.options_ORIG
# Replace W.X.Y.Z with theip address found at
# grep ^nameserver /var/run/systemd/resolve/resolv.conf | grep -v 127
# in the next echo command.
# or edit the file after and change it.
echo 'options {
directory "/var/cache/bind";
forwarders {
' > /etc/bind/named.conf.options
for i in `grep ^nameserver /var/run/systemd/resolve/resolv.conf | grep -v 127 | cut -d' ' -f2` ; do
echo "$i; " >> /etc/bind/named.conf.options
done
echo "
8.8.8.8;
};
dnssec-validation auto;
listen-on-v6 { any; };
};
" >> /etc/bind/named.conf.options
# Make the files for local zone.
# The first adds the zone and what config file to use.
# The second is the config file with the DNS entries for our zone.
# The third command adds to /etc/hosts just in case DNS does not work.
echo '
zone "local" {
type master;
file "/etc/bind/db.local2";
};
' >> /etc/bind/named.conf.local
echo '
$TTL 604800
@ IN SOA ldap.local. root.local. (
3 ; Serial
604820 ; Refresh
86600 ; Retry
2419600 ; Expire
604600 ) ; Negative Cache TTL
; name servers - NS records
IN NS ldap.local.
; name servers - A records
ldap.local. IN A 10.0.2.15
' > /etc/bind/db.local2
# Let us add to /etc/hosts just in case
echo "10.0.2.15 ldap.local" > /etc/hosts
# lets make sure bind starts at bootup
systemctl enable named.service
#Now test it
nslookup ldap.local
# Lets add DNS to any ethernet ports.
for i in `ifconfig | egrep ^[a-z] | cut -d ":" -f1 | grep -v "^lo"`; do
systemd-resolve --interface $i --set-dns 127.0.0.1
done
# Now check name resolution
systemd-resolve --status
# You should see 127.0.0.1 as the DNS for all ethernet ports.
# Check is DNS is running right.
nslookup ldap.local
nslookup google.com
The test should look like
root@linux4:/home/mark# nslookup ldap.local Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: ldap.local Address: 10.0.2.15 root@linux4:/home/mark# nslookup google.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 172.217.12.14 Name: google.com Address: 2607:f8b0:4025:815::200e
Now, you might have to create a script at start.
[Unit]
Description=local dns startup command
[Service]
ExecStart=/usr/local/dns_local.sh start
[Install]
WantedBy=multi-user.target
#!/bin/bash echo "Adding local dns for ethernet port" for i in `ifconfig | egrep ^[a-z] | cut -d ":" -f1 | grep -v "^lo"`; do systemd-resolve --interface $i --set-dns 127.0.0.1 done
Reboot your system, hopefully named comes up and DNS works!