Instalar y configurar servidor TFTP en Ubuntu

Es muy frecuente que los equipos de comunicaciones como los controladores WiFi, los switches de cierto nivel o los cortafuegos, soporten protocolo TFTP (no confundir con FTP) para poder subir configuraciones o hacer respaldos. Puesto que no es tan frecuente el uso de este FTP Trivial como se llama, os  traigo un manual de cómo poner a punto un servidor TFTP en tu equipo con Linux (más concretamente he usado para las pruebas Ubuntu 11.10).

Instalación de los paquetes

Para administrar el servicio usaremos xinetd, así que además de los paquetes propios de TFTP instalaremos a este (atentos al -y que asume que sí a todas las peticiones y no pregunta):

sudo apt-get install xinetd tftpd tftp -y

Configuración

Una vez instalado, creamos el fichero tftp dentro de /etc/xinetd.d/. Por ejemplo:

sudo vi /etc/xinetd.d/

Dentro del fichero indicamos:

service tftp
{
   protocol = udp
   port = 69
   socket_type = dgram
   wait = yes
   user = nobody
   server = /usr/sbin/in.tftpd
   server_args = var/lib/tftpboot -s
   disable = no
}

Como podéis ver, estamos estableciendo un directorio raíz para el servidor, en concreto, /var/lib/tftpboot por lo que deberemos crearlo y darle los permisos, usuarios y grupos oportunos:

sudo mkdir /var/lib/tftpboot
sudo chown -R nobody:nobody /var/lib/tftpboot
sudo chmo7 -R 777 /var/lib/tftpboot

Si os da error de grupo no existente, lo creamos:

sudo addgroup nobody

Reinicamos xinetd para que los cambios surtan efecto:

sudo service xinetd stop
sudo service xinetd start

Pruebas

Pasamos a la parte de las pruebas. Primero intentamos subir un fichero a nuestro servidor. La idea es la siguiente:

  • Tenemos un fichero: foto.jpg en nuestro escritorio
  • La subo al servidor
  • Debe aparecer la foto en el directorio que hemos creado

Los pasos a dar son los siguientes. Comenzamos por iniciar sesión con el cliente de consola en el servidor, paso seguido subimos el fichero y salimos:

tftp localhost
tftp> put foto.jpg
q

La idea es comprobar que el fichero se ha subido al directorio oportuno. Ahora para completar la prueba hacemos el proceso inverso:

cd cualquier_otro_directorio
tftp localhost
tftp> get foto.jpg

La foto debe estar en ese otro directorio.

Posibles problemas

Os comento algunos problemas que pueden apareceros:

  • Error code 2: Access violation
  • File not found

A priori con el tema de los permisos no deberían salir, pero si aún así, si tenéis problemas, vía comentarios de esta entrada podemos ir resolviéndolos.