Acronimo di Domain Name System (o servizio o Server), un servizio Internet che traduce i nomi di dominio in indirizzi IP. Poiché i nomi di dominio sono in formato alfabetico, sono più facili da ricordare. Internet, tuttavia, è in realtà basata su indirizzi IP. Ogni volta che si utilizza un nome di dominio un servizio DNS deve tradurre il nome nel relativo indirizzo IP. Ad esempio, il nome di dominio www.example.com potrebbe tradursi in 198.105.232.4. Il sistema DNS ha, di fatto, una propria rete. Se un server DNS non sa come tradurre un determinato nome a dominio, chiede un altro, e così via, fino a quando l ‘indirizzo IP corretto viene restituito.
Configurazione del Servizio DNS
La configurazione del servizio DNS sotto Linux richiede i seguenti passaggi:
Per abilitare i servizi DNS, il file /etc/host.conf deve avere le seguenti sembianze:
# Lookup names via /etc/hosts first, then by DNS query
order hosts, bind
# We don’t have machines with multiple addresses
multi on
# Check for IP address spoofing
nospoof on
# Warn us if someone attempts to spoof
alert on
Il rilevamento extra spoof aggiunge un pò di calo di prestazioni per le ricerche DNS (anche se trascurabile), quindi se non siete troppo preoccupati di questo si consiglia di disabilitare le voci “nospool” e “alert”.
Il file /etc/hosts dovrebbe essere configurato per puntare alla vostre tabelle DNS come nell’esempio qui sotto.
Nota: (Nota: gli indirizzi IP sono solo esempi e devono essere sostituiti con quelli della vostra classe!):
options {
// DNS tables are located in the /var/named directory
directory “/var/named”;
// Forward any unresolved requests to our ISP’s name server
// (this is an example IP address only — do not use!)
forwarders {
99.1.1.1;
};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
// Enable caching and load root server info
zone “named.root” {
type hint;
file “”;
};
// All our DNS information is stored in /var/named/mydomain_name.db
// (eg. if mydomain.name = foobar.com then use foobar_com.db)
zone “mydomain.name” {
type master;
file “mydomain_name.db”;
allow-transfer { 123.12.41.40; };
};
// Reverse lookups for 123.12.41.*, .42.*, .43.*, .44.* class C’s
// (these are example Class C’s only — do not use!)
zone “12.123.IN-ADDR.ARPA” {
type master;
file “123_12.rev”;
allow-transfer { 123.12.41.40; };
};
// Reverse lookups for 126.27.18.*, .19.*, .20.* class C’s
// (these are example Class C’s only — do not use!)
zone “27.126.IN-ADDR.ARPA” {
type master;
file “126_27.rev”;
allow-transfer { 123.12.41.40; };
};
Suggerimento: Prendere nota delle opzioni di allow-transfer di cui sopra, che limita i trasferimenti di zona DNS a un dato indirizzo IP. Nel nostro esempio, permettiamo all’host 123.12.41.40 (probabilmente uno slave DNS server nel nostro dominio) di richiedere trasferimenti di zona. Se si omette questa opzione, chiunque su Internet sarà in grado di richiedere tali trasferimenti. Poiché le informazioni fornite sono spesso utilizzati da spammer e IP spoofer, vi raccomando caldamente di limitare i trasferimenti di zona soltanto per il vostro server DNS slave (s), oppure utilizzare l’indirizzo di loopback, 127.0.0.1 “”.
Ora è possibile impostare le vostre tabelle DNS nella /var/named/ come configurato nel file /etc/named.conf nel terzo paragrafo. Configurare i file del database DNS per la prima volta è una grande impresa, e va oltre gli scopi di questo documento. Ci sono molte guide online e in formato cartaceo che dovrebbe essere di aiuto. Tuttavia, alcuni esempi sono forniti di seguito.
Voci di esempio nel file /var/named/mydomain_name.db :
; This is the Start of Authority (SOA) record. Contains contact
; & other information about the name server. The serial number
; must be changed whenever the file is updated (to inform secondary
; servers that zone information has changed).
@ IN SOA mydomain.name. postmaster.mydomain.name. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum
; List the name servers in use. Unresolved (entries in other zones)
; will go to our ISP’s name server isp.domain.name.com
IN NS mydomain.name.
IN NS isp.domain.name.com.
; This is the mail-exchanger. You can list more than one (if
; applicable), with the integer field indicating priority (lowest
; being a higher priority)
IN MX mail.mydomain.name.
; Provides optional information on the machine type & operating system
; used for the server
IN HINFO Pentium/350 LINUX
; A list of machine names & addresses
spock.mydomain.name. IN A 123.12.41.40 ; OpenVMS Alpha
mail.mydomain.name. IN A 123.12.41.41 ; Linux (main server)
kirk.mydomain.name. IN A 123.12.41.42 ; Windows NT (blech!)
; Including any in our other class C’s
twixel.mydomain.name. IN A 126.27.18.161 ; Linux test machine
foxone.mydomain.name. IN A 126.27.18.162 ; Linux devel. kernel
; Alias (canonical) names
gopher IN CNAME mail.mydomain.name.
ftp IN CNAME mail.mydomain.name.
www IN CNAME mail.mydomain.name.
Voci di esempio nel file di reverse lookup /var/named/123_12.rev:
; This is the Start of Authority record. Same as in forward lookup table.
@ IN SOA mydomain.name. postmaster.mydomain.name. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum
; Name servers listed as in forward lookup table
IN NS mail.mydomain.name.
IN NS isp.domain.name.com.
; A list of machine names & addresses, in reverse. We are mapping
; more than one class C here, so we need to list the class B portion
; as well.
40.41 IN PTR spock.mydomain.name.
41.41 IN PTR mail.mydomain.name.
42.41 IN PTR kirk.mydomain.name.
; As you can see, we can map our other class C’s as long as they are
; under the 123.12.* class B addresses
24.42 IN PTR tsingtao.mydomain.name.
250.42 IN PTR redstripe.mydomain.name.
24.43 IN PTR kirin.mydomain.name.
66.44 IN PTR sapporo.mydomain.name.
; No alias (canonical) names should be listed in the reverse lookup
; file (for obvious reasons).
Altri files di reverse lookup, necessari ad esempio per mappare gli indirizzi in una differente classe B (ad esempio 126,27 .*), possono essere creati in modo simile all’esempio di cui sopra.
Assicurarsi che il servizio named sia in esecuzione. Questo servizio è generalmente avviato dal file /etc/rc.d/init.d/named dal boot del sistema. È inoltre possibile avviare e arrestare il servizio manualmente: digitare rispettivamente named start e named stop.
Ogni volta che vengono apportate modifiche alle tabelle DNS, il server DNS deve essere riavviato digitando /etc/rc.d/init.d/named restart. E’ possibile testare le modifiche apportate utilizzando uno strumento come nslookup.