Bind: differenze tra le versioni

7 818 byte aggiunti ,  7 mag 2019
Riga 229: Riga 229:
Per aumentare il livello di protezione sono state aggiunte anche le direttive <code>allow</code>, permettendo le interrogazioni DNS solo dall'interno della lan e impedendo i trasferimenti di zona.
Per aumentare il livello di protezione sono state aggiunte anche le direttive <code>allow</code>, permettendo le interrogazioni DNS solo dall'interno della lan e impedendo i trasferimenti di zona.


== Troubleshooting Bind ==
=== Bind non riparte dopo un riavvio ===
Utilizzando il comando <code>rndc reload</code> qualche volta Bind può rifiutarsi di partire:
<pre>
metaserver:/etc/bind# rndc reload
rndc: connection to remote host closed
</pre>
Questo può indicare che
* il server sta usando una vecchia versione del protocollo
* l'host da cui tentiamo di connetterci non è autorizzato alla connessione a Bind
* i clock non sono sincronizzati
* la chiave non è valida
=== Bind non riparte dopo un aggiornamento di sistema ===
Digitare:
<pre># journalctl -xe</pre>
Se compare questo errore:
<pre>
/etc/bind/named.conf.local:5: open: /etc/bind/rndc.key: permission denied
loading configuration: permission denied
exiting (due to fatal error)
</pre>
È probabile che si siano cambiato il proprietario del file <code>/etc/bind/rndc.key</code>. Verificare che il proprietario sia root e che il gruppo sia bind. Verificare inoltre che i permessi del file siano 640.
=== Errori in /var/log/syslog ===
Una volta che Bind è ripartito, con il comando <code>/etc/init.d/bind9 restart</code> il passo successivo è controllare il file <code>/var/log/syslog</code> in cerca di eventuali errori. Qui sotto proverò ad elencare i più comuni. Ricordatevi di riavviare Bind ogni volta che correggete un errore.
==== Missing Period in a Zone File ====
Questo errore indica che ci siamo dimenticati di inserire un punto <code>.</code> alla fine della dichiarazione del FQDN all'interno dei files:
* <code>/etc/bind/db.test</code>
* <code>/etc/bind/db.192.168.1</code>
==== Filename Typo ====
I nomi dei files delle zone creati in <code>/etc/bind</code> non corrispondono a quelli specificati nel file <code>/etc/bind/named.conf.local</code>. Dovreste trovare anche un errore come il seguente:
<pre>
Jul  3 19:22:42 eyrie named[2847]: zone 1.168.192.in-addr.arp/IN: loading from master file
  /etc/bind/db.1.169.192 failed: file not found
</pre>
==== Ignoring out-of-zone-data and 0 SOA/NS Records for Reverse DNS? ====
Questo è un po' criptico:
<pre>
Jul  3 19:49:28 eyrie named[3028]: /etc/bind/db.1.168.192:3: ignoring out-of-zone data (raptor.loc)
Jul  3 19:49:28 eyrie named[3028]: /etc/bind/db.1.168.192:12: ignoring out-of-zone data (raptor.loc)
Jul  3 19:49:28 eyrie named[3028]: zone 1.168.192.in-addr.arp/IN: has 0 SOA records
Jul  3 19:49:28 eyrie named[3028]: zone 1.168.192.in-addr.arp/IN: has no NS records
</pre>
Probabilmente uno dei files di zona non contiene le corrette dichiarazioni SOA.
==== Has no address records ====
<pre>
zone 1.168.192.in-addr.arpa/IN: NS 'ns1.test.lan.1.168.192.in-addr.arpa' has no address records (A or AAAA)
zone 1.168.192.in-addr.arpa/IN: not loaded due to errors
</pre>
Controllare di non aver dimenticato il punto finale nel file <code>db.192.168.1</code>, ovvero che ci sia scritto:
<pre>@    IN    NS    ns1.test.lan.</pre>
==== Turning Logging On/Off ====
Quando siamo alla ricerca di errori, può essere comodo abilitare temporaneamente il log di tutte le operazioni DNS sul file <code>/var/log/syslog</code> usando il comando:
<pre>
rndc querylog
</pre>
Questo porterà alla registrazione di numerose linee come le seguenti:
<pre>
Jul  3 21:25:40 eyrie named[3189]: client 192.168.1.200#32793: query: eyrie.raptor.loc IN A +
Jul  3 21:25:41 eyrie named[3189]: client 192.168.1.200#32793: query: gyrfalcon.raptor.loc IN A +
</pre>
Per disabilitare il log occorre ridare il comando precedente.
==== error (no valid RRSIG) resolving nome.dominio ====
Il problema è nella funzione DNSSEC di Bind, che fa in modo che il server rifiuti di restituire risposte non validate. Per eliminare l'errore è sufficiente aggiungere al file <code>/etc/bind/named.conf.options</code> aggiungendo le linee:
<pre>
dnssec-enable no;
dnssec-validation no;
</pre>
=== Test di funzionamento ===
Una volta eliminati gli errori dai log possiamo testare il corretto funzionamento del server DNS, con i comandi
<pre>$ host</pre>
oppure
<pre>$ dig</pre>
Qui di seguito sono elencati alcuni problemi comuni:
====Host Does not exist====
=====Authoritative answer=====
<pre>
gyrfalcon:~# host eyrie
eyrie.raptor.loc does not exist (Authoritative answer)
</pre>
Di solito questo indica un problema con il Forward DNS, oppure che è stato dimenticato un punto finale in uno di questi files:
* <code>/etc/bind/db.test</code>
* <code>/etc/bind/db.192.168.1</code>
=====Try Again=====
<pre>
eyrie:~# host eyrie
eyrie does not exist, try again
</pre>
Occorre specificare il dominio di ricerca all'interno del file <code>/etc/resolv.conf</code>.
====Host Not Found====
====Diretto====
<pre>
caio@sempronio:~$ host sempronio
sempronio has address 67.215.65.132
Host sempronio not found: 3(NXDOMAIN)
</pre>
L'IP  <code>67.215.65.132</code> è quello cui OpenDNS  reindirizza  in caso di errore nella risoluzione dei nomi; tale errore  potrebbe  quindi comparire solo se oltre ad aver errato qualcosa avete  indicato  tra i forwarders uno dei server di OpenDNS.<br />
Un simile errore potrebbe essere dovuto ad un'errata definizione di ''sempronio'' nel file <code>db.test</code> se l'host è statico, oppure all'impossibilità di dhcpd di aggiornare il file <code>db.test</code>. In ogni caso consultare il file <code>/var/log/syslog</code> per avere maggiori informazioni.
=====Inverso, SERVFAIL=====
<pre>
caio@sempronio:~$ host 192.168.1.X
Host X.1.168.192.in-addr.arpa not found: 2(SERVFAIL)
</pre>
Controllare di aver definito correttamente tutti i client nel file <code>db.192.168.1</code>, per esempio di non aver scritto qualcosa del tipo:
<pre>X    IN    PTR    sempronio.test.lan</pre>
mancando evidentemente il punto finale, cioè sempronio.test.lan.<br />
Nel solito file di log dovreste trovare un errore di questo tipo:
<pre>unable to add reverse map from X.1.168.192.1.168.192.in-addr.arpa. to sempronio.test.lan: timed out</pre>
=====Inverso, NXDOMAIN=====
<pre>
caio@sempronio:~$ host 192.168.1.X
Host X.1.168.192.in-addr.arpa not found: 3(NXDOMAIN)
</pre>
Il suddetto IP non è presente nel file <code>db.192.168.1</code>, nel caso di indirizzo dinamico ciò potrebbe essere dovuto o all'impossibilita di DHCP di aggiornare tale file, o alla presenza di errori di sintassi nel file che ne impediscono il caricamento o infine ad un inserimento errato da parte del server DHCP. In quest'ultimo caso potrebbe capitare di trovare un record indicato come
<pre>192.168.1.X    PTR    sempronio.test.lan.</pre>
invece di
<pre>X    PTR    sempronio.test.lan.</pre>
Se nel file <code>dhcpd.conf</code> è stata inclusa la riga <code>ddns-rev-domainname "1.168.192.in-addr.arpa.";</code> eliminatela, infatti quello che il DHCP fa è appendere <code>1.168.192.in-addr.arpa.</code> a <code>X.1.168.192</code>. L'errore dovrebbe risultare evidente dal log, dove dovrebbe comparire la riga
<pre>added reverse map from X.1.168.192.1.168.192.in-addr.arpa. to sempronio.test.lan</pre>
quando invece quella corretta è
<pre>added reverse map from X.1.168.192.in-addr.arpa. to sempronio.test.lan</pre>
====Record not found====
<pre>
eyrie:~# host eyrie
eyrie A record not found, server failure
</pre>
Il  client non sta usando il corretto server DNS. Occorre modificare il  file <code>/etc/resolv.conf</code> oppure agire sulla  configurazione di Network Manager.
====Record query refused====
<pre>
eyrie:~# host eyrie
eyrie.raptor.loc A record query refused
</pre>
Dopo aver ottenuto questo errore comparirà una linea in <code>/var/log/syslog</code> sul server DNS:
<pre>
eyrie:~# tail /var/log/daemon.log
Jul  3 21:02:22 eyrie named[3095]: client X.X.X.X#32790: query 'eyrie.raptor.loc/A/IN' denied
</pre>
Questo indica un problema con la direttiva <code>allow-query { }</code> in <code>/etc/bind/named.conf.options</code>, ad esempio è indicato male il range di IP della nostra LAN.


== Approfondimenti ==
== Approfondimenti ==
2 853

contributi