Installazione Server DNS con Bind

Scritto da  Martedì, 22 Dicembre 2015 14:40
Vota questo articolo
(0 Voti)

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.

 

In allegato trovate i nostri file di esempio comprezzi in bz2, per decomprimerlo usate il comando

tar -xjvf ninuxbas.tar.bz2

Letto 1204 volte Ultima modifica il Sabato, 16 Luglio 2016 14:41

Lascia un commento

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.

Ninux Experimental

Newsletter

Follow Us

           

Ninux è una Wireless Community Network

Una rete di calcolatori senza fili nata a Roma ed estesa in tutta Italia da una comunità di informatici, radioamatori e appassionati
Ninux non vuole essere solamente una rete parallela ad internet e scollegata da essa, al contrario mira a diventare parte integrante di internet.



Ninux è un modello alternativo allo sviluppo delle reti di telecomunicazione, un modello basato sulla condivisione, sulla collaborazione e sulla libertà, in accordo con la filosofia del software libero.