ù Installazione Server DNS con Bind – Ninux Basilicata Skip to main content

Per Ninux Basilicata abbiamo implementato un server DNS utilizzando BIND 9 su una debian 7 a 64bit.

Dal punto di vista hardware abbiamo una VM con 1 GB di ram, 1 CPU e 20 GB di hard disk (più che sufficienti)

Iniziamo a vedere la configurazione per il nostro TLD “.nbas”

Dopo l’installazione il primo passo è fare un aggiornamento del sistema operativo, quindi con i comandi

apt-get update && apt-get dist-upgrade

Prima di riavviare inserimamo nel nostro file /etc/resolv.conf le seguenti righe

search nbas
nameserver 10.27.0.5
nameserver 8.8.8.8

Ora possiamo riavviare il nostro sistema.

Insalliamo i nostri pacchetti:

apt-get install bind9 dnsutils

Spostiamoci nella cartella /etc/bind

Premessa: non siamo su internet e non abbiamo messo il DNS in chroot

Ricordiamo che la LAN della Basilicata è 10.27.0.0/16

Per poter risolvere i DNS esterni abilitiamo il forward nel file /etc/bind/named.conf.options (usiamo quelli di google)

forwarders {
     8.8.8.8;
    8.8.4.4;
 };

Adesso passiamo a creare il nostro TLD “.nbas” creando 2 file “db.nbas” e “db.27.10”

Premessa: l’IP del DNS è 10.27.0.5, quello del nostro server web è 10.27.0.6

Nel file db.nbas ci inseriamo questo contenuto:

;
; BIND data file for TLD ".nas"
;
$TTL 604800
@        IN        SOA            nbas.        root.nbas. (
                                                       2 ; Serial
                                                       604800 ; Refresh
                                                       86400 ; Retry
                                                       2419200 ; Expire
                                                      604800 ) ; Negative Cache TTL
;
@     IN       NS       ns1.nbas.
@     IN       NS       ns2.nbas.
@     IN       A         10.27.0.5
dns   IN       A         10.27.0.5
ns1   IN       A         10.27.0.5
ns2   IN       A         10.27.0.5

Adesso nel file db.27.10 inseriamo questo contenuto:

;
; BIND reverse data file for TLD ".nbas"
;
$TTL 604800
@          IN                  SOA              nbas.        root.nbas. (
                                                                     1 ; Serial
                                                                     604800 ; Refresh
                                                                     86400 ; Retry
                                                                     2419200 ; Expire
                                                                     604800 ) ; Negative Cache TTL
;
@      IN       NS              ns1.nbas.
@      IN       NS              ns2.nbas.
5.0    IN       PTR            ns1.nbas.
5.0    IN       PTR            ns2.nbas.
5.0    IN       PTR            dns.nbas.

Adesso editiamo il nostro file named.conf.default-zones aggiungendo alla fine se seguenti righe:

zone "nbas." {
        type master;
        file "/etc/bind/db.nbas";
        allow-transfer { any;};
        allow-query { any;};
};

zone "27.10.in-addr.arpa" {
       type master;
       notify no;
       file "/etc/bind/db.27.10";
};

Fatto tutto questo possiamo fare dei check

named-checkconf # esegue un controllo sulla configurazione generale

named-checkzone nbas. /etc/bind/db.nabs # esegue un controllo sulla configurazione della zona

Dando un semplice

/etc/init.d/bind9 restart

oppure un più moderno comando

service bind9 restart

possiamo fare un test pingando ns1.nbas

Il risultato dovrebbe essere positivo.

Passaggio finale:

Creiamo una cartella

mkdir /etc/bind/zones

ora spostiamoci nella nostra root con un bel…

cd

e creiamo 2 file “ins.dns.sh” e “rem-dns.sh”

Nel primo ci mettiamo questo:

#!/bin/bash

if [ $# -ne 1 ];then

echo "Usage: ins-dns.sh <domainname>"

exit 1

fi

## Domain name

MYDOMAIN=$1

ZONECONFIG="/etc/bind/named.conf.default-zones"

if [ `sed -n '/^zone "'${MYDOMAIN}'."/p' ${ZONECONFIG}|wc -l` -eq 1 ];then
echo "[ERROR] Entry for ${MYDOMAIN} already exists"
exit 1
fi

## Nameservers
NAMESERVER1="ns1.nbas"
NAMESERVER2="ns2.nbas"

echo "IP ZONA:"
read IP_ZONA

## Apache and ftp service are running on the same host
WWW_IP=$IP_ZONA

##Mail server
MAIL_IP=$IP_ZONA

## DB Server
MYSQL_IP=$IP_ZONA

## Create zone file
cat > /etc/bind/zones/${MYDOMAIN} << EOF
\$TTL 86400
@ IN SOA ns.${MYDOMAIN}. admin.${MYDOMAIN}. (
1378789827 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
10800 ) ; Minimum

${MYDOMAIN}. IN NS ${NAMESERVER1}.
${MYDOMAIN}. IN NS ${NAMESERVER2}.
${MYDOMAIN}. IN A ${WWW_IP}
mail.${MYDOMAIN}. IN A ${MAIL_IP}
mysql.${MYDOMAIN}. IN A ${MYSQL_IP}

${MYDOMAIN}. IN MX 10 mail.${MYDOMAIN}.
${MYDOMAIN}. IN TXT "v=spf1 a mx ip4:${WWW_IP} ~all"

www.${MYDOMAIN}. IN CNAME ${MYDOMAIN}.
pop.${MYDOMAIN}. IN CNAME mail.${MYDOMAIN}.
imap.${MYDOMAIN}. IN CNAME mail.${MYDOMAIN}.
smtp.${MYDOMAIN}. IN CNAME mail.${MYDOMAIN}.
EOF

clear
echo "[*] Created zone file for ${MYDOMAIN}"
cat /etc/bind/zones/${MYDOMAIN}


cat >> ${ZONECONFIG} << EOF

zone "${MYDOMAIN}." {
type master;
file "/etc/bind/zones/${MYDOMAIN}";
};
EOF
echo ""
echo "++++++++++++++++++++++++++++++++++++++++++++++"
echo ""
echo "[*] Added zone entry for ${MYDOMAIN} in bind configuration"
cat $ZONECONFIG

Nel secondo questo

#!/bin/bash

if [ $# -ne 1 ];then
echo "Usage: rem-dns.sh <domainname>"
exit 1
fi

## Domain name
DOMAIN=$1

ZONECONFIG="/etc/bind/named.conf.default-zones"

if [ `sed -n '/^zone "'${DOMAIN}'."/p' /etc/bind/named.conf.default-zones|wc -l` -eq 1 ];then
##Remove entries from dns configuration file
sed -i -e '/^zone "'${DOMAIN}'."/,/^};/d' ${ZONECONFIG}
sed -i '$d' ${ZONECONFIG}

echo "[*] Removed zone entries from bind configuration"
else
echo "[ERROR] ${DOMAIN} not present in bind configuration"
exit 1
fi

#Remove zone file if it exists
if [ -f /etc/bind/zones/${DOMAIN} ];then
rm -f /etc/bind/zones/${DOMAIN}
echo "[*] Removed zone db file"
fi

Per aggiungere una nuova zona, esempio: ninuxbas.nbas usare il comando

./ins.dns.sh ninuxbas.nbas

Ok, non è ancora perfezionato. Quando aggiungete una nuova zona ricordatevi di aggiungere nel reverse (db.27.0) la zona, es:

6.0     IN      PTR     ninuxbas.nbas.

Leave a Reply