NFS / NIS / DHCP
Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux
Irontec – NFS y NIS
2
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.
Irontec – NFS y NIS
3
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/
Irontec – NFS y NIS
4
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
Irontec – NFS y NIS
5
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.
Irontec – NFS y NIS
6
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
Irontec – NFS y NIS
7
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–
Irontec – NFS y NIS
8
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
Irontec – NFS y NIS
9
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
Irontec – NFS y NIS
10
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
Irontec – NFS y NIS
11
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
Irontec – NFS y NIS
12
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
Irontec – NFS y NIS
13
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!
Irontec – NFS y NIS
14
Optimizar la transferencia NFS
● Más opciones:
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-nfs-client-config.html
man mount
man fstab
man nfs
man exports
Irontec – NFS y NIS
15
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”
Irontec – NFS y NIS
16
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
Irontec – NFS y NIS
17
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
Irontec – NFS y NIS
18
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
Irontec – NFS y NIS
19
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
Irontec – NFS y NIS
20
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
Irontec – NFS y NIS
21
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.
Irontec – NFS y NIS
22
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
Irontec – NFS y NIS
23
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
Irontec – NFS y NIS
24
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.
Irontec – NFS y NIS
25
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.confypserver 192.168.144.111
● Reiniciamos el servicio Nis para aplicar los cambios.
Irontec – NFS y NIS
26
NIS
● Ahora será necesario configurar nuestros ficheros passwd, shadow y groups para que admitan datos del NIS:
– Passwd: +::::::– Shadow: +::::::::– Group: +:::
Irontec – NFS y NIS
27
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)
Irontec – NFS y NIS
28
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 :)
Irontec – NFS y NIS
29
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
Irontec – NFS y NIS
30
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
Irontec – NFS y NIS
31
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
Irontec – NFS y NIS
32
DHCP
● Ejemplo DHCP:subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.50; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option domain-name-servers 192.168.1.2; option ntp-servers 192.168.1.2; option domain-name irontec.com; option lpr-servers 192.168.1.3; option static-routes 10.10.0.31 10.10.0.1}
Irontec – NFS y NIS
33
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
Irontec – NFS y NIS
34
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
Irontec – NFS y NIS
35
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