next up previous contents
Next: L'autententicazione Up: La migrazione del Name Previous: Introduzione   Contents


Il file di hosts

Il primo servizio che migreremo su LDAP è quello degli hostname di /etc/hosts, questa è una modalità comoda per mantenere gli indirizzi delle macchine di una rete privata locale, che vengono modificati spesso senza dover stare a configurare un DNS per un dominio fittizio. Il relativo script di migrazione è migrate_hosts.pl, che si esegue con il comando:

[root@havnor migrationtools]# ./migrate_hosts.pl /etc/hosts  hosts.ldif

Questo genera il file hosts.ldif con le voci relative a ciascuna macchina presente in /etc/hosts, una voce del tipo di:

192.168.1.152  roke.gnulinux.it      roke
sarà trasformata in:
dn: cn=roke.gnulinux.it,ou=Hosts,dc=gnulinux,dc=it
objectClass: top
objectClass: ipHost
objectClass: device
ipHostNumber: 192.168.1.152
cn: roke.gnulinux.it
cn: roke

Dato che in /etc/hosts sono normalmente presenti anche gli indirizzi multicast di IPv6, installati di default con la distibuzione, conviene di nuovo modificare a mano il file per togliere questi e tutti gli eventuali indirizzi che non si vogliono inserire nell'elenco; inoltre vanno rimosse anche tutte le voci duplicate (altrimenti l'importazione si bloccherà quando si cercherà di inserirle). Effettuata la pulizia si potranno di nuovo immettere i dati con il comando:

[piccardi@havnor ldap]$ ldapadd -x -D"cn=admin,dc=gnulinux,dc=it" -W -f hosts.ldif

Ed a questo punto si può verificare che le informazioni immesse siano effettivamente disponibili, usando il comando:

[piccardi@havnor ldap]$  ldapsearch -x -LL "(cn=roke)"

Una volta effettuata la migrazione dei dati occorrerà settare il sistema per leggere i dati da LDAP. Per questo si deve essere già stato installato libnss-ldap (vedi sez. 5.1), alla configurazione base ci sarà da aggiungere l'informazione specifica che riguarda la lettura delle informazioni degli host; questo si fa aggiungendo11 a libnss-ldap.conf la riga:

nss_base_hosts ou=Hosts,dc=chl,dc=it?one
la configurazione infatti supporta una serie di direttive del tipo nss_base_XXXX, che permettono di specificare, come nel caso, in quale sezione dell'albero sono mantenute le informazioni relative ai vari servizi (XXXX può essere hosts, passwd, group, ecc.) specificando la radice della stessa (nel caso ou=Hosts,dc=chl,dc=it) e l'ambito (nel caso ?one, che dice che le informazioni sono direttamente accessibili al livello immediatamente sottostante la radice).

Una volta settato libnss-ldap occorrerà indicare al sistema di utilizzare LDAP per le ricerche sugli host, questo va fatto modificando opportunamente /etc/nsswitch.conf per fargli prendere i dati da LDAP, questo si fa con una riga tipo:

hosts:          files dns ldap
facendo attenzione che la macchina su cui sta il server LDAP sia risolvibile senza l'uso di LDAP, (è pertanto escluso di utilizzare come primo supporto ldap) altrimenti si avrebbe un segmentation fault, dato che di creerebbe un ciclo ricorsivo in cui libnss-ldap chiama gethostbyname che a sua volta richiama libnss-ldap.

In questo modi si potrà verificare che tutto funzioni con:

[piccardi@havnor piccardi]$ ping roke
PING roke.gnulinux.it (192.168.1.152): 56 data bytes
64 bytes from 192.168.1.152: icmp_seq=0 ttl=255 time=9.5 ms
64 bytes from 192.168.1.152: icmp_seq=1 ttl=255 time=11.4 ms
64 bytes from 192.168.1.152: icmp_seq=2 ttl=255 time=8.0 ms
64 bytes from 192.168.1.152: icmp_seq=3 ttl=255 time=8.2 ms

--- roke.gnulinux.it ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 8.0/9.2/11.4 ms
controllando che il server sia contattato.

Attenzione: al momento la cosa sembra funzionare solo per le chiamate a gethostbyname, programmi che usano (come ssh, telnet, ecc.) getaddrinfo non funzionano.



Footnotes

... aggiungendo11
nel caso di Debian scommentando e modificando le righe che sono predisposte da debconf.

next up previous contents
Next: L'autententicazione Up: La migrazione del Name Previous: Introduzione   Contents
Simone Piccardi 2002-09-28