domingo, 14 de noviembre de 2010

NIS Network Information Services sobre Solaris 10

NIS (Network Information Service) un servicio creado por Sun Microsystems y cuya función principal es manejar mapas (archivos) de forma centralizada (un solo servidor o un servidor principal y uno(s) esclavo(s)), no teniendo la necesidad de estar copiando información no muy cambiante (no muy volátil) de maquina a maquina, información que para una base de datos sería muy variable.

El servicio en sus comienzos llevo el nombre de yellow pages, el cual por razones obvias, no pudo ser siendo usado, esto ultimo lo comento para todos aquellos que con frecuencia pregunta por que todos los comandos de NIS comienzan con yp.

Por otro lado, hoy día su mejor sustituto es LDAP, servicio del que hablaremos en otro post y que cumple una función similar a NIS pero multiplataforma (entinedase microsoft con su active directory puede hablar con el ldap de unix o de GNU/linux). NIS pude hacerlo, implementando samba en la red.

Hay un gran hueco de seguridad con NIS, combinación de shadow con passwd (solucionado instalando passwd.adjunct), eso produjo que muchos huyeran del servicio.

Para la receta de esta oportunidad usamos (ingredientes crudos):
Servidor con Solaris 10, 9 o 8 instalado
Cliente(s)
Un nombre de dominio, NIS no puede trabajar con subdominios, LDAP si.

NIS:
Server:
1.- domainname clarita (nombre de dominio)
2.- domainname > /etc/defaultdomaina (dejarlo copiado fijo para el próximo reinicio)
3.- cd /etc; touch ethers netgroup bootparams (crear los archivos, que no existen por defecto).
4.- vi /etc/timezone (hay que crear el archivo, opcional colocar las coordenadas del meridiano de GMT)
gmt-4 clarita
5.- cp /etc/nsswitch.nis /etc/nsswitch.conf (aquí es interesante recordar, que se debe tener la información de donde buscar cada mapa).
6.- ypinit -m (la m es de master) así mas o menos debe ser la salida:
In order for NIS to operate sucessfully, we have to construct a list of the
NIS servers.  Please continue to add the names for YP servers in order of
preference, one per line.  When you are done with the list, type a
or a return on a line by itself.
        next host to add:  pantera
        next host to add:  ^D
The current list of yp servers looks like this:

pantera

Is this correct?  [y/n: y]  y

Installing the YP database will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.

Do you want this procedure to quit on non-fatal errors? [y/n: n]  n
OK, please remember to go back and redo manually whatever fails.  If you
don't, some part of the system (perhaps the yp itself) won't work.
The yp domain directory is /var/yp/clarita
There will be no further questions. The remainder of the procedure should take
5 to 10 minutes.
Building /var/yp/clarita/ypservers...
Running /var/yp /Makefile...
updated passwd
updated group
updated hosts
updated ipnodes
updated ethers
updated networks
updated rpc
updated services
updated protocols
make: Warning: Don't know how to make target `/etc/netgroup'
Current working directory /var/yp
updated bootparams
/var/yp/clarita/mail.aliases: 12 aliases, longest 10 bytes, 138 bytes total
/usr/lib/netsvc/yp/mkalias /var/yp/`domainname`/mail.aliases /var/yp/`domainname`/mail.byaddr;
updated aliases
updated publickey
updated netid
/usr/sbin/makedbm /etc/netmasks /var/yp/`domainname`/netmasks.byaddr;
updated netmasks
couldn't find /etc/timezone
updated auto.master
updated auto.home
updated ageing
updated auth_attr
updated exec_attr
updated prof_attr
updated user_attr
updated audit_user
make: Warning: Target `all' not remade because of errors
Current working directory /var/yp
*** Error code 1
The following command caused the error:
if [ ! 1 ]; then make   -k all; \
else make  -k all NOPUSH=1;fi
make: Fatal error: Command failed for target `k'
Error running Makefile.


pantera has been set up as a yp master server with errors.  Please remember
to figure out what went wrong, and fix it.

If there are running slave yp servers, run yppush now for any data bases
which have been changed.  If there are no running slaves, run ypinit on
those hosts which are to be slave servers.
7.- svcs -a | grep nis (en solaris 8 o 9 solo es suficiente preguntar pgrep -lf yp)
8.- svcadm restart svc:/network/nis/server:default en solaris 8 o 9 hayque ejecutar la ruta de ypstart o ypstop segun la necesidad.

Sobre los clientes:

1.- domainname clarita (nombre de dominio)
2.- domainname > /etc/defaultdomaina (dejarlo copiado fijo para el próximo reinicio).
4.- cp /etc/nsswitch.nis /etc/nssiwith.conf (aquí es interesante recordar, que se debe tener la información de donde buscar cada mapa).
3.- ypinit -c  (la c de client) la salida debe ser algo como esto:
 In order for NIS to operate sucessfully, we have to construct a list of the
NIS servers.  Please continue to add the names for YP servers in order of
preference, one per line.  When you are done with the list, type a
or a return on a line by itself.
        next host to add:  pantera
        next host to add:  ^D
The current list of yp servers looks like this:

pantera

Is this correct?  [y/n: y]  y


5.- svcs -a | grep nis (misma ejecución que en el server).
6.- svcadm restart svc:/network/nis/server:default (misma ejecución, si es solaris 8 o 9).

Por favor recordemos que vale la pena sobre cada cliente tener editado el archivo /etc/hosts con la dirección ip del servidor, en este caso de pantera.

A este nivel solo me queda recordar que la comunicación es mediante un binding (enlace entre el servidor y el(los) cliente(s).

Claro para los que quieren ir a mas bajo nivel, esto ocurre bajo un RPC (remote procedure call).

Si  finalmente quisieramos la receta para el server esclavo les debo decir que se aplican los mismos pasos  que para una maquina cliente y el ultimo paso es ejecutar ypinit -s (slave).


Después pruebalo con ypserver, ypwhich, ypcat, etc.

Este servico es muy utíl en temas como clusters de alto rendimiento (MPI o PVM), muy utíl sobre clusters tipo beowulf también, se usa aún en algunas empresas todavia.

Enjoy!!!

No hay comentarios:

Publicar un comentario en la entrada