Configuración de servidor TFTP para instalaciones de AlmaLinux

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

Este documento describe un procedimiento detallado para configurar un servidor TFTP (Trivial File Transfer Protocol) junto con servicios DHCP y HTTP, con el propósito de realizar instalaciones automatizadas de AlmaLinux 9 sobre red (PXE). Está diseñado como una guía paso a paso tipo manual de procedimientos estilo ISO9000, garantizando que los alumnos puedan replicar la configuración al primer intento. El entorno utiliza el esquema de direccionamiento IP 192.168.100.0/24, donde el servidor asume la dirección 192.168.100.2.

Acerca de TFTP

TFTP (Trivial File Transfer Protocol) es un protocolo de transferencia de archivos simple, similar a una versión muy básica de FTP. Resulta ideal para transferir archivos pequeños entre computadoras en una red de área local, como los necesarios para iniciar un sistema desde archivos compartidos por un servidor.

Normalmente se emplea sólo para iniciar estaciones de trabajo sin unidad de almacenamiento (diskless workstations). Dado que ofrece muy poca seguridad, se recomienda mantenerlo deshabilitado y sólo habilitarlo cuando realmente vaya a ser utilizado.

URL de la especificación RFC: https://tools.ietf.org/html/rfc1350

Procedimientos

Todos los procedimientos descritos en este documento se deben realizar como root o bien como usuario regular utilizando sudo.

Equipamiento lógico necesario

Ejecute lo siguiente en AlmaLinux, Rocky Linux o Red Hat™ Enterprise Linux:

dnf -y install tftp-server syslinux

Active e inicie el servicio tftp:

systemctl enable --now tftp

Para ALDOS (basado en SysVinit):

Ejecute lo siguiente:

yum -y install tftp-server xinetd syslinux

Active el servicio xinetd:

chkconfig xinetd on

Inicie el servicio xinetd:

service xinetd start

Finalmente, active el servicio tftp:

chkconfig tftp on

Instalación y configuración de servicio DHCP

Es imprescindible contar con un servicio DHCP para difundir la configuración de arranque por red (PXE) a los clientes. Puede elegir entre dos alternativas: el servidor DHCP de ISC (estándar) o DNSMasq (ligero y que combina DNS y DHCP).

Opción A: Utilizando el servidor DHCP de ISC

Este es el método estándar y recomendado para entornos de producción. Instale el paquete dhcp-server:

dnf -y install dhcp-server

Si utiliza ALDOS, ejecute lo siguiente:

yum -y install dhcp-server

Edite el archivo de configuración principal:

vim /etc/dhcp/dhcpd.conf

Añada el siguiente contenido, reemplazando los valores que correspondan a su red de área local. Asegúrese de que la directiva next-server apunte a la dirección IP de su servidor TFTP (en este ejemplo, 192.168.100.2):

ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org;

allow booting;
allow bootp;
class "pxeclients" {
        match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.100.2;
        filename "pxelinux.0";
        }

shared-network redlocal {
    subnet 192.168.100.0 netmask 255.255.255.0 {
        option routers 192.168.100.1;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.100.255;
        option domain-name-servers 192.168.100.2;
        option netbios-name-servers 192.168.100.2;
        range 192.168.100.10 192.168.100.240;
    }
}

Para AlmaLinux, Rocky Linux o RHEL, active e inicie el servicio:

systemctl enable --now dhcpd

Para ALDOS, utilice los mandatos de SysVinit:

chkconfig dhcpd on
service dhcpd start

Opción B: Utilizando DNSMasq (alternativa ligera)

DNSMasq es un servicio que combina DNS y DHCP, ofreciendo una alternativa más ligera y fácil de configurar. Consulte el manual completo de Configuración de DNSMasq para más detalles.

Instale el paquete:

dnf -y install dnsmasq

Si utiliza ALDOS, ejecute lo siguiente:

yum -y install dnsmasq

Cree un archivo de configuración específico para DHCP y TFTP:

vim /etc/dnsmasq.d/dhcp-tftp.conf

Añada el siguiente contenido. Asegúrese de reemplazar enp0s0 por el nombre real de su interfaz de red local y de que la IP del servidor (192.168.100.2) sea correcta:

# Opciones específicas de DHCP
interface=enp0s0
bind-interfaces
domain=red-local.net
dhcp-option=option:router,192.168.100.1
dhcp-option=option:dns-server,192.168.100.2
dhcp-option=option:ntp-server,0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org
dhcp-option=option:netmask,255.255.255.0
dhcp-range=192.168.100.3,192.168.100.254,12h

# Opciones específicas de TFTP
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=pxelinux.0
pxe-service=x86PC,"PXELINUX (BIOS)",bios/pxelinux
pxe-service=X86-64_EFI,"PXELINUX (EFI)",efi64/syslinux.efi

Para AlmaLinux, Rocky Linux o RHEL, active e inicie el servicio:

systemctl enable --now dnsmasq

Para ALDOS, utilice los mandatos de SysVinit:

chkconfig dnsmasq on
service dnsmasq start

Modificaciones necesarias en el muro cortafuegos

Es necesario permitir el tráfico de los servicios involucrados. Asumiendo que la zona de FirewallD correspondiente a su red de área local es home, ejecute los siguientes mandatos para abrir los puertos requeridos:

firewall-cmd --zone=home --add-service=tftp --permanent
firewall-cmd --zone=home --add-service=dhcp --permanent
firewall-cmd --zone=home --add-service=http --permanent
firewall-cmd --zone=home --add-service=https --permanent
firewall-cmd --reload

Configuración de directorios

Siga estos pasos de manera estricta para preparar los archivos de arranque y el repositorio de instalación.

  1. Cree el directorio que alojará los archivos de instalación de AlmaLinux:

    mkdir -p /var/www/almalinux9
  2. Descargue la imagen ISO de AlmaLinux 9 Minimal (aproximadamente 2.6 GiB) en el directorio de descargas del usuario:

    wget -P ~/Descargas https://repo.almalinux.org/almalinux/9/isos/x86_64/AlmaLinux-9-latest-x86_64-minimal.iso

    Nota: También puede utilizar la imagen ISO completa (~12 GiB), pero se recomienda la edición Minimal para optimizar el uso de recursos de red y realizar instalaciones más ligeras.

  3. Cree un punto de montaje temporal y monte la imagen ISO descargada:

    mkdir -p /mnt/almalinux9
    mount -o loop ~/Descargas/AlmaLinux-9-latest-x86_64-minimal.iso /mnt/almalinux9
  4. Copie todo el contenido de la ISO al directorio web creado:

    cp -a /mnt/almalinux9/* /var/www/almalinux9/
  5. Configure el servidor web para servir los archivos. Elija sólo una de las dos opciones siguientes:

    • Con Apache: Cree un archivo de configuración:

      vim /etc/httpd/conf.d/almalinux9.conf

      Añada esta directiva:

      Alias /almalinux9 /var/www/almalinux9

      Recargue la configuración:

      systemctl reload httpd

      Si utiliza ALDOS:

      service httpd reload
    • Con Nginx (recomendado por su eficiencia): Consulte también el manual de Configuración de Nginx. Cree un archivo de configuración:

      vim /etc/nginx/default.d/almalinux9.conf

      Añada esta directiva:

      location = /almalinux9 {
          root /var/www;
      }

      Recargue la configuración:

      systemctl reload nginx

      Si utiliza ALDOS:

      service nginx reload
  6. Prepare el directorio de TFTP. Primero, copie todos los archivos del cargador de arranque Syslinux:

    cp -r /usr/share/syslinux/* /var/lib/tftpboot/
  7. Cree un subdirectorio para los archivos específicos de AlmaLinux 9 y copie el núcleo (kernel) y la imagen inicial de RAM (initrd):

    mkdir -p /var/lib/tftpboot/almalinux9
    cp -a /mnt/almalinux9/isolinux/vmlinuz /var/lib/tftpboot/almalinux9/
    cp -a /mnt/almalinux9/isolinux/initrd.img /var/lib/tftpboot/almalinux9/
  8. Desmonte la imagen ISO:

    umount /mnt/almalinux9
  1. Configure el menú de arranque PXE. Cree el archivo de configuración por defecto:

    vim /var/lib/tftpboot/pxelinux.cfg/default

    Añada el siguiente contenido. Reemplace 192.168.100.2 por la dirección IP real de su servidor:

    default menu.c32
    prompt 0
    timeout 300
    ONTIMEOUT local
    menu title ########## PXE Boot Menu ##########
    label 1
    menu label ^1) Install AlmaLinux 9 x64 with Local Repo
    kernel almalinux9/vmlinuz
    append initrd=almalinux9/initrd.img method=http://192.168.100.2/almalinux9 devfs=nomount
  2. Reinicie el servicio TFTP para aplicar todos los cambios (en sistemas con systemd):

    systemctl restart tftp

    NOTA: En ALDOS, que utiliza xinetd, este paso es innecesario, ya que el servicio atiende las solicitudes bajo demanda.

Configuración de cliente

Para probar la configuración, proceda a configurar una máquina física o virtual para que inicie desde la red (PXE).

  1. En la programación en firme (firmware, BIOS/UEFI) o en la configuración de la máquina virtual (por ejemplo, VirtualBox), establezca el arranque por red (Network Boot) como la primera opción en el orden de arranque.

    Configuración inicio PXE en máquina virtual de VirtualBox.
    Configuración del inicio PXE en una máquina virtual de VirtualBox.

  2. Encienda la máquina cliente. Si la configuración es correcta, obtendrá una dirección IP del servidor DHCP y descargará el cargador de arranque PXE.

    Inicio de sistema utilizando PXE.
    Primeras etapas del inicio de sistema utilizando PXE.

  3. Finalmente, deberá cargarse el menú de arranque TFTP configurado, desde donde puede seleccionar la instalación de AlmaLinux 9.

    Menú de arranque PXE/TFTP.
    Menú de arranque proporcionado por el servidor TFTP.

Conclusión

Ha configurado exitosamente un servidor TFTP completo con soporte DHCP y un repositorio HTTP local para realizar instalaciones automatizadas de AlmaLinux 9 vía red PXE. Este entorno es ideal para laboratorios informáticos, despliegue rápido de máquinas virtuales o cualquier escenario que requiera la instalación repetible y eficiente de múltiples sistemas.

Para extender la funcionalidad, considere:

Por su naturaleza minimalista, TFTP prescinde de medidas de seguridad avanzadas. Se recomienda encarecidamente habilitar el servicio únicamente durante las ventanas de uso específico en entornos de producción, procediendo a deshabilitar éste inmediatamente después de utilizarlo con systemctl disable --now tftp o chkconfig tftp off.