Aug 312012
 

Un name server è un server che ospita un servizio di rete per fornire risposte alle vostre richieste riguardo ad un servizio di directory. Si associa un identificatore riconoscibile dagli essere umani a un componente interno al sistema, un identificativo o indirizzo, il programma BIND è il più famoso name server disponibile su Linux, può essere usato per fare tutto ciò che può essere fatto da un server di questo tipo, ma a volte avete bisogno di meno.

Forse avete una VPS e si desidera solo per gestire il vostro nome DNS, per questo uso si potrebbe utilizzare NSD una ottima alternativa a BIND, non fa l’inoltro delle richieste DNS e risponde solo per i propri domini. ma questo potrebbe essere sufficiente per il vostro progetto.

NSD utilizza file di zona in stile BIND; i file di zona utilizzati in BIND (named) di solito possono essere usati senza modifiche in NSD una volta dichiarati nella configurazione nsd.conf. NSD gestisce le informazioni di zona raccolte tramite ‘zonec’ in un file di database binario (nsd.db) che permette una velocità ottima all’avvio del demone NSD, la verifica strutturale della sintassi e la segnalazione degli errori sulla base dei dati è fatta in fase di compilazione. Tutto questo prima di essere messi a disposizione dei servizi stessi di NSD.

Vediamo come installarlo e configurarlo.

Installazione

Il pacchetto NSD è disponibile nei repository delle distribuzioni principali, quindi è possibile utilizzare il vostro gestore dei pacchetti per installarlo con solo 1 comando come ad esempio:
Red Hat Enterprise e Centos

yum install nsd

Debian e Ubuntu

sudo apt-get install ns3

Gentoo

emerge nsd

Configurazione di NSD (nsd.conf)

Il file di configurazione principale di NSD è nsd.conf, che si trova in un percorso diverso a seconda della distribuzione:

DebianUbuntu : /etc/nsd3/nsd.conf
CentosRed Hat Enterprise : /etc/nsd/nsd.conf

La seguente è una configurazione master presa da un sistema CentOS, che fornisce il dominio linuxaria.org dall’indirizzo IP 66.228.45.214

#
# nsd.conf -- the NSD(8) configuration file, nsd.conf(5).
#
# Copyright (c) 2001-2011, NLnet Labs. All rights reserved.
#
# See LICENSE for the license.
#

# Questo è un file di configurazione commentato, basta cambiare l'IP e le direttive sulla di zona per personalizzarlo.

# Opzioni per il server NSD
server:
	# Scommentare per ascoltare solo su un'interfaccia
	ip-address: 66.228.45.214

	# non rispondere alle richiesteVERSION.BIND e VERSION.SERVER CHAOS 
        # Mettete yes per ragioni di sicurezza
	hide-version: yes

	# abilitare la modalità di debug, non forkare il processo demone in background.
	# debug-mode: no

	# Ascolta solo per connessioni IPv4, mettere si per salvare un po di memoria
	ip4-only: yes

	# Ascolta solo su IPV6
	# ip6-only: no

	#Il database da usare, questo è il percorso di default
	# database: "/var/lib/nsd/nsd.db"

	# identifica il server (CH TXT ID.SERVER).
        identity: ""

	# Identità NSID (stringa esadecimale). disabilitato di default.
	# nsid: "aabbccdd"

	# metti i messaggi su file. Il default è stderr e syslog (con facility LOG_DAEMON).
	# logfile: "/var/log/nsd.log"

	# Numero di server NSD da forkare, mettere 1 per i server VPS con poca memoria
	server-count: 1

	# Numero massimo di connessioni TCP simultanee per server.
	# Questa opzione deve avere un valore inferiore a 1000, 10 è buono per una VPS con poca memoria
	tcp-count: 10

	# Numero massimo di query servita su una singola connessione TCP.
	# Per impostazione predefinita è 0, il che significa che non ci sono limiti.
	# tcp-query-count: 0

	# Sovrascrivi il default timeout di TCP (120 secondi).
	# tcp-timeout: 120

	# Dimensione del buffer EDNS per IPv4.
	# ipv4-edns-size: 4096

	# Dimensione del buffer EDNS per IPv6.
	# ipv6-edns-size: 4096

	# File in cui mettere il pid di nsd
	# pidfile: "/var/run/nsd/nsd.pid"

	# porta sulla quale rispondere alle richieste , default 53.
	# port: 53

	# le statistiche sono prodotte ogni X secondi
	# statistics: 3600

	# se le statistiche per zona sono attivate, il file per memorizzare le statistiche.
	# zone-stats-file: "/var/log/nsd.stats"

  	# La directory dove tenere i file di zona.
    	zonesdir: "/etc/nsd/zones"

        #definizione della prima zona, ne serve una per ogni dominio.
zone:
    name: linuxaria.org
        #file all'interno di zonesdir che contiene le informazioni sulla zona
    zonefile: linuxaria.org.conf

Ora dobbiamo configurare i file di zona che abbiamo definito nel file di configurazione nsd.conf.

NSD Zone file

Un file di zona può essere semplice come questo, che si limita a definire SOA, NS, MX e qualche indirizzo per il dominio:

;## NSD authoritative only DNS

$ORIGIN linuxaria.org.    ; default zone domain
$TTL 86400           ; default time to live

@ IN SOA ns1 [email protected] (
           2012082703  ; serial number
           28800       ; Refresh
           14400        ; Retry
           864000      ; Expire
           86400       ; Min TTL
           )

           NS      ns1.inuxaria.org.
           NS      ns2.inuxaria.org.
           MX      10 mail.inuxaria.org.

mail   	   IN     A    66.228.45.214
www   	   IN     A    66.228.45.214
ns1              IN     A    66.228.45.214
ns2              IN     A    66.228.45.214
*                  IN     A    66.228.45.214
@                IN     A    66.228.45.214

;## NSD authoritative only DNS

Per NSD è un requisito configurare il vostro “NS” name server hostname (ns1.linuxaria.org in questo esempio su 66.228.45.214) allo stesso indirizzo IP in cui è in ascolto NSD, quello che abbiamo impostato nel file nsd.conf . Questo è importante perché un DNS server resolving, come Bind, chiederà a NSD quali sono gli IP dei name server autoritativi. NSD dirà che il nome del server per “linuxaria.org” è “ns1.linuxaria.org” e il suo ip è 66.228.45.214. E così è l’indirizzo 66.228.45.214 che Bind utilizzerà per la connessione.

Notare anche questa speciale sintassi:
* IN A 66.228.45.214

che è un catch-all per ogni nome nel dominio .linuxaria.org. ovvero qualsiai prefisso .linuxaria.org verrà mappato su quell’indirizzo IP.

Rebuild e restart

Ora che abbiamo definito tutto è necessario compilare il database NSD dai file di zona e avviare il demone, per farlo eseguiamo questi 2 comandi:

sudo nsdc rebuild

in questa fase si riceverà un messaggio se ci sono errori nel file di zona, se tutto è corretto è possibile riavviare il demone con:

Debian or Unbuntu server restart

/etc/init.d/nsd3 restart

Red Hat and Centos server restart

/etc/init.d/nsd restart

Verificare NSD

Il modo più semplice per verificare la configurazione di NSD è quello di eseguire dal server una query DNS con dig per il dominio appena definito, nel nostro esempio

dig @66.228.45.214 linuxaria.org

Si dovrebbe vedere qualcosa di simile a questo output:

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.2 <<>> @66.228.45.214 linuxaria.org
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<

In questa schermata si dovrebbe vedere nella ANSWER SECTION la corretta associazione tra il nome DNS e l’IP definito e nella AUTHORITY SECTION la corretta associazione tra i nostri NS e gli IP configurati.

Popular Posts:

Flattr this!

  4 Responses to “Come installare NSD Invece di BIND come name server su Linux per risparmiare memoria”

  1. Hey, never heard of it but after reading this I’m looking forward to trying it out and see if it will replace the use of BIND here.

    As always, awesome articles at LinuxAria.

    take care,

    – d

    • Thanks Daniel,
      This program is new to me too, but it’s really easy to setup it if you are used to bind and usually you can save something around 30MB that on small VPS is a lot 😉

  2. I just heard too and immediately replaced with the bind on my vps. It uses less memory and never down. Thank you for this great article bro.

  3. For Ubuntu and Debian the package is not ns3. It is nsd3. Therefore the command to install is:

    sudo apt-get install nsd3

Leave a Reply to Koray Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*