Dentro il sistema

Intranet: un name server per OS/2

Marco Bertini
 

Nel numero di maggio/giugno abbiamo visto come fare l'aliasing degli IP, gestire server Web virtuali per questi indirizzi e come aggiungere il dominio e nomi alias alla nostra rete per renderla più professionale e flessibile.
In questo articolo vedremo di andare ancora un passo avanti riguardo quest'ultimo argomento dei domini e dei nomi delle macchine in una rete TCP/IP, esaminando l'installazione ed il funzionamento di un name server per OS/2 (BIND, gratuito) un programma indubbiamente necessario quando la rete che si amministra è di tipo professionale.

Il name server


Chiunque abbia un minimo di esperienza di internet ha sentito parlare del DNS o Domain Name Server, se non altro perché è uno dei parametri che vanno forniti al dialer per collegarsi al proprio provider, ma non tutti sanno che cosa é; ebbene è il software che mappa gli scomodi indirizzi IP numerici nei più semplici nomi equivalenti.
Quando il Netscape o il PM Mail cercano di collegarsi a un server usando un nome come per esempio www.ibm.com o popmail.iol.it, il DNS fornisce il rispettivo indirizzo IP e il colloquio tra il client e il server inizia.
Nel primo articolo di questa serie sulle intranet fatte con OS/2 e nei successivi avevamo risolto il problema di determinare la corrispondenza tra indirizzi IP e nomi usando il file \MPTN\ETC\HOSTS, un semplice file di testo che viene consultato dallo stack TCP di Warp, cosicché a www.bertinet.net corrispondeva 192.168.0.1.
Lo svantaggio di usare questo sistema è che si può utilizzare comodamente solo finché l'intranet è composta da pochi PC, infatti ogni aggiunta di una macchina o spostamento di un server da un PC ad un altro richiede che il file venga aggiornato su tutti i PC della rete, con conseguenti possibilità di errore o ritardi di aggiornamento.
Quando si tratta di un'intranet professionale o che si vuole trasformare in extranet pubblica, come BBS o rete civica o come extranet privata di una ditta, ecco che si ha la necessità di usare un name server, in modo che tutti i cambiamenti possano essere effettuati da un responsabile su un'unica macchina e siano immediatamente disponibili a tutta la rete.
Tutto questo come negli articoli precedenti verrà fatto a costo zero, cosa che dovrebbe far riflettere chiunque abbia la necessità di costruire un'intranet o extranet, sull'opportunità di usare Warp o Warp Server; inoltre è da notare che l' installazione del name server non darà assolutamente noia alla condivisione dell' accesso ad internet che si era visto sul numero 2/97 di Just Warp!

Installazione del name server BIND


Il name server che prenderemo in considerazione è BIND (Berkley Internet Name Domain) 4.9.5 per OS/2, un server gratuito e molto noto, tanto che il DNS di IBM fornito con Warp Server si basa su di esso; inoltre il carico di questo name server sul sistema è praticamente nullo.
Al momento in cui scrivo nella directory \incoming di Hobbes è presente la versione 8.1.1 che è la versione successiva alla 4.9.5; può stupire il salto di numerazione, ma è stato deciso così per tutte le piattaforme supportate da BIND. Per usarlo è necessario aver installato il runtime di Emx 0.9c (emxrt.zip, 500 kB, per la 8.1.1 deve essere la 0.9c Fix 3) che potete trovare anche sul mirror VOLFtp di Hobbes), dato che proviene dal mondo UNIX; è inoltre in preparazione il porting sotto VAC++.
Una volta decompresso il file bind495a.zip (1 Mb, comprende anche i sorgenti in C), in una directory temporanea, per esempio \BIND495 bisogna effettuare i seguenti spostamenti di file:

Da
A
\BIND495\NAMED\NAMED.EXE
\TCPIP\BIN
\BIND495\NAMED\NAMED-XFER.EXE
\TCPIP\BIN
\BIND495\TOOLS\DIG.EXE
\TCPIP\BIN
\BIND495\TOOLS\DNSQUERY.EXE
\TCPIP\BIN
\BIND495\TOOLS\HOST.EXE
\TCPIP\BIN
\BIND495\TOOLS\ADDR.EXE
\TCPIP\BIN
\BIND495\TOOLS\NSLOOKUP\NSLOOKUP.EXE
\TCPIP\BIN
\BIND495\TOOLS\NSLOOKUP\NSLOOKUP.HELP
\MPTN\HELP

A questo punto si deve creare la directory \MPTN\NAMEDB e i file di dati per il server.
Chi volesse porre questi file in una directory diversa da \TCPIP\BIN e \TCPIP\HELP può farlo a patto di configurare nel file CONFIG.SYS tre variabili di sistema, in questo caso va consultato il semplice manuale fornito con BIND.

I file di configurazione


I file di configurazione di BIND vanno creati con un qualsiasi editor ASCII come l'editor di sistema, consiglio di porli in \MPTN\ETC\NAMEDB dato che è il default.
Il file più importante è NAMED.BOOT, gli altri hanno nome e posizione a discrezione dell'amministratore di sistema, personalmente mi sono limitato a seguire una struttura consigliata nella documentazione sui DNS, che mi pare flessibile e facile da mantenere.
Vediamo quindi questo file:

; File: MPTN\ETC\NAMEDB\NAMED.BOOT per Bind 4.9.5
;

; Cache
; contiene le informazioni usate da named (Bind) per iniziare

; Attenzione al doppio slash (\\) !

cache . f:\\mptn\\etc\\namedb\\named.cache

; Server primari
; formato: primary nome dominio file

; Forward mapping
primary bertinet.net f:\\mptn\\etc\\namedb\\named.domain

; Reverse mapping

primary 0.0.127.in-addr.arpa f:\\mptn\\etc\\namedb\\0.0.127.in-addr.arpa
primary 0.168.192.in-addr.arpa f:\\mptn\\etc\\namedb\\0.168.192.in-addr.arpa


La struttura è semplice, i ' ; ' indicano i commenti, le informazioni di cache servono al DNS per avviarsi e sono contenute nel file indicato; il primo primary indica quale file usare per la mappatura diretta del dominio bertinet.net, ovvero quale file deve essere consultato per trovare per esempio l'indirizzo IP di www.bertinet.net; gli altri due primary indicano quali file usare per la mappatura inversa, ovvero trovare gli indirizzi conoscendo i nomi.
È da notare la forma del primo parametro, che inverte l'indirizzo IP della rete che si amministra, se per esempio si dovesse gestire la 130.34.56.x si avrebbe:

primary 56.34.130.in-addr.arpa f:\\xxxxxxxxxxxx

Nel caso il DNS debba servire più reti si aggiungono i relativi dati, come si vede i file di mappatura possono essere messi dove si vuole anche se mi pare più ordinato tenerli insieme a NAMED.BOOT ; consiglio inoltre di stare attenti a usare "\\" nel percorso dei file di mappatura, per evitare noiosi errori.
Vediamo ora il file NAMED.CACHE:

; File: f:\MPTN\ETC\NAMEDB\NAMED.CACHE
; file di cache per named (Bind)
; leggere il manuale di Bind per maggiori informazioni sul file cache standard

; definisce domain name server padri
; ATTENZIONE al punto alla fine del nome !
bertinet.net. 99999999 IN NS 194.20.24.1.
in-addr.arpa. 99999999 IN NS 194.20.24.1.
. 99999999 IN NS 194.20.24.1.

; indirizzo del name server del provider
; attenzione al punto in fondo al nome !
194.20.24.1. 99999999 IN A 194.20.24.1


Questo è usato per riferirsi ai DNS padre, in questo caso usa il DNS di IOL che ha indirizzo 194.20.24.1, e che non avendo nome è stato chiamato 194.20.24.1. (notate il punto finale!), nel caso il DNS del vostro provider si chiami dns.provider.it ed abbia indirizzo 196.10.10.1 basta sostituire il nome a 194.20.24.1. e l'indirizzo.
Passiamo quindi al file di mappatura diretta, NAMED.DOMAIN :

; File: f:\MPTN\ETC\NAMEDB\NAMED.DOMAIN
; File di Forward Mapping per Bind
; Descrizione del dominio bertinet.net che si trova in NAMED.BOOT

; SOA : Start Of Authority

@ IN SOA psvp.bertinet.net. psvp.bertinet.net. (
97080901 ; Numero seriale forma: aammgg##
86400 ; tempo di refresh = 24 h.
3600 ; tempo di retry = 1 h.
864000 ; tempo di scadenza 10 giorni
86400 ) ; TTL minimo
NS psvp.bertinet.net.



; Informazioni sugli indirizzi del dominio

; localhost.bertinet.net
localhost IN A 127.0.0.1
IN HINFO PC Loopback

; psvp (psvp.bertinet.net)
psvp IN A 192.168.0.1
IN HINFO PC WARP4

; thinkpad
thinkpad IN A 192.168.0.2
IN HINFO THINKPAD WARP4

; merlin
merlin IN A 192.168.0.3
IN HINFO PC WARP4


; Per gestire più agevolmente eventuali spostamenti dei server
; Attenzione al punto finale !

www IN CNAME psvp.bertinet.net.

news IN CNAME psvp.bertinet.net.

mail IN CNAME merlin.bertinet.net.

proxy IN CNAME psvp.bertinet.net.


Permettetemi di tralasciare la discussione del campo SOA, è descritto nel manuale del DNS e se avete bisogno di cambiare quei cinque numeri vuol dire che dovete proprio leggerlo.
Passiamo ai campi seguenti, come è intuibile attribuiscono ad ogni nome il relativo indirizzo IP e aggiungono informazioni sul tipo di macchina e sul sistema operativo usato, informazioni che possono essere lette con nslookup con il comando ls -h bertinet.net.
Ogni volta che viene aggiunta una macchina alla rete basterà quindi aggiornare questo file e quello di mappatura inversa.
Per finire esaminiamo l'ultima parte del file, nella quale vengono definiti degli alias per il server web, news, proxy e posta; con questo sistema diventa facilissimo spostare un server da un PC ad un altro più potente o meno usato, dovendo così aggiornare solo il campo a destra di CNAME.
Concludiamo lo studio dei file di configurazione con i file di mappatura inversa sia per il localhost (127.0.0.1) che per la rete:

; File: f:\MPTN\ETC\NAMEDB\0.0.127.in-addr.arpa
; File di Reverse mapping per Bind

; SOA : Start Of Authority
; ripreso da NAMED.DOMAIN
@ IN SOA psvp.bertinet.net. psvp.bertinet.net. (
97080901 ; Numero seriale forma: aammgg##
86400 ; tempo di refresh = 24 h.
900 ; tempo di retry = 15 min
864000 ; tempo di scadenza 10 giorni
86400 ) ; TTL minimo
NS psvp.bertinet.net.

; attenzione al punto finale !
1 IN PTR localhost.bertinet.net.


Come si vede è banale, per la rete invece ci sono i campi relativi a tutte le macchine:

; File: f:\MPTN\ETC\NAMEDB\0.168.192.in-addr.arpa
; File di Reverse mapping per Bind del dominio 192.168.0.x

; SOA : Start Of Authority
; ripreso da NAMED.DOMAIN
@ IN SOA psvp.bertinet.net. psvp.bertinet.net. (
97080901 ; Numero seriale forma: aammgg##
86400 ; tempo di refresh = 24 h.
900 ; tempo di retry = 15 min
864000 ; tempo di scadenza 10 giorni
86400 ) ; TTL minimo
NS psvp.bertinet.net.

; attenzione al punto finale !
1 IN PTR psvp.bertinet.net.
2 IN PTR thinkpad.bertinet.net.
3 IN PTR merlin.bertinet.net.

La configurazione del TCP/IP


L'ultimo passo da seguire per avere il nostro DNS funzionante è configurare il TCP/IP, usando al solito l'utility di Configurazione di TCP/IP che si trova nel folder di Impostazioni del sistema.
Nella pagina 1 di Nomi host nel campo indirizzi server nomi mettiamo l'indirizzo IP del PC dove si trova BIND, come mostrato in figura:

- impostazioni tcp/ip -

Andiamo alla pagina 2 di Nomi host e se necessario deselezionamo il checkbox Cercare nell'elenco host..., come in figura, in modo che il TCP/IP chieda solo al DNS la risoluzione degli indirizzi.

[ ] Cercare nell'elenco HOST prima di andare al server dei nomi

A questo punto la configurazione è finita, e possiamo fare la prima prova.

Avvio e test del name server


La prima volta che si avvia il DNS è bene eseguire il programma syslogd.exe che si trova in \TCPIP\BIN, che salva nel file \MPTN\ETC\syslog.msg il log dei messaggi di BIND, in questo modo si possono trovare eventuali errori fatti nella creazione dei file di configurazione, magari un punto finale mancante o uno \ al posto di \\.
Facciamo quindi partire il dns con il comando named.exe che avevamo posto in \TCPIP\BIN, comando che andrà messo nella cartella Avvio per eseguirlo automaticamente all'accensione del PC che fa da server.
Una volta accertato esaminando syslog.msg che non ci sono errori nei file di configurazione testiamo il server usando nslookup.
Al prompt del programma verrà mostrato l'indirizzo del DNS di default, che in questo esempio è 192.168.0.1, e interroghiamo il DNS:

> psvp
Server: psvp.bertinet.net
Indirizzo: 192.168.0.1

Nome: psvp.bertinet.net
Indirizzo: 192.168.0.1

> 192.168.0.3
Server: psvp.bertinet.net
Indirizzo: 192.168.0.1

Nome: merlin.bertinet.net
Indirizzo: 192.168.0.3

> www
Server: psvp.bertinet.net
Indirizzo: 192.168.0.1

Nome: psvp.bertinet.net
Indirizzo: 192.168.0.1
Alias: www.bertinet.net

> ls -h bertinet.net
[psvp.bertinet.net]
merlin PC WARP4
thinkpad THINKPAD WARP4
localhost PC Loopback
psvp PC WARP4


Una volta accertato che il DNS funziona impostiamo il TCP/IP sulle altre macchine della rete e proviamo il collegamento ad internet, sia usando il Netscape/2 che il comando host:

[F:\]host psvp
psvp.bertinet.net = 192.168.0.1

[F:\]host www.ibm.com
www.ibm.com = 204.146.17.33

[F:\]host www.bertinet.net
psvp.bertinet.net = 192.168.0.1


Come si vede vengono risolti sia i nomi e gli alias della nostra intranet, che nomi di altri domini come ibm.com.

Conclusioni


Abbiamo visto come rendere decisamente professionale e flessibile la nostra rete intranet, che ora può ingrandirsi a piacere ed eventualmente anche aprirsi verso l'esterno diventando un extranet.
La gestione dei nomi è ora centralizzata, l'aggiunta di uno o più PC implica la modifica di solo due file di mappatura, infine è possibile spostare i server sui PC che garantiscono le migliori prestazioni, secondo le necessità.
Tutto questo al solito è a costo zero in quanto anche in questo caso è stato usato un programma di pubblico dominio.


[Pagina precedente] [Sommario] [Pagina successiva]