Este documento proporciona una introducción a NFS, NIS y DHCP. NFS permite compartir archivos y carpetas entre sistemas a través de la red de forma transparente. NIS permite compartir información de usuarios, grupos y hosts entre sistemas. DHCP permite configurar automáticamente la interfaz de red de los equipos asignando direcciones IP y otras opciones.
Irontec - Presentación de servicios de telefonía IP
Nfsnis
1. NFS / NIS / DHCP
Miguel Ángel Nieto <miguelangel@irontec.com>
Irontec – Internet y Sistemas sobre GNU/Linux
2. Irontec – NFS y NIS
Introducción NFS
NFS son las siglas de Network File System
Nos permite compartir carpetas y ficheros entre
distintos sistemas operativos a través de la red
De esta forma, accedemos a carpetas remotas
como si en realidad fuesen locales, de forma
transparente
Fué desarrollado en 1984 por Sun
Microsystems.
2
3. Irontec – NFS y NIS
Introducción NFS
● Sigue la estructura cliente/servidor
● El servidor comparte unos datos que los clientes
acceden desde sus estaciones de trabajo
● Es posible compartir carpetas, dispositivos físicos
(cd-rom, disquetera, usb stick) ya que en Unix, todo
son carpetas :)
● Existen tres versiones de NFS, v2, v3 y v4
● La última v4 tiene, entre otras cosas, soporte
kerberos y ACLs
http://www.nfsv4.org/
3
4. Irontec – NFS y NIS
NFS
● Debian viene con el cliente NFS por defecto (nfs-
common) Si no fuese así, será necesario instalaro
● Si queremos instalar un servidor NFS, este se
encuentra en el paquete nfs-kernel-server
● Aún así, un equipo puede actuar tanto como
servidor como cliente
4
5. Irontec – NFS y NIS
NFS
● El primer paso será instalar nfs-kernel-server
● Una vez hecho, podemos parar y arrancar el
servicio mediante el script /etc/init.d/nfs-kernel-
server
● Para comprobar si está en funcionamiento es
necesario usar el comando rcpinfo -p
# rpcinfo -p
programa vers proto puerto
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
100005 1 udp 1018 mountd
100005 2 udp 1018 mountd
100005 1 tcp 1021 mountd
100005 2 tcp 1021 mountd
[....]
Tenemos que ver, como mínimo, portmapper, nfs y mountd. 5
6. Irontec – NFS y NIS
NFS
● Por defecto no se permite el acceso a ningún
recurso compartido
● Estos se configuran en el fichero /etc/exports
● Se debe indicar que carpeta compartir y a que host
● Ejemplo:
/tmp/ host.profesor.com(rw)
● Se pueden indicar tanto host como Ips.
● Si queremos dar solo lectura será (ro)
● Una vez hecho el cambio se deben aplicar con el
comando:
# exportfs -ra
6
7. Irontec – NFS y NIS
NFS
● A la hora de indicar el host al que le permitimos el
acceso se pueden usar comodines como * y ?
● Por ejemplo:
– alumno?.com
– Profesor.*
– *.google.es
– *.*.?ahoo.es
● En caso de usar Ips también podemos definir rangos
completos
– 192.168.1.0/24
– 192.168.1.111/32
–
7
8. Irontec – NFS y NIS
NFS
● Las opciones más importantes:
– Secure: obliga a que el servicio escuche en un puerto
privilegiado (menor a 1024)
– Nosecure: elimina la obligación de usar un puerto
privilegiado
– Ro: solo lectura
– Rw: lectura / escritura
– Noaccess: Sin permisos de acceso
– Anonuid: El uid de usuario con el que nos
conectaremos
– Anongid: Es el gid de grupo con el que nos
coenctaremos
8
9. Irontec – NFS y NIS
NFS
● Para montar un dispositivo nfs habrá que hacer uso
del comando mount
mount -t nfs 192.168.1.111:/var/log /mi/directorio/local
● El comando root debe ejecutarse como root
● Ahora en /mi/directorio/local tendría que ver el
contenido de la carpeta /var/log remota
● ¡Vamos a probadlo! Uno será servidor y otro cliente
9
10. Irontec – NFS y NIS
NFS
● Se debe compartir:
– /var/log con permisos de acceso total solo para tu
compañero. Los demas solamente lectura
● Se debe montar:
– El /var/log de tu compañero en tu /var/nuevolog
– Probad a escribir, mover, etc.
● Suerte! :D
10
11. Irontec – NFS y NIS
NFS
● Se puede configurar para que NFS se monte al
arrancar el sistema
● Para ello se debe configurar en /etc/fstab
● Gracias a esto podemos, por ejemplo, montar
nuestra home en un NAS remoto
11
12. Irontec – NFS y NIS
Optimizar la tranferencia NFS
● A la hora de montar disponemos de unos valores
que nos ayudaran a mejorar el rendimiento:
– Rsize: indica el tamaño en bytes de los bloques en la
lectura
– Wsize: indica el tamaño en bytes de los bloques en la
lectura
– Cache/nocache: habilita o deshabilita la cache
– Noatime: no actualiza la fecha de acceso
– Noacl: no hace uso de las acl
12
13. Irontec – NFS y NIS
Optimizar la tranferencia NFS
● Sin cambiar opciones:
dd if=/dev/zero of=/media/log/kk bs=16k count=16k
16384+0 records in
16384+0 records out
268435456 bytes (268 MB) copied, 41,9188 s, 6,4 MB/s
● Cambiando opciones (ejemplo):
$ mount 10.10.0.118:/var/log/ /media/log/ -o wsize=1024,noatime
¡Probad a mejorar los tiempos!
13
14. Irontec – NFS y NIS
Optimizar la transferencia NFS
● Más opciones:
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-nfs-client
man mount
man fstab
man nfs
man exports
14
15. Irontec – NFS y NIS
NIS
● Cada equipo tiene sus usuarios, su fichero host...
¡se puede compartir la información!
● Gracias al servicio NIS es posible que los usuarios y
hosts definidos en un servidor sean usables en
cualquier sistema que actue como cliente.
● NIS (network information server) fué un protocolo
creado por Sun Microsystems.
● Originalmente se llama YeloPages, de ahí que todos
los comandos de NIS empiezen por “yp”
15
16. Irontec – NFS y NIS
NIS
● Está ideado para redes Unix pequeñas donde la
configuración de un DNS y LDAP supone más un
problema que una solución por el trabajo que
conlleva
● Los elementos que compartiremos son:
– Usuarios
– Grupos
– Hosts
● Al igual que con NFS, es necesario una estructura
cliente/servidor
16
17. Irontec – NFS y NIS
NIS
● El paquete Debian que incluye Nis se llama.... “nis”,
por lo que habrá que instalarlo con apt-get
● Es importante tener en cuenta que NIS no hace uso
del Dns, por lo que en nuestro host debemos definir
nuestro nombre de dominio:
– 192.168.145.111 profesor.com
● Una vez que tengamos el dominio, debemos
definirlo en /etc/defaultdomain
● El dominio SI es sensible a mayúsculas/minúsculas.
No es lo mismo Profesor.com que profesor.com
17
18. Irontec – NFS y NIS
NIS
● Una vez que tenemos configurado el acceso será
necesario definir quien puede acceder a nuestros
servicios
● Se hace en el fichero /etc/default/nis
255.255.255.0 192.168.144.0
255.255.255.0 192.168.145.0
● Solo los equipos de esa red podrán trabajar como
clientes de nuestro servidor NIS
18
19. Irontec – NFS y NIS
NIS
● Resumiendo, hemos configurado:
– Defaultdomain
– Redes a las que permitimos acceso
● Ahora solamente queda configurar NIS para que
actue como servidor y no como cliente
● Dicho cambio se hace en /etc/default/nis
● Una vez hecho el cambio, inicializaremos nuestra
base de datos:
/usr/lib/yp/ypinit -m
19
20. Irontec – NFS y NIS
NIS
debian-servidor:~# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. debian-servidor is in the list of NIS server hosts. Please
continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: debian-servidor
next host to add: profesor.com
next host to add:
The current list of NIS servers looks like this:
debian-servidor
profesor.com
Is this correct? [y/n: y] y
20
21. Irontec – NFS y NIS
NIS
We need a few minutes to build the databases...
Building /var/yp/profesor.com/ypservers...
Running /var/yp/Makefile...
make[1]: se ingresa al directorio `/var/yp/profesor.com'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
[...]
make[1]: se sale del directorio `/var/yp/profesor.com'
debian-servidor has been set up as a NIS master server.
Now you can run ypinit -s debian-servidor on all slave server.
21
22. Irontec – NFS y NIS
NIS
● Cada vez que se añada un usuario o un host al
equipo se debe reconstruir la base de datos, para
que los nuevos elementos estén disponibles a todo
el mundo
● Estas bases de datos se guardan en:
– /var/yp
● La comunicación entre cliente y servidor se hace a
través del puerto 111 TCP (portmap) por lo que
deberá estar abierto y sin firewall de por medio
22
23. Irontec – NFS y NIS
NIS
● Es posible jugar con la seguridad del servidor,
definiendo que datos deseamos exportar a los
clientes y cuales no
● Dicha política se configura en:
– /etc/ypserv.conf
# Host : Domain : Map : Security
* : * : passwd.byname : port/mangle
23
24. Irontec – NFS y NIS
NIS
● host: dirección IP con comodines opcionales
● domain: nombre del dominio NIS para el que se
aplica la regla; un asterisco sirve como comodín.
● map: nombre del mapa al que se accede;
igualmente un asterisco sirve como comodín.
● security: tipo de seguridad aplicable
– none: donde siempre se permite el acceso
– port: sólo se permite el acceso si la petición se origina en un puerto
privilegiado (por debajo de 1024)
– deny: acceso denegado en cualquier caso
● A port y none es posible añadirle mangle[:field]
donde “field” es un campo que será sustituido por
una “x”. El valor por defecto es 2.
24
25. Irontec – NFS y NIS
NIS
● ¡Una vez configurado el servidor, queda configurar
los clientes!
● Por defecto la busqueda la hace mediante
broadcast, lo que en nuestro caso puede ser una
locura ya que tendremos varios servidores NIS
● Por lo tanto, indicaremos el servidor NIS a mano en
el fichero
– /etc/yp.conf
ypserver 192.168.144.111
● Reiniciamos el servicio Nis para aplicar los cambios.
25
26. Irontec – NFS y NIS
NIS
● Ahora será necesario configurar nuestros ficheros
passwd, shadow y groups para que admitan datos
del NIS:
– Passwd: +::::::
– Shadow: +::::::::
– Group: +:::
26
27. Irontec – NFS y NIS
NIS
● Ahora haremos uso de los comandos yp* para
comprobar que todo funciona:
– ypdomainname (averiguar nuestro dominio)
– ypwhich (averiguar nuestro servidor NIS)
– ypwich -m passwd (que servidor dispone el mapa
passwd)
– ypcat -x (ver todos los servicios que ofrece el servidor)
– ypcat passwd (ver las entradas del mapa passwd)
27
28. Irontec – NFS y NIS
NIS
● Tendriamos que poder ver los hosts y passwd del
servidor
● Probad a actualizar los datos en el servidor y que
estos sean visibles en el cliente
● Intentad hacer login con un usuario NIS
● Cambiad los roles, el servidor pasa a ser cliente y el
cliente servidor :)
28
29. Irontec – NFS y NIS
DHCP
● DHCP: Dynamic Host Configuration Protocol
● Nos permite autoconfigurar la interfaz de red de los
equipos
● El demonio que usaremos en Debian es dhcpd,
aunque existen más
● apt-get install dhcpd :)
● A parte de IP, Gateway y Máscara de red pueden
enviar más opciones al cliente
29
30. Irontec – NFS y NIS
DHCP
● Otras opciones disponibles:
– http://www.ietf.org/rfc/rfc2132.txt
● Las más importantes:
– Dirección DNS
– MTU (Unidad de transferencia máxima)
– Servidores NIS
– Servidores NTP
– Servidor TFT
– Servidor WINS
30
31. Irontec – NFS y NIS
DHCP
● Los manuales imprescindibles están en vuestro
propio equipo
– man dhcpd.conf
– man dhcp-options
● El fichero de configuración ya incluye unas opciones
de ejemplo que nos pueden ayudar a montar
nuestro servidor
31
33. Irontec – NFS y NIS
DHCP
● Si por alguna razón nos parecen pocas las
opciones, podemos definir nuestras propias
opciones:
– option sql-server-address code 193 = ip-address;
option sql-server-address 192.168.3.1;
– option libro code 195 = text;
option libro “the catcher in the rye”
● Lista de posibles valores:
– Ip-address: Una dirección IP
– Text: Una cadena de texto
– Boolean: On/Off
– Integer: 1536
– …
● El código puede ser un valor entre 128 y 254
33
34. Irontec – NFS y NIS
DHCP
● El tiempo de asignación de Ips se puede controlar
(aunque en la práctica, si no apagas el ordenador es
casi infinito)
– default-lease-time 600: la asignación de la IP al equipo
tendrá una duración de 600 segundos. El cliente dhcp
puede modificar este valor y pedir otro lease time
– Max-lease-time 7200: si el cliente pide otro lease time
diferente del default, como máximo podrá indicar el
valor aquí especificado
34
35. Irontec – NFS y NIS
DHCP
● El cliente de dhcp se configura en
/etc/dhcp3/dhcpclient.conf
● En el, entre otras cosas, podemos configurar que
options se reciben
● Los leases recibidos podemos consultarlos en
/var/lib/dhcp3
● Si por ejemplo tenemos nuestros propios DNS y no
queremos que el DHCP nos cambie el resolv.conf,
eliminariamos “domain-name-servers” de la lista de
options a pedir
35