Montar un servidor TFTP en CentOS 6
Los equipos de comunicaciones como switches, routers, balanceadores, etc. suelen utilizar para las operaciones básicas de mantenimiento: como hacer backups o realizar el upgrade del sistema operativo un servidor de TFTP.
Normalmente, suelo usar en mi equipo un cliente/servidor ligero de TFTP: TFTPD32 Se trata de una herramienta que se ha convertido en un MUST para mi trabajo.
Pero si lo que quieres es tener un sistema centralizado, donde todos los equipos que administras dejen de forma periódica sus backups, esta aplicación no te servirá y lo que necesitas es tener un servidor TFTP montado en tu red para esta finalidad.
Por eso os voy a explicar los sencillos pasos a seguir para montar un servidor TFTP en CentOS 6, aunque es perfectamente válido sobre cualquier otra versión o distribución (adaptando sólo los comandos propios de la distribución para manejar la paquetería).
Pasos para instalar el Servidor TFTP en CentOS 6
1. Lo primero que haremos será instalar el servicio: tftp-server
[root@elblogtic]# yum install tftp-server Complementos cargados:rhnplugin, security, ulninfo, versionlock Configurando el proceso de instalación Resolviendo dependencias --> Ejecutando prueba de transacción ---> Package tftp-server.x86_64 0:0.49-8.el6 will be instalado --> Resolución de dependencias finalizada Dependencias resueltas ================================================================================================================================================================================================= Paquete Arquitectura Versión Repositorio Tamaño ================================================================================================================================================================================================= Instalando: tftp-server x86_64 0.49-8.el6 ol6_x86_64_latest 39 k Resumen de la transacción ================================================================================================================================================================================================= Instalar 1 Paquete(s) Tamaño total de la descarga: 39 k Tamaño instalado: 57 k Está de acuerdo [s/N]:s Descargando paquetes: tftp-server-0.49-8.el6.x86_64.rpm | 39 kB 00:00 Ejecutando el rpm_check_debug Ejecutando prueba de transacción La prueba de transacción ha sido exitosa Ejecutando transacción Instalando : tftp-server-0.49-8.el6.x86_64 1/1 Verifying : tftp-server-0.49-8.el6.x86_64 1/1 Instalado: tftp-server.x86_64 0:0.49-8.el6 ¡Listo!
2. Crearemos un usuario tftp en el sistema, con el que el servicio correrá.
[root@elblogtic]# adduser tftp
3. Cambiaremos el propietario de la carpeta donde se almacenarán todos los ficheros transferidos por TFTP, que por defecto es de root.
[root@elblogtic]# chown tftp:tftp /var/lib/tftpboot/
4. El servicio TFTP no es un daemon y utiliza los servicios XINETD para poder serlo. La configuración del servicio TFTP se encuentra por tanto en: /etc/xinetd.d/tftp. La editaremos con vi y cambiaremos las siguientes líneas:
server_args = -s /var/lib/tftpboot disable = yes por server_args = -c -p -u tftp -U 117 -s /var/lib/tftpboot disable = no
5. Nos aseguramos que el servicio xinetd arranque con el inicio de la máquina, y reiniciamos para que coja los nuevos cambios
[root@elblogtic]# chkconfig xinetd on [root@elblogtic]# /etc/init.d/xinetd restart Parando xinetd: [ OK ] Iniciando xinetd: [ OK ]
6. Comprobamos que el puerto UDP/69 está levantado y escuchando
[root@elblogtic]# netstat -putan | grep xinet tcp 0 0 :::6557 :::* LISTEN 26006/xinetd udp 0 0 0.0.0.0:69 0.0.0.0:* 26006/xinetd
En este punto, tenemos que tener en cuenta si hay IPTABLES levantado en la máquina. Si lo tenemos, hay que añadir una regla para permitir el acceso al puerto UDP/69 del servidor. Del mismo modo, nos aseguraremos que el servicio SELINUX no nos bloquee la escritura en el directorio. Yo personalmente no soy muy partidario de este servicio y lo suelo deshabilitar.
Pruebas con cliente TFTP
Para ver si lo hemos configurado bien, podemos probar con el cliente/servidor que he comentado al principio del post (TFTPD32), lo ejecutaremos y en la pestaña client ponemos los datos de conexión, seleccionamos un fichero local y pulsaremos PUT para ver si sube el fichero a nuestro TFTP:
Si ha ido bien, podemos comprobar que en el directorio /var/lib/tftpboot tenemos el fichero que acabamos de subir:
[root@elblogtic]# ls -l total 112 -rw-rw---- 1 tftp tftp 110698 ene 4 11:01 config.cfg
Ya podemos empezar a configurar nuestros equipos para que envíen a nuestro servidor TFTP sus backups o poner las imágenes de firmware en el TFTP para hacer upgrade de nuestros equipos.
Buenas, acabo de seguir tu guía y me gustaría saber que son los argumentos que aplicas en la configuración.
Algunos me imagino son pero no todos “-c -p -U 117”, el -u imagino que es el usuario aun que ya en el fichero se declara en otro campo que usuario se usará. Por tanto no veo necesario declararlo como argumento. El -U 117 creo que es para usar el umask. Pero el resto lo desconozco, gracias!
Hola Hugo,
gracias por pasarte y comentar. Te explico a continuación.
-c: Significa “create”. Por defecto el TFTPd sólo permite descargar, si quieres permitir subir ficheros (y por tanto escribirlos en el servidor) hay que pasar el argumento -c
-p: Significa “permissive”. Con esta opción, le indicamos al daemon que no haga ningún tipo de control de permisos del usuario (más allá de los que hace el sistema operativo).
-U: Significa “Umask”. Setea el umask de los nuevos ficheros creados por el servidor.
-u: Significa “user”. Es el usuario con el que escribirá el fichero subido en el sistema operativo. En el ejemplo que he puesto, sería el usuario tftp.
-s: Significa “secure”. Sirve para limitar la escritura al directorio que se indica (/var/lib/tftpd). Viene a ser un equivalente a un chroot en ese directorio. Los usuarios que suban ficheros no pueden escribir fuera de ese directorio.
Espero haberte aclarado las dudas.
Saludos !
Thank you!!1