En este documento veremos como instalar y configurar un servidor TFTP (Trivial File Transfer Protocol) el cual en nuestro caso será utilizado para proveer la imagen del firmware para algunos telefonos IP, este tipo de servidores también es usado como medio de respaldo y repositorio de configuraciónes de routes, switches y otros equpos de red que soportan TFTP, también es utilizado para proyectos como Linux Terminal Server Project (LTSP) para almacenar la imagen para sistemas tipo terminal tonta que soporta Arranque por red usando PXE.
Hay muchas versiones de aplicaciónes para servidores TFTP, en nuestro caso utilizaremos el servidor tftp HPA, y en Debian/Ubuntu lo instalaremos así:
Instalar el paquete:
# apt-get install tftpd-hpa
Despues de instalar el paquete debemos de configurar los parametros de arranque el demonio tftpd, el archivo de configuración /etc/default/tftpd-hpa tiene onfiguraciones globales para el arranque del demonio tftpd, entre ellas la orma como será inicializado, por default esta así:
# cat /etc/default/tftpd-hpa #Defaults for tftpd-hpa RUN_DAEMON="no" OPTIONS="-l -s /var/lib/tftpboot"
Lo cual dice que por default no será iniciado como un demonio standalone, esto es porque puede ser inicializado por el super demonio inetd o xinetd.
En nuestro caso lo configuraremos para que sea iniciado como demonio standalone, or lo que cambiaremos la variable RUN_DAEMON a yes, así:
RUN_DAEMON="yes"
Por default el demonio tftpd esta configurado con algunas opciones y un directorio de archivos predeterminado, a continuación se explican las opciones predeterminadas con las que será inicializado el demonio tfptd:
-l Correr el servidor en modo standalone, es decir, en modo de escucha, en lugar de correr desde inetd
-s Cambia el directorio raiz del servidor tftp al inicio. Esto significa que los hosts remotos no tendrán que pasar la ruta del directorio como parte de las transferencias.
En nuestra configuración el directorio /var/lib/tftpboot/ es nuestro directorio raíz y ahi es donde estarán almacenados los archivos que los clientes tftp escargarán, veamos los permisos de este directorio:
# ls -ld /var/lib/tftpboot drwxr-xr-x 2 root root 4096 2007-05-25 05:49 /var/lib/tftpboot
Por default el directorio pertenece al usuario y grupo root y otros no tienen permiso de escritura, solo acceso de lectura. Además el servidor tftp por default inicia en modo read only, es decir, solo permite que los archivos sean leidos pero no podrán subir archivos por tftp, si queremos que los clientes tftp puedan almacenar archivos en el directorio /var/lib/tftboot deberemos de configurar tftpd para que se puedan crear archivos en el directorio raiz de tftpd.
La opción -c permite que los clientes tftp puedan crear nuevos archivos.
Si por ejemplo, tenemos algunos telefonos, routers, switches u otro tipo de aparatos de red que pueden hacer respaldo de sus configuraciones en un servidor tftp, sería deseable que el servidor tftp permitierá la escritura de archivos.
Agregaremos la opción -c al archivo de config /etc/default/tftpd-hpa así:
#Defaults for tftpd-hpa RUN_DAEMON="yes" OPTIONS="-c -l -s /var/lib/tftpboot"
Además tendremos que poner permisos de escritura al directorio /var/lib/tfptboot así:
# chmod 777 /var/lib/tfptboot
Despues no queda más que iniciar/reiniciar el servidor tftpd-hpa, así:
# /etc/init.d/tftpd-hpa start Starting HPA's tftpd: in.tftpd.
Para confirmar que el proceso esta corriendo corremos:
# ps aux | grep tftpd root 9446 0.0 0.0 2200 308 ? Ss 12:58 0:00 /usr/sbin/in.tftpd -v -l -s /var/lib/tftpboot
Como vemos, el demonio in.tftpd esta corriendo con las opciones que especificamos en el archivo:
/etc/default/tfptd-hpa
Y para confirmar que el demonio tfptd abrio el puerto para conexiones, es decir, esta en modo listening, usamos netstat así:
# netstat -plun | grep tftp udp 0 0 0.0.0.0:69 0.0.0.0:* 9446/in.tftpd
Si tienes un un firewall que este filtrando las conexiones entrantes al sistema, entonces debes de abrir el puerto UDP/69.
Por default el servidor tftpd-hpa será iniciado al inicio del sistema, si queremos desactivar el servidor tftp para que solo sea iniciado manualmente ejecutamos el comando:
# update-rc.d -f tftpd-hpa remove Removing any system startup links for /etc/init.d/tftpd-hpa ... /etc/rc1.d/K20tftpd-hpa /etc/rc2.d/S20tftpd-hpa /etc/rc3.d/S20tftpd-hpa /etc/rc4.d/S20tftpd-hpa /etc/rc5.d/S20tftpd-hpa
Cuando un cliente tftp descarga un archivo del servidor tftp veremos algo así en los logs:
==> /var/log/daemon.log <== May 22 13:05:08 tftp in.tftpd[9547]: RRQ from 192.168.1.102 filename snom300.bin
==> /var/log/syslog <== May 22 13:05:08 tftp in.tftpd[9547]: RRQ from 192.168.1.102 filename snom300.bin
Espero que este articulo les sea de ayuda como lo fue para mi la segunda vez que tuve que levantar un servidor tftp.

Tuxjm es un sitio creado por Jorge Armando Medina (jmedina) para difundir el uso del Software Libre, aunque no soy un programador pero aun así quiero contribuir a la comunidad, estaré publicando documentos (howtos, tipos, articulos, etc) que espero sean de ayuda.
Para más información ver 

3 Usuarios Comentaron En Este Post
Suscribirse a Este Post Comment Rss Or TrackBack URL