2013-09-01 14:13:51 +00:00
|
|
|
# DNS: Configure a DNS server using nsd
|
|
|
|
#######################################
|
|
|
|
|
2014-06-03 11:12:38 +00:00
|
|
|
# After running this script, you also must run setup/dns_update.sh,
|
2013-09-01 14:13:51 +00:00
|
|
|
# and any time a zone file is added/changed/removed, and any time a
|
|
|
|
# new domain name becomes in use by a mail user.
|
|
|
|
#
|
|
|
|
# This script will turn on DNS for $PUBLIC_HOSTNAME.
|
|
|
|
|
2014-06-03 11:12:38 +00:00
|
|
|
source setup/functions.sh # load our functions
|
2014-05-01 19:13:00 +00:00
|
|
|
|
2014-04-18 00:17:24 +00:00
|
|
|
# Install nsd, our DNS server software.
|
2013-08-21 20:53:22 +00:00
|
|
|
|
2014-04-23 21:53:59 +00:00
|
|
|
# ...but first, we have to create the user because the
|
|
|
|
# current Ubuntu forgets to do so in the .deb
|
2014-04-23 22:40:33 +00:00
|
|
|
# see issue #25 and https://bugs.launchpad.net/ubuntu/+source/nsd/+bug/1311886
|
2014-04-23 21:53:59 +00:00
|
|
|
if id nsd > /dev/null 2>&1; then
|
2014-04-23 22:40:33 +00:00
|
|
|
true; #echo "nsd user exists... good";
|
2014-04-23 21:53:59 +00:00
|
|
|
else
|
|
|
|
useradd nsd;
|
2014-04-23 22:40:33 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Okay now install the package.
|
2014-05-02 18:18:26 +00:00
|
|
|
# bc is needed by dns_update.
|
2014-04-23 22:40:33 +00:00
|
|
|
|
2014-05-02 18:18:26 +00:00
|
|
|
apt_install nsd bc
|
2013-08-21 20:53:22 +00:00
|
|
|
|
2014-04-18 00:17:24 +00:00
|
|
|
# Prepare nsd's configuration.
|
2013-09-01 14:13:51 +00:00
|
|
|
|
2014-04-18 00:17:24 +00:00
|
|
|
sudo mkdir -p /var/run/nsd
|
2013-08-21 20:53:22 +00:00
|
|
|
mkdir -p "$STORAGE_ROOT/dns";
|
|
|
|
|
|
|
|
# Create the default zone if it doesn't exist.
|
|
|
|
|
|
|
|
if [ ! -f "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" ]; then
|
|
|
|
# can be an empty file, defaults are applied elsewhere
|
|
|
|
cat > "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" << EOF;
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
2013-09-01 14:13:51 +00:00
|
|
|
# Let the storage user own all DNS configuration files.
|
|
|
|
|
|
|
|
chown -R $STORAGE_USER.$STORAGE_USER $STORAGE_ROOT/dns
|
|
|
|
|
|
|
|
# Permit DNS queries on TCP/UDP in the firewall.
|
2013-08-21 20:53:22 +00:00
|
|
|
|
2014-05-01 19:35:18 +00:00
|
|
|
ufw_allow domain
|
2013-08-21 20:53:22 +00:00
|
|
|
|