In effetti DNS e NAS sono due entità che sarebbe buona norma non fondere in un'unica macchina, questo per lo meno ha senso in ambito aziendale (esistono una miriade di validi motivi, dal banale traffico extra che rallenta le operazioni del NAS fino al failure dell'hardware: un NAS che si ferma per alcuni minuti non preclude a nessuno la navigazione WEB, ma un DNS si!). Ma che dire di tutte quelle realtà domestiche o di piccolo ufficio nelle quali può sorgere la necessità di dare un nome a servizi locali forniti da vari apparecchi come router, stampanti o applicazioni web e che di solito sono raggiungibili via IP? Magari solo per semplificarne l'accesso o aiutare la memoria a ricordarsi come raggiungerli usando un nome e non un indirizzo numerico di rete.
Idealmente sarebbe sempre il caso di usare una macchina dedicata allo scopo e installare un DNS locale su quella, ma per molti questo significa costi extra, e poi se abbiamo in ufficio già un NAS acceso 24 ore su 24 non possiamo estendere un pochino le sue funzionalità e farlo diventare anche un piccolo DNS?
Ebbene con un NAS QNAP è possibile!
Nell'interfaccia di gestione delle app (app center), nell'attuale versione del QTS (la 4.2.3), non esiste all'interno della lista delle app del repository di default (il QNAP Store) alcuna applicazione che ci permetta di installare un servizio di DNS. Ma per fortuna ci sono repository di terze parti che ci vengono in soccorso.
Come noto i due migliori servizi linux per implementare un DNS sono DNSMASQ e BIND.
In questo tutorial vediamo come installare BIND sul nostro NAS QNAP
Ho preferito BIND a DNSMASQ per il semplice motivo che BIND nasce come DNS server. DNSMASQ, pur essendo più semplice da configurare e con alcune caratteristiche in più come il DHCP, lo lascerò a qualcuno di voi che potrebbe scrivere un tutorial su come configurarlo così che lo possa linkare da questo articolo.- Il primo punto è naturalmente l'installazione di BIND che possiamo trovare già comodamente in formato .QPKG all'interno del repository di qnapclub.eu (vi rimando a un mio precedente post per aggiungerlo se già non l'avete tra i repository dell'app center). Quindi per installarlo basta cliccare su installa.
- Al termine entrare nel terminale e verificare che bind sia attivo:
ps -aef | grep named
Deve dare come risultato qualcosa del tipo:
17344 admin 30348 S ./named
- Verificare che il pacchetto bind sia in autoesecuzione anche dopo il riavvio del nas
grep -A 5 Bind /etc/config/qpkg.conf
Il risultato è qualcosa del tipo:[Bind]
La riga con scritto Enable = TRUE è quella importante. Se così non fosse è possibile modificare a mano il file /etc/config/qpkg.conf e correggere la riga.
Name = Bind
Class = null
Status = complete
Build = 20161029
Version = 9.11.0.0
Author = Guerithault Stephane (QoolBox)
QPKG_File = Bind.qpkg
Date = 2017-03-10
Shell = /share/CACHEDEV1_DATA/.qpkg/Bind/Bind.sh
Volume_Select = 3
Install_Path = /share/CACHEDEV1_DATA/.qpkg/Bind
RC_Number = 101
Enable = TRUE - La riga Install_Path = /share/CACHEDEV1_DATA/.qpkg/Bind ci dice dove è stato installato Bind, quindi spostiamoci in quella directory e creiamo una nuova directory "log" che useremo per archiviare permanentemente i file di log di BIND.
mkdir /share/CACHEDEV1_DATA/.qpkg/Bind/log
- La versione di BIND distribuita da qnapclub.eu non porta con se molti dei file di configurazione che si possono trovare normalmente nelle distribuzioni più famose di linux come debian o ubuntu. Quindi ci dobbiamo personalizzare la configurazione partendo dal file /share/CACHEDEV1_DATA/.qpkg/Bind/etc/named.conf
vi /share/CACHEDEV1_DATA/.qpkg/Bind/etc/named.conf
Aggiungiamo queste righe// This is the primary configuration file for the BIND DNS server named.
Quindi salviamo e chiudiamo il file.
options {
directory "/share/CACHEDEV1_DATA/.qpkg/Bind";
forwarders {
//Google DNS
8.8.8.8;
8.8.4.4;
};
auth-nxdomain no; # conform to RFC1035
};
//Configuro il logging
logging {
channel default_file {
file "log/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel general_file {
file "log/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel database_file {
file "log/database.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel security_file {
file "log/security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel config_file {
file "log/config.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel resolver_file {
file "log/resolver.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-in_file {
file "log/xfer-in.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-out_file {
file "log/xfer-out.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel notify_file {
file "log/notify.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel client_file {
file "log/client.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel unmatched_file {
file "log/unmatched.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel queries_file {
file "log/queries.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel network_file {
file "log/network.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel update_file {
file "log/update.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dispatch_file {
file "log/dispatch.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dnssec_file {
file "log/dnssec.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel lame-servers_file {
file "log/lame-servers.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
category default { default_file; };
category general { general_file; };
category database { database_file; };
category security { security_file; };
category config { config_file; };
category resolver { resolver_file; };
category xfer-in { xfer-in_file; };
category xfer-out { xfer-out_file; };
category notify { notify_file; };
category client { client_file; };
category unmatched { unmatched_file; };
category queries { queries_file; };
category network { network_file; };
category update { update_file; };
category dispatch { dispatch_file; };
category dnssec { dnssec_file; };
category lame-servers { lame-servers_file; };
};
//Configuro le zone
zone "home.lan" {
type master;
file "etc/db.home";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "etc/db.192.168.0";
};
Quello che si può notare dalla configurazione qui sopra è che abbiamo attivato e separato tutti i canali di log in file indipendenti che vengono archiviati sotto la cartella log/ che a sua volta viene cercata nella posizione definita dalla direttiva options - directory. Inoltre abbiamo impostato come forwarders i DNS di Google così che quando BIND non conosce come risolvere un indirizzo lo vada a chiedere a Google.
Nella configurazione si possono poi notare le due zone locali: una chiamata "home.lan" e l'altra che esegue il reverse degli indirizzi a partire dall'IP di rete locale 192.168.0.X.
Quello che dobbiamo fare ora quindi è creare ed editare i due file delle zone. - Creare il file /share/CACHEDEV1_DATA/.qpkg/Bind/etc/db.home e inserivi:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA QNAP-TS-253A.home.lan. admin.QNAP-TS-253A.home.lan. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
QNAP-TS-253A IN A 192.168.0.2
NS IN CNAME QNAP-TS-253A
router IN A 192.168.0.2 - Creare il file per il reverse /share/CACHEDEV1_DATA/.qpkg/Bind/etc/db.192.168.0 e inserirvi:
;
; BIND reverse data file for empty rfc1918 zone
;
$TTL 604800
@ IN SOA QNAP-TS-253A.home.lan. admin.QNAP-TS-253A.home.lan. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
2 IN PTR router.home.lan - I due file db.home e db.192.168.0 permettono di definire indirizzi locali del tipo blabla.home.lan e associare ad essi un indirizzo IP della propria rete locale. Nell'esempio è stato definito l'indirizzo router.home.lan, quindi quando BIND sarà interrogato a riguardo risponderà con l'IP 192.168.0.2. Per aggiungere nuovi indirizzi è sufficiente aggiungerli uno sotto l'altro.
- Ora verifichiamo il buon funzionamento della configurazione.
Riavviamo il servizio utilizzando il l'app center nel QTS e assicuriamoci di avere come DNS del nostro PC l'ip del NAS.
Da linea di comando sul nostro PC eseguire il comandodig router.home.lan
Se esce qualcosa di questo genere; <<>> DiG 9.8.3-P1 <<>> router.home.lan
allora siamo stati bravi e possiamo goderci tranquillamente la navigazione in rete locale e in internet utilizzando il nostro nuovo e fiammante DNS. In caso di errore o non funzionamento non c'è altro da fare che scartabellare i file di log alla ricerca di cosa sia andato storto.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57971
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;router.home.lan. IN A
;; ANSWER SECTION:
router.home.lan. 604800 IN A 192.168.0.2
;; AUTHORITY SECTION:
home.lan. 604800 IN NS localhost.
;; Query time: 2 msec
;; SERVER: 192.168.0.2#53(192.168.0.2)
;; WHEN: Mon Mar 20 15:06:21 2017
;; MSG SIZE rcvd: 72
Nessun commento:
Posta un commento