3 155
contributi
Wtf (discussione | contributi) m (→Sitografia) |
Wtf (discussione | contributi) |
||
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 == |
contributi