Configuración de un servidor de arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0
- DESCRIPCIÓN
Configure un servidor de arranque PXE compatible con arranque seguro UEFI y el instalador Agama.
- INTENCIÓN
Automatizar y agilizar la instalación de varios sistemas SUSE Linux Enterprise Server for SAP applications 16.0 a través de la red.
- ESFUERZO
Los administradores de sistemas o redes suelen tardar de 30 a 45 minutos en leer y comprender este artículo.
- OBJETIVO
Conseguir un servidor PXE operativo que pueda arrancar varias arquitecturas en el instalador Agama.
- REQUISITOS
Un sistema SUSE Linux Enterprise Server for SAP applications 16.0 con privilegios de administrador
Conexión a Internet para obtener las imágenes ISO
Una configuración de IP estática para el servidor PXE
1 Descripción general del arranque PXE con SUSE Linux Enterprise Server for SAP applications 16.0 #
El arranque PXE permite que los equipos arranquen a través de la red en un entorno de instalación o ejecución sin almacenamiento local. En esta sección se explica cómo funciona PXE en SUSE Linux Enterprise Server for SAP applications 16.0 con imágenes de Agama y del instalador en directo, centrándose en GRUB 2.
1.1 ¿Qué es el arranque PXE? #
PXE (entorno de ejecución de prearranque) es un método que permite a los sistemas recuperar cargadores de arranque e instaladores de SO desde un servidor de red utilizando DHCP y TFTP o HTTP. Es ampliamente utilizado para el aprovisionamiento de equipos sin medios físicos ni sistemas operativos preinstalados.
1.2 Ventajas del arranque PXE #
El arranque PXE simplifica el aprovisionamiento al eliminar la necesidad de medios de instalación locales o configuración manual. Permite lo siguiente:
Instalar sin asistencia muchos sistemas a través de la red
Gestionar de forma centralizada versiones del instalador y configuraciones de arranque
Ofrecer compatibilidad para diversas arquitecturas y tipos de firmware, incluido el arranque seguro UEFI
Seleccionar de forma dinámica instaladores o parámetros de instalación mediante los menús de GRUB 2
1.3 Cómo funciona el arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0 #
El arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0 utiliza GRUB 2 como cargador de arranque y el instalador Agama como interfaz de instalación. Los cargadores de arranque y los archivos de instalador se proporcionan a través de la red mediante HTTP o TFTP. GRUB 2 se encarga de recuperar el kernel, initrd y la imagen en directo. Los clientes PXE pueden utilizar distinto firmware (incluyendo los más comunes como BIOS o UEFI), ejecutables de cargador de arranque o formatos de imagen, según lo requieran sus arquitecturas, por ejemplo AMD64/Intel 64, AArch64, ppc64le y s390x. Además, deben funcionar tanto en redes IPv4 como IPv6.
El cargador de arranque pasa parámetros del kernel como root=live: para cargar el sistema de archivos raíz basado en squashfs desde una imagen ISO en directo, iniciando la interfaz Agama ya sea localmente o como un servicio Web para una interfaz de usuario Web remota.
1.3.1 Retrocompatibilidad con SLES for SAP 15.x #
La información de este artículo se aplica principalmente a SUSE Linux Enterprise Server for SAP applications 16.0 y versiones posteriores. Se centra en los flujos de trabajo de arranque PXE que se integran con el instalador Agama y se basan en imágenes de instalación en directo. En el contexto y alcance de este artículo, SLES for SAP 16.0 y versiones posteriores difieren de SLES for SAP 15.x en los siguientes aspectos:
- Instalador
Usa
dracuty Agama en lugar delinuxrcy YaST.- Servidor DHCP
Ya no se usa ISC DHCP (final de vida en 2022). Para un servidor DHCP, use Kea o dnsmasq en su lugar.
- Parámetros de arranque
Usa el parámetro
root=live:para cargar la imagen del instalador Agama y el parámetroinst.install_url=opcional para el repositorio de instalación no predeterminado, en lugar del parámetroinstall=.
La elección del cargador de arranque (GRUB 2, pxelinux, etc.) sigue siendo flexible y no depende de la versión.
1.3.2 Diferentes configuraciones y pasos posibles #
Este artículo consta de pasos de configuración obligatorios y configuraciones opcionales o alternativas. Siga solo las secciones relevantes para su despliegue y omita cualquier alternativa que no sea aplicable.
- Obligatorio
Tareas como instalar componentes, preparar la imagen del instalador, configurar GRUB 2 y validar el servidor deben completarse en todas las configuraciones.
- Método de entrega de archivos
Un servidor HTTP (recomendado con Agama) como
nginx, o un servidor TFTP comotftpodnsmasq.- Servidor DHCP
Elija Kea o dnsmasq.
Nota: limitaciones y características del método elegidoUse Kea, el nuevo servidor DHCP de ISC, para sustituir a ISC DHCP con una opción más moderna. Para obtener más información acerca de Kea, consulte https://www.isc.org/kea/. Para el aviso de final de vida de ISC DHCP, consulte https://www.isc.org/dhcp/. Kea es un servidor DHCP y requiere software de servidor TFTP separado. El servidor DHCP Kea admite opciones para el arranque TFTP/PXE a través de IPv4 e IPv6, así como para el arranque HTTP a través de IPv4. El arranque HTTP a través de IPv6 requiere que el servidor DHCPv6 pueda enviar la
Vendor Class Option(consulteRFC3315, Section 22.16), que, supuestamente, “un cliente usará para identificar al proveedor” de vuelta al cliente, pero actualmente no se admite.dnsmasq es una combinación de un servidor DNS, un servidor DHCP y un servidor TFTP. Puede usarlo para proporcionar el cargador de arranque, el kernel, initrd (y otros archivos) a través de TFTP. Para obtener más información sobre dnsmasq, consulte https://thekelleys.org.uk/dnsmasq/doc.html. El servidor DHCP dnsmasq admite opciones para el arranque TFTP/PXE a través de IPv4 e IPv6, así como para el arranque HTTP a través de IPv4. El arranque HTTP a través de IPv6 requiere que el servidor DHCPv6 pueda enviar la
Vendor Class Option(consulteRFC3315, Section 22.16), que, supuestamente, “un cliente usará para identificar al proveedor” de vuelta al cliente, pero actualmente no se admite.
2 Preparación de la red para los servicios de arranque PXE #
En esta sección se describen los requisitos de la infraestructura de red para desplegar servicios de arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0.
2.1 Introducción #
Un servidor PXE consta de tres servidores: un servidor DHCP que proporciona la dirección y la ubicación del archivo de arranque (cargador de arranque) y un servidor TFTP y un servidor HTTP para recuperar los archivos. Además, puede haber un servidor DNS, un servidor NTP y un router que admita IPv6; por lo general, están separados del servidor PXE en una red de producción. Un servidor PXE que ejecute SUSE Linux Enterprise Server for SAP applications 16.0 también puede necesitar una configuración de interfaz de red específica, ciertas reglas persistentes añadidas al firewall y algunos permisos en SELinux. Esta sección muestra una red de ejemplo con intervalos de IP adecuados y las reglas necesarias para el firewall y SELinux.
2.2 Suposiciones y configuración de red de muestra #
En este artículo, se presupone lo siguiente:
El servidor PXE se ejecuta en la interfaz de red
eno1con la siguiente configuración de red:Tabla 1: Configuración de red PXE de ejemplo #IPv4 IPv6 Nombre DNS Red PXE 192.168.1.0/24 2001:db8:0:1::/64 example.net Servidor PXE 192.168.1.200 2001:db8:0:1::200 pxe.example.net Gateway PXE 192.168.1.1 2001:db8:0:1::1 Servidor DNS 192.168.1.200 2001:db8:0:1::200 Servidor NTP 192.168.1.1 2001:db8:0:1::1 De forma predeterminada, los servidores de router, NTP y DNS son externos y se ejecutan en otro equipo. Este artículo proporciona algunas sugerencias, pero no cubre su configuración completa.
2.3 Configuración de la interfaz de red, el firewall y SELinux para servicios PXE #
Configure la interfaz de red y el firewall para permitir los servicios de red requeridos por el servidor PXE. Ajuste la configuración de SELinux para habilitar las pruebas de instalación y definir políticas locales persistentes.
Compruebe y asigne la interfaz de red PXE a la zona protegida por firewall apropiada.
Compruebe las zonas activas actualmente y sus interfaces asignadas:
>sudofirewall-cmd --get-active-zonesSi no se asigna
eno1a la zonapublic, asígnela:>sudofirewall-cmd --zone=public --change-interface=eno1Haga que la asignación de interfaz sea persistente entre rearranques:
>sudofirewall-cmd --permanent --zone=public --add-interface=eno1
Configure el firewall para el acceso al servicio DNS.
Permita el servicio DNS para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=dnsHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=dns
Configure el firewall para el acceso al servicio NTP.
Permita el servicio NTP para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=ntpHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=ntp
Configure el firewall para el acceso al servicio DHCP (IPv4).
Permita el servicio DHCP para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=dhcpHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=dhcp
Configure el firewall para el acceso al servicio DHCPv6.
Permita el servicio DHCPv6 para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=dhcpv6Haga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=dhcpv6
Configure el firewall para el acceso al servicio TFTP.
Permita el servicio TFTP para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=tftpHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=tftp
Configure el firewall para el acceso al servicio HTTP.
Permita el servicio HTTP para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=httpHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=http
Configure el firewall para el acceso al servicio HTTPS.
Permita el servicio HTTPS para la sesión actual:
>sudofirewall-cmd --zone=public --add-service=httpsHaga que los cambios sean persistentes:
>sudofirewall-cmd --permanent --zone=public --add-service=https
Inhabilite temporalmente
SELinuxpara probar la configuración.Establezca
SELinuxen modo permisivo:>sudosetenforce 0Compruebe el estado de
SELinux:>sudosestatus
Genere e instale módulos de directivas de
SELinuxlocales para los servicios relacionados con PXE.Cree e instale un módulo para
nginx:>sudoif test `ausearch -c 'nginx' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'nginx' --raw | audit2allow -a -M local-nginx>sudosemodule -i local-nginx.pp>sudofiCree e instale un módulo para
dnsmasq:>sudoif test `ausearch -c 'dnsmasq' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'dnsmasq' --raw | audit2allow -a -M local-dnsmasq>sudosemodule -i local-dnsmasq.pp>sudofiCree e instale un módulo para
in.tftpd:>sudoif test `ausearch -c 'in.tftpd' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'in.tftpd' --raw | audit2allow -a -M local-tftpd>sudosemodule -i local-tftpd.pp>sudofi
Vuelva a habilitar el modo de aplicación de
SELinux.Establezca
SELinuxen el modo de aplicación:>sudosetenforce 1Verifique el estado de
SELinux:>sudosestatus
2.4 Resumen #
Este procedimiento garantiza que la interfaz de red, el firewall y la directiva de SELinux del servidor PXE estén correctamente configurados para un funcionamiento seguro y funcional.
Se verifica y se asigna la interfaz que proporciona PXE (
eno1en este ejemplo) a la zonapublicprotegida por el firewall.Se abren los servicios de firewall necesarios para el funcionamiento de PXE, incluidos
dns,ntp,dhcp,dhcpv6,tftp,httpyhttps.Se establece temporalmente
SELinuxen modopermissivepara facilitar las pruebas de servicio y registrar denegaciones de acceso AVC.Se usan
ausearchyaudit2allowpara generar e instalar módulos de directivas de SELinux personalizados para servicios comonginx,dnsmasqyin.tftpd.Se restablece el modo
SELinuxaenforcingpara proteger el sistema para su uso en producción.
Una vez completados estos pasos, el servidor PXE está configurado de forma segura y listo para proveer equipos cliente a través de la red utilizando IPv4 o IPv6.
3 Instalación de los componentes necesarios del servidor PXE #
En esta sección se explica cómo instalar los paquetes necesarios para permitir el arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0, incluidos los componentes GRUB 2, DHCP, TFTP o HTTP.
3.1 Introducción #
Para configurar un servidor de arranque PXE en SUSE Linux Enterprise Server for SAP applications 16.0, debe instalar varios servicios y herramientas. Dependiendo de su configuración, es posible que necesite lo siguiente:
El paquete dnsmasq proporciona una combinación de un servidor DNS, un servidor TFTP y un servidor DHCP (DHCPv4 y DHCPv6) con compatibilidad limitada para anuncios de router IPv6. Incluye lo siguiente:
Servidor DHCP dnsmasq: admite la entrega condicional de opciones DHCP dependiendo de la solicitud y la arquitectura del cliente para:
Solicitudes de arranque PXE con DHCPv4 y DHCPv6
Solicitudes de arranque HTTP con DHCPv4
Nota: limitaciones de dnsmasq para el arranque HTTP a través de DHCPv6Actualmente, dnsmasq no admite el envío de la opción DHCPv6
vendor-classrequerida.
Servidor TFTP dnsmasq: entrega archivos de cargador de arranque, de kernel e initrd a través de TFTP durante el arranque PXE.
Servidor DNS dnsmasq: proporciona resolución recursiva de nombres de dominio y direcciones IP para firmware y
/etc/resolv.confde cliente en el instalador/sistema operativo.Anuncios de router IPv6 dnsmasq: admite el envío de anuncios de router IPv6 cuando el servidor PXE también actúa como router (configurabilidad limitada a un “patrón común de anuncios de router”).
El paquete kea es un servidor DHCP y un sucesor del servidor ISC DHCP. Admite la entrega condicional de opciones DHCP dependiendo de la solicitud y la arquitectura del cliente para:
Solicitudes de arranque PXE con DHCPv4 y DHCPv6
Solicitudes de arranque HTTP con DHCPv4
Nota: limitaciones de Kea para el arranque HTTP a través de DHCPv6Actualmente, Kea no admite el envío de la opción DHCPv6
vendor-classrequerida. Para obtener más información, consulte https://kea.readthedocs.io/en/latest/arm/dhcp6-srv.html#id4.
Un servidor TFTP entrega los archivos del cargador de arranque, el kernel e initrd a través de TFTP, mientras que el arranque PXE con Kea es proporcionado por el paquete tftp y no es necesario para el arranque HTTP. Si está usando dnsmasq, no necesita el paquete tftp.
Un servidor Web como el paquete nginx para proporcionar imágenes del instalador a través de HTTP.
Nota: necesidad de servidores HTTPCasi siempre se requiere un servidor HTTP/HTTPS como nginx. Su uso va más allá del arranque HTTP. En particular, puede necesitarlo en las siguientes situaciones:
Es un requisito básico para el arranque HTTP.
Se recomienda para proporcionar
squashfs.img. Puede usarroot=live:tftp://.../squashfs.imgen la línea de comandos de arranque.También se recomienda para proporcionar los RPM a Agama en el parámetro de línea de comandos de arranque
inst.install_url=http://.../install/en una imagenSLES-16.0-Full-*.inline.iso, junto con perfiles de instalación y otros archivos para la instalación sin supervisión.
Los paquetes del cargador de arranque GRUB 2 proporcionan arranque en red para las arquitecturas y los métodos compatibles. Por ejemplo, la arquitectura AMD64/Intel 64 ofrece dos métodos para el arranque en red: BIOS y UEFI. Además, UEFI generalmente admite PXE (TFTP) y arranque HTTP. Otros cargadores de arranque, como pxelinux, no admiten UEFI ni el arranque HTTP.
Opcionalmente, un daemon de anuncios de router para IPv6, como el paquete radvd. Se requiere en SLES for SAP si también actúa como router para una red de instaladores a fin de realizar lo siguiente:
Configurar el enrutamiento en una red para clientes de arranque PXE o HTTP.
Habilitar el uso de DHCPv6 en una red para clientes de arranque PXE o HTTP.
3.2 Requisitos #
Un sistema que ejecute SUSE Linux Enterprise Server for SAP applications 16.0 con privilegios administrativos, registrado en el Centro de servicios al cliente de SUSE y configurado con acceso a los repositorios en línea apropiados mediante SUSEConnect.
Módulos de SLE habilitados: módulo de aplicaciones de servidor, módulo heredado y módulo del sistema base.
Acceso a los repositorios del módulo de SLE para servicios de red y cargadores de arranque.
Conexión a Internet funcional para obtener las imágenes ISO.
3.3 Instalación de los paquetes #
Siga estos pasos para instalar los paquetes principales necesarios para el servidor de arranque PXE.
Instale el cargador de arranque GRUB 2 y el servidor HTTP nginx como requisitos comunes.
>sudozypper install grub2 nginxEjecute cualquiera de los siguientes comandos para instalar los paquetes esenciales según su enfoque:
kea para el servidor DHCP o tftp para el servidor TFTP
>sudozypper install kea tftpdnsmasq como proveedor común de servidores DHCP, DNS y TFTP
>sudozypper install dnsmasq
Nota: limitaciones de los servidores DHCP proporcionados por Kea y dnsmasqEl arranque HTTP a través de IPv6 no es compatible actualmente con servidores DHCP proporcionados por los paquetes kea y dnsmasq. No admite el envío de una opción
vendor-classal cliente HTTP, como requiere la especificación UEFI.Opcionalmente, puede instalar destinos de GRUB 2 específicos para arquitectura adicionales si planea admitir otras plataformas.
Para la arquitectura AMD64/Intel 64:
>sudozypper install grub2-x86_64-efi grub2-i386-pcPara la arquitectura AArch64:
>sudozypper install grub2-aarch64-efiPara la arquitectura ppc64le:
>sudozypper install grub2-ppc64le-ieee1275
Nota: cómo entrega el servidor PXE paquetes de GRUB 2 a clientes que tienen una arquitectura distinta a la del equipo del servidorLos paquetes noarch.rpm específicos de cada arquitectura de GRUB 2 se incluyen en el subdirectorio
noarchdel medio o repositorio de instalación, independientemente de la arquitectura del equipo en el que se configure el servidor PXE. Es decir, puede instalar paquetes grub2-arm64-efi y grub2-powerpc-ieee1275 en un servidor PXE que se ejecute en un equipo AMD64/Intel 64 para admitir clientes con otras arquitecturas.Opcionalmente, puede instalar el paquete shim si necesita arranque seguro UEFI para AMD64/Intel 64 o AArch64, pero no desea utilizar los archivos de la ISO del medio de instalación.
>sudozypper install shimOpcionalmente, puede instalar el daemon de anuncios de router radvd si desea usar el servidor PXE como router (no se recomienda para redes de producción).
>sudozypper install radvdInstale la utilidad rsync para copiar o sincronizar cómodamente la imagen ISO y el árbol de directorios.
>sudozypper install rsyncAsegúrese de que los servicios están instalados pero aún no se han iniciado. La configuración se tratará en secciones posteriores.
4 Creación de directorios NetBoot de GRUB 2 para el servidor PXE #
Esta sección explica cómo crear directorios NetBoot de GRUB 2 para servidores PXE mediante grub2-mknetdir, lo que genera directorios específicos de cada arquitectura para sistemas AMD64/Intel 64 (UEFI y BIOS), AArch64 y ppc64le. Para la compatibilidad con el arranque seguro UEFI, los administradores deben copiar los archivos EFI firmados de los medios de instalación o utilizar el paquete shim para sustituir los archivos por defecto del cargador de arranque sin firmar.
4.1 Introducción #
En esta sección se describe cómo configurar directorios NetBoot de GRUB 2 para desplegar servidores PXE en varias arquitecturas. El comando grub2-mknetdir crea directorios específicos de arquitectura en /srv/tftpboot/boot/grub2/ para diferentes plataformas. Por ejemplo, los sistemas AMD64/Intel 64 generan directorios UEFI (x86_64-efi) y BIOS heredados (i386-pc), mientras que los sistemas AArch64 y ppc64le crean sus respectivos directorios UEFI (arm64-efi y powerpc-ieee1275).
Para la compatibilidad con el arranque seguro UEFI, que los archivos core.efi no firmados predeterminados no proporcionan, los administradores pueden copiar archivos EFI firmados desde los medios de instalación o instalar el paquete shim y copiar manualmente los archivos del cargador de arranque necesarios (shim.efi, grub.efi y MokManager.efi) en los directorios de la arquitectura apropiada, lo que asegura una resolución de enlace simbólico adecuada para mantener todos los archivos dentro del sistema de archivos raíz TFTP.
4.2 Requisitos #
Asegúrese de haber instalado los siguientes paquetes: grub2, tftp y cualquier otro paquete de GRUB 2 específico de la arquitectura, como grub2-x86_64-efi y grub2-i386-pc.
Asegúrese de tener disponible el medio de instalación (ISO) para el montaje o el paquete shim instalado en el sistema. Puede descargar los medios de instalación (ISO) para su arquitectura de destino desde el Centro de servicios al cliente de SUSE.
4.3 Preparación de directorios NetBoot y el arranque seguro UEFI #
Este procedimiento crea la estructura de directorios de GRUB 2 necesaria para el arranque de red PXE y, opcionalmente, configura la compatibilidad con el arranque seguro UEFI en varias arquitecturas.
Cree una estructura de directorios NetBoot de GRUB 2.
>sudogrub2-mknetdir --net-directory=/srv/tftpboot --subdir=/boot/grub2Esto crea directorios específicos para cada arquitectura:
AMD64/Intel 64:
/srv/tftpboot/boot/grub2/x86_64-efiy/srv/tftpboot/boot/grub2/i386-pcAArch64:
/srv/tftpboot/boot/grub2/arm64-efippc64le:
/srv/tftpboot/boot/grub2/powerpc-ieee1275
AvisoNo sobrescriba manualmente el archivo
grub.cfgcreado porgrub2-mknetdir.Copie al servidor TFTP otros directorios independientes de la arquitectura, como
fonts/ylocale/, que están disponibles en el directorio/srv/tftpboot/boot/grub2/.También puede usar el archivo
/srv/tftpboot/boot/grub2/ARCH-efi/core.efiinstalado por el comandogrub2-mknetdirpara arquitecturas AMD64/Intel 64 o AArch64 para PXE UEFI. Sin embargo, no están firmados y no admiten el arranque seguro UEFI. Para habilitar opcionalmente el arranque seguro UEFI para las arquitecturas compatibles AMD64/Intel 64 y AArch64, realice cualquiera de los siguientes pasos:Copie los archivos necesarios del medio de instalación ISO:
Monte la imagen ISO:
>sudomount -o loop /PATH/TO/SLES.ISO /mntCopie los archivos EFI.
>sudocp -v /mnt/EFI/BOOT/*.efi /srv/tftpboot/boot/grub2/ARCH-efi/1Sustituya
ARCH-efiporx86_64-efioarm64-efi: las arquitecturas compatibles con el arranque seguro UEFI.Desmonte el medio de instalación ISO.
>sudoumount /mnt
Use el paquete shim si no desea utilizar los archivos del medio de instalación ISO:
Si aún no está instalado, instale el paquete shim.
>sudozypper install shimCopie los archivos del cargador de arranque firmados para la arquitectura necesaria:
Copie el archivo
shim.efi.Para la arquitectura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/shim.efi /srv/tftpboot/boot/grub2/x86_64-efi/bootx64.efiPara la arquitectura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/shim.efi /srv/tftpboot/boot/grub2/arm64-efi/bootaa64.efi
Copie el archivo
grub.efi.Para la arquitectura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/grub.efi /srv/tftpboot/boot/grub2/x86_64-efi/Para la arquitectura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/grub.efi /srv/tftpboot/boot/grub2/arm64-efi/
Copie el archivo
MokManager.efi.Para la arquitectura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/MokManager.efi /srv/tftpboot/boot/grub2/x86_64-efi/Para la arquitectura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/MokManager.efi /srv/tftpboot/boot/grub2/arm64-efi/
NotaEl indicador
-Lresuelve los enlaces simbólicos para garantizar que los archivos permanezcan dentro de la raíz TFTP.
5 Preparación del contenido de la imagen del instalador #
En esta sección se describe cómo extraer y organizar los archivos de instalador de los medios de instalación de SUSE Linux Enterprise Server for SAP applications 16.0 para entornos de arranque PXE. Cubre tanto imágenes .install.iso como paquetes RPM, con instrucciones específicas para diferentes arquitecturas y tipos de instalación.
5.1 Introducción #
SUSE Linux Enterprise Server for SAP applications 16.0 proporciona archivos de instalador en múltiples formatos para admitir diferentes escenarios de arranque PXE. El instalador Agama requiere tres archivos esenciales: la imagen del kernel (linux), el disco RAM inicial (initrd) y el sistema de archivos raíz comprimido (squashfs.img). Estos archivos deben extraerse del medio de instalación y organizarse en una estructura de directorios a la que se pueda acceder a través de TFTP y HTTP.
Esta sección cubre los métodos de preparación tanto para imágenes .install.iso como para paquetes RPM, lo que asegura la compatibilidad con varias arquitecturas y tipos de instalación compatibles con SUSE Linux Enterprise Server for SAP applications 16.0.
5.2 Requisitos #
Medio de instalación de SUSE Linux Enterprise Server for SAP applications 16.0, disponible en el Centro de servicios al cliente de SUSE. Elija entre lo siguiente:
ISO en línea: solo incluye el instalador para instalaciones de red (
SLES-16.0-Online-ARCH-BUILD.install.iso)ISO completa: el instalador con el repositorio de instalación (
SLES-16.0-Full-ARCH-BUILD.install.iso)Paquetes RPM: tftpboot-agama-installer-SUSE_SLE_16_PXE-ARCH
Un punto de montaje temporal, como
/mnt.Espacio en disco suficiente en
/srv/tftpbooty/srv/installpara el método de instalación elegido.Privilegios administrativos para crear directorios y copiar archivos.
5.3 Preparación de archivos de instalador a partir de imágenes ISO #
Las imágenes ISO proporcionan un método sencillo para extraer archivos de instalador. Los siguientes procedimientos cubren los métodos de ISO en línea y de ISO completa para diferentes arquitecturas.
5.3.1 Uso de imágenes ISO en línea #
Las imágenes ISO en línea contienen solo los componentes del instalador, por lo que se requiere acceso de red a los repositorios de instalación durante la instalación del sistema. Esto se corresponde con la entrada del menú de arranque SLES-16.0 Online Installation en GRUB.
Cree la estructura de directorio para los archivos de instalador:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH/Monte la imagen ISO en línea:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Online-ARCH-BUILD.install.iso /mntCopie los archivos del kernel y de initrd:
>sudocp /mnt/boot/ARCH/loader/linux /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudocp /mnt/boot/ARCH/loader/initrd /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie el sistema de archivos raíz comprimido:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ARCH/Desmonte la imagen ISO:
>sudoumount /mnt
Cree la estructura de directorio:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Monte la imagen ISO:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Online-ppc64le-BUILD.install.iso /mntCopie los archivos del kernel e initrd (observe que la estructura de la vía es distinta para ppc64le):
>sudocp /mnt/boot/ppc64le/linux /srv/tftpboot/boot/images/SLES-16.0/ppc64le/>sudocp /mnt/boot/ppc64le/initrd /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Copie el sistema de archivos raíz comprimido:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Desmonte la imagen ISO:
>sudoumount /mnt
5.3.2 Uso de imágenes ISO completas #
Las imágenes ISO completas incluyen tanto el instalador como los repositorios de instalación, lo que permite instalaciones locales sin dependencias de red externas. Se corresponde con la entrada del menú de arranque SLES-16.0 Local Installation en GRUB con el parámetro inst.install_url=http://pxe.example.net/install/SLES-16.0/${arch} adicional.
Cree directorios tanto para los archivos de instalador como para el repositorio de instalación:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudomkdir -p /srv/install/SLES-16.0Monte la imagen ISO completa:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Full-ARCH-BUILD.install.iso /mntCopie los archivos de kernel y de initrd (ajuste las vías para ppc64le como se muestra en procedimientos anteriores):
>sudocp /mnt/boot/ARCH/loader/linux /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudocp /mnt/boot/ARCH/loader/initrd /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie el sistema de archivos raíz comprimido:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie el repositorio de instalación para el acceso local al servidor HTTP:
>sudorsync -avP /mnt/install/ /srv/install/SLES-16.0/ARCH/Desmonte la imagen ISO:
>sudoumount /mnt
5.4 Preparación de los archivos de instalador a partir de paquetes RPM #
Los paquetes RPM proporcionan un método alternativo para obtener archivos de instalador en línea.
Instale los paquetes necesarios:
>sudozypper in tftpboot-agama-installer-SUSE_SLE_16-ARCHCopie linux, initrd y squashfs.img en tftpboot:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH>sudocd /srv/tftpboot/boot/images/SLES-16.0/ARCH>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/linux .>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/initrd .>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/squashfs.img .
5.5 Estructura de directorios recomendada #
Organice los archivos extraídos de acuerdo con el siguiente diseño de directorio para garantizar la consistencia y facilidad de mantenimiento. Esta estructura admite múltiples arquitecturas y tipos de instalación.
/srv/tftpboot/ ├── boot/ │ ├── grub2/ │ │ ├── x86_64-efi/ │ │ │ ├── bootx64.efi │ │ │ └── grub.cfg │ │ ├── i386-pc/ │ │ │ └── core.0 │ │ ├── arm64-efi/ │ │ │ └── bootaa64.efi │ │ └── powerpc-ieee1275/ │ │ └── core.elf │ └── images/ │ └── SLES-16.0/ │ ├── x86_64/ │ │ ├── linux 1 │ │ ├── initrd 2 │ │ └── squashfs.img 3 │ ├── aarch64/ │ └── ppc64le/ /srv/install/ └── SLES-16.0/ ├── x86_64/ 4 ├── aarch64/ └── ppc64le/
5.6 Verificación de la instalación #
Después de extraer y organizar los archivos de instalador, compruebe que todos los componentes necesarios están presentes y se puede acceder a ellos.
Compruebe que los archivos esenciales están presentes:
>ls -la /srv/tftpboot/boot/images/SLES-16.0/ARCH/*Asegúrese de que los permisos del archivo sean correctos:
>sudofind /srv/tftpboot/boot/images/ -type d -exec chmod 0755 {} \;>sudofind /srv/tftpboot/boot/images/ -type f -exec chmod 0644 {} \;
Asegúrese de que los servicios TFTP y HTTP puedan leer todos los archivos extraídos. Los clientes PXE accederán a los archivos durante el proceso de arranque, por lo que para que el despliegue se realice correctamente, es esencial que se disponga de los permisos y la configuración del servicio adecuados.
5.7 Pasos siguientes #
Con los archivos de instalador correctamente preparados y organizados, puede proceder a:
Configurar GRUB 2 para el arranque PXE con entradas de menú que hagan referencia a estos archivos
Configurar los servicios HTTP y TFTP para proporcionar el contenido extraído
Configurar DHCP para dirigir a los clientes PXE a los cargadores de arranque apropiados
En la configuración de GRUB 2 se hará referencia a los archivos extraídos usando vías como root=live:http://pxe.example.net/boot/images/SLES-16.0/ARCH/squashfs.img.
6 Configuración de GRUB 2 para el arranque PXE #
En esta sección se describe cómo configurar el cargador de arranque de GRUB 2 para el arranque basado en PXE en SUSE Linux Enterprise Server for SAP applications 16.0. Cubre la creación de la estructura de directorios de arranque de red, la configuración de cargadores de arranque específicos de arquitectura y la implementación de un sistema de configuración flexible que admite múltiples arquitecturas y escenarios de instalación.
6.1 Introducción #
GRUB 2 sirve como cargador de arranque de red para clientes PXE. Carga los archivos de kernel e initrd para iniciar el instalador Agama. Esta sección muestra cómo crear una configuración avanzada de GRUB 2 que detecta automáticamente la arquitectura del cliente, gestiona la selección de la interfaz de red y proporciona un menú de arranque unificado que admite múltiples tipos de instalación y arquitecturas de destino.
El enfoque de configuración utiliza un diseño modular con archivos separados para la detección de arquitectura, definiciones de variables y entradas del menú de arranque. Esto permite la compatibilidad con configuraciones específicas del equipo y perfiles de instalación automatizados, manteniendo la coherencia entre las diferentes plataformas de hardware.
6.2 Requisitos #
Asegúrese de que la estructura del directorio de arranque de red de GRUB 2 está instalada, como se describe en las secciones anteriores.
Asegúrese de que los archivos de instalador están organizados correctamente como se describe en las secciones anteriores.
Se deben instalar paquetes GRUB 2 para todas las arquitecturas de destino: grub2-x86_64-efi, grub2-i386-pc, grub2-aarch64-efi y grub2-ppc64le-ieee1275.
El paquete shim para la compatibilidad con el arranque seguro UEFI (opcional).
Acceso administrativo a
/srv/tftpbooto raíz PXE equivalente.
6.3 Creación de la configuración de GRUB 2 #
El archivo de configuración de GRUB 2 se encarga de tres tareas principales: detectar la arquitectura del cliente, gestionar las interfaces de red y cargar otros archivos de configuración. Este enfoque modular ofrece flexibilidad para diferentes escenarios de despliegue.
grub.cfg principal #Cree el archivo de configuración principal de GRUB 2 en
/srv/tftpboot/boot/grub2/grub.cfg:>sudocat > /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Architecture detection and mapping if [ "$grub_cpu" == "i386" ]; then set arch='x86_64' elif [ "$grub_cpu" == "x86_64" ]; then set arch='x86_64' elif [ "$grub_cpu" == "arm64" ]; then set arch='aarch64' elif [ "$grub_cpu" == "powerpc" ]; then set arch='ppc64le' fi if [ "X$arch" == "X" ]; then echo "ERROR: No architecture found for ${grub_cpu}" exit else echo "Running on $arch CPU architecture" fi export arch # Network interface configuration for PXE-selected NIC # - dracut based images on SLE-16: set ipcfg="ifname=pxe0:${net_default_mac} ip=pxe0:dhcp" export ipcfg # - linuxrc installer on SLE-15: set ifcfg="ifcfg=${net_default_mac}=dhcp" export ifcfg # Define typical serial console kernel parameter #set sconsole="console=tty0 console=ttyS0,115200n8" #export sconsole # Load machine-specific configuration if available if [ -s "${config}/${net_default_mac}/grub.cfg" ]; then ## Source a host specific configuration of grub menu: source "${config}/${net_default_mac}/grub.cfg" else ## Source default grub boot menu: source "${prefix}/menu.cfg" fi EOF
- Detección de arquitectura
Asigna tipos de CPU de GRUB 2 a arquitecturas de distribución, lo que permite entradas de menú unificadas que funcionan en diferentes plataformas de hardware.
- Gestión de la interfaz de red
Define una variable
${ipcfg}que usa la variable${net_default_mac}de grub2 para activar dhcp solo en la interfaz de arranque PXE llamadapxe0, evitando problemas de sondeo de red en sistemas de varias interfaces.- Definiciones de utilidad
Define una variable
${sconsole}típica con parámetros de consola serie.- Configuración específica del equipo
Carga archivos de configuración opcionales por equipo basados en la dirección MAC, lo que permite personalizar los parámetros de arranque por equipo y los perfiles de instalación automatizados.
6.5 Configuraciones específicas del equipo #
Para despliegues avanzados, puede crear archivos de configuración específicos del equipo que anulen los ajustes predeterminados o proporcionen parámetros de instalación automatizados.
Cree un directorio para configuraciones específicas del equipo:
>sudomkdir -p /srv/tftpboot/boot/configPara un equipo con una dirección MAC
aa:bb:cc:dd:ee:ff, cree una configuración específica:>sudomkdir -p /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ffCree el archivo
grub.cfgespecífico del equipo:>sudocat > /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ff/grub.cfg << 'EOF'# Machine-specific configuration for aa:bb:cc:dd:ee:ff set default='SLES-16.0 Full Installation' # Activate the menu-entry after 5sec timeout set timeout=5 # Use know predictable network interface name set ipcfg="ip=eno1:dhcp" # Set the autoinstall variable for this machine set autoinstall="inst.auto=http://pxe.example.net/install/profiles/aa:bb:cc:dd:ee:ff/sles16.json" export autoinstall # Load the default menu source "/boot/grub2/menu.cfg" EOFComo alternativa, puede proporcionar su propia entrada de menú en el archivo
grub.cfgespecífico del host (por ejemplo, generada para un intento de arranque específico):>sudocat > /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ff/grub.cfg << 'EOF'set default='SLES-16.0 Auto-Installation' set timeout=5 menuentry 'SLES-16.0 Auto-Installation' { linux /boot/images/SLES-16.0/${arch}/linux showopts root=live:http://pxe.example.net/boot/images/SLES-16.0/${arch}/squashfs.img inst.install_url=http://pxe.example.net/install/SLES-16.0/${arch} inst.auto=http://pxe.example.net/install/profiles/${net_default_mac}/sles16.json ip=eno1:dhcp initrd /boot/images/SLES-16.0/${arch}/initrd } EOF
-
default Especifica qué entrada de menú se debe arrancar automáticamente.
-
timeout Establece el tiempo límite del arranque en segundos.
-
ipcfg Anula la configuración de la interfaz de red para hardware específico.
-
autoinstall Proporciona URL de perfil de instalación automatizadas específicas del equipo.
6.6 Verificación de la configuración de GRUB 2 #
Después de crear los archivos de configuración, compruebe que la configuración sea correcta y que todos los archivos necesarios estén en su lugar.
Compruebe la estructura de directorios de GRUB 2:
>find /srv/tftpboot/boot/grub2 -type f -name "*.cfg" -o -name "*.efi" -o -name "core.*"Verifique la sintaxis del archivo de configuración probando las herramientas de GRUB 2:
>grub2-script-check /srv/tftpboot/boot/grub2/grub.cfg>grub2-script-check /srv/tftpboot/boot/grub2/menu.cfgAsegúrese de que los permisos del archivo sean correctos:
>sudochmod -R 644 /srv/tftpboot/boot/grub2/*.cfg>sudofind /srv/tftpboot/boot/grub2 -type d -exec chmod 0755 {} \;
Pruebe la configuración de GRUB 2 con clientes PXE reales para garantizar que se detecta la arquitectura y que los menús funcionan de forma adecuada. La variable ${net_default_mac} solo está disponible en situaciones de arranque de red reales.
6.7 Solución de problemas de configuración de GRUB 2 #
Aquí se explican los problemas comunes y sus soluciones cuando se trabaja con configuraciones PXE de GRUB 2. Cada problema incluye pasos de diagnóstico y comandos específicos para resolverlo.
6.7.1 La detección de la arquitectura falla #
Si GRUB 2 no detecta la arquitectura correcta, los clientes pueden arrancar con binarios incorrectos o pueden incluso no cargarse.
Añada la salida de depuración a la configuración de GRUB 2 para ver los valores detectados:
>sudocat >> /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Debug architecture detection echo "Detected grub_cpu: ${grub_cpu}" echo "Mapped arch: ${arch}" sleep 3 EOFPruebe la sintaxis de configuración:
>grub2-script-check /srv/tftpboot/boot/grub2/grub.cfgSi la asignación de arquitectura está incompleta, extienda la lógica de detección:
>sudosed -i '/elif \[ "$grub_cpu" == "powerpc" \]/a\\nelif [ "$grub_cpu" == "riscv64" ]; then\n set arch='\''riscv64'\''\\' /srv/tftpboot/boot/grub2/grub.cfgVerifique que existen directorios específicos de la arquitectura:
>ls -la /srv/tftpboot/boot/grub2/
6.7.2 No se encuentra la interfaz de red #
Es posible que algunas implementaciones de firmware no definan correctamente la variable ${net_default_mac}, lo que provoca fallos de configuración de red.
Añada la salida de depuración para comprobar las variables de red:
>sudosed -i '/set ipcfg=/i\\necho "Default MAC: ${net_default_mac}"\necho "Network variables set"\nsleep 2' /srv/tftpboot/boot/grub2/grub.cfgCree una configuración de red alternativa:
>sudocat >> /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Fallback network configuration if net_default_mac is empty if [ "X${net_default_mac}" == "X" ]; then set ipcfg="ip=dhcp" set ifcfg="ifcfg=*=dhcp" echo "WARNING: Using fallback network configuration" sleep 2 fi EOFPruebe la configuración de red con una interfaz específica:
>sudoecho 'set ipcfg="ip=eno1:dhcp"' > /srv/tftpboot/boot/config/test-network.cfgVerifique los nombres de interfaz de red en el sistema de destino:
>ip link show
6.7.3 No se encuentran las vías de los archivos #
Si las vías son incorrectas, GRUB 2 no puede cargar los archivos de kernel e initrd, lo que provoca fallos de arranque.
Compruebe si los archivos de instalador se encuentran en las ubicaciones esperadas:
>find /srv/tftpboot/boot/images -name "linux" -o -name "initrd" -o -name "squashfs.img"Verifique el acceso TFTP a los archivos de arranque:
>tftp localhost -c get /boot/grub2/grub.cfg /tmp/test-grub.cfgPruebe el acceso HTTP a los archivos de instalador:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/linuxCompruebe los permisos y la propiedad del archivo:
>ls -la /srv/tftpboot/boot/images/SLES-16.0/*/Corrija los permisos si fuera necesario:
>sudochmod -R 644 /srv/tftpboot/boot/images/>sudofind /srv/tftpboot/boot/images/ -type d -exec chmod 755 {} \;Verifique que los enlaces simbólicos no estén rotos:
>find /srv/tftpboot/boot/images/ -type l -exec ls -la {} \;
6.7.4 Fallo de arranque EFI #
Los problemas de EFI y del arranque seguro pueden impedir que el cargador de arranque se inicialice correctamente, o causar fallos de autenticación.
Verifique que los archivos de arranque seguro estén presentes:
>ls -la /srv/tftpboot/boot/grub2/x86_64-efi/*.efiCompruebe que los archivos shim (bootx64.efi o shim.efi), grub.efi y MokManager.efi se copien correctamente:
>file /srv/tftpboot/boot/grub2/x86_64-efi/bootx64.efiVerifique la integridad del archivo EFI:
>sha256sum /srv/tftpboot/boot/grub2/x86_64-efi/*.efiPruebe si se puede acceder a los archivos a través de TFTP:
>tftp localhost -c get /boot/grub2/x86_64-efi/bootx64.efi /tmp/test-shim.efiPara los sistemas aarch64, verifique los archivos EFI ARM64:
>ls -la /srv/tftpboot/boot/grub2/arm64-efi/*.efiCompruebe que la configuración de DHCP proporcione las vías correctas del cargador de arranque:
>grep -n "bootx64.efi\|shim.efi\|bootaa64.efi" /etc/dnsmasq.d/dhcp.conf /etc/kea/kea-dhcp?.conf /etc/dhcpd?.confSi faltan archivos, vuelva a copiarlos de la ISO montada en /mnt o de los archivos del paquete shim:
>sudocp -v /mnt/EFI/BOOT/*.efi /srv/tftpboot/boot/grub2/x86_64-efi/>sudocp -pL /usr/share/efi/x86_64/*.efi /srv/tftpboot/boot/grub2/x86_64-efi/
6.7.6 Habilitación del registro detallado #
Para problemas persistentes, habilite el registro exhaustivo para capturar información detallada sobre el proceso de arranque.
Cree una versión de depuración de la configuración principal:
>sudocp /srv/tftpboot/boot/grub2/grub.cfg /srv/tftpboot/boot/grub2/grub.cfg.backupAñada la salida de depuración completa:
>sudocat > /srv/tftpboot/boot/grub2/debug.cfg << 'EOF'# Debug configuration for GRUB troubleshooting set debug=all set pager=1 echo "=== GRUB Debug Information ===" echo "grub_cpu: ${grub_cpu}" echo "grub_platform: ${grub_platform}" echo "net_default_mac: ${net_default_mac}" echo "net_default_server: ${net_default_server}" echo "=============================" sleep 5 EOFIncluya la configuración de depuración en el archivo principal:
>sudosed -i '1i\source "${prefix}/debug.cfg"' /srv/tftpboot/boot/grub2/grub.cfgSupervise los registros de TFTP durante los intentos de arranque:
>sudo journalctl -f -u tftp.socketSupervise los registros de DHCP para solicitudes de PXE:
>sudo journalctl -f -u dhcpdDesactive el modo de depuración después de solucionar el problema:
>sudosed -i '/source "${prefix}\/debug.cfg"/d' /srv/tftpboot/boot/grub2/grub.cfg
6.8 Pasos siguientes #
Cuando GRUB 2 se haya configurado correctamente, puede proceder a:
Configurar los servicios HTTP y TFTP para proporcionar los archivos de arranque y el contenido del instalador
Configurar los servicios DHCP para dirigir a los clientes PXE a los cargadores de arranque apropiados
Probar el proceso de arranque PXE completo en el hardware de destino
El sistema de configuración de GRUB 2 es muy flexible y sirve de base para crear escenarios de despliegue de PXE avanzados, que admitan múltiples arquitecturas y tipos de instalación mediante una interfaz unificada.
7 Configuración de TFTP para el arranque PXE #
En esta sección se explica cómo configurar los servicios TFTP para que proporcionen contenido de los cargadores de arranque de GRUB 2 y de arranque PXE a las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0. Trata sobre el servidor in.tftpd tradicional y la funcionalidad de TFTP integrada suministrada por dnsmasq.
7.1 Introducción #
TFTP proporciona archivos de arranque a clientes PXE durante el proceso de arranque de red. SUSE Linux Enterprise Server for SAP applications 16.0 admite dos implementaciones de servidor TFTP: el servidor in.tftpd tradicional del paquete tftp y la funcionalidad TFTP integrada dentro de dnsmasq.
7.2 Requisitos #
El paquete tftp o el paquete dnsmasq deben estar instalados
Los archivos de arranque PXE deben estar organizados en
/srv/tftpbootPrivilegios administrativos para configurar servicios
7.3 Configuración del servidor in.tftpd #
El servidor in.tftpd utiliza el archivo de configuración /etc/sysconfig/tftp para definir el sistema de archivos raíz TFTP y las opciones del servidor.
Opcionalmente, puede habilitar el registro detallado configurando las opciones de TFTP:
>sudosed -i 's/^TFTP_OPTIONS=.*/TFTP_OPTIONS="-v"/' /etc/sysconfig/tftpLa opción
-vpermite el registro detallado para ver los nombres de archivo obtenidos a través de TFTP.Habilite e inicie el servicio TFTP:
>sudosystemctl enable --now tftp.service
7.4 Configuración del servidor TFTP dnsmasq #
dnsmasq proporciona un servidor TFTP integrado que se puede habilitar y configurar para usar el directorio /srv/tftpboot.
Cree el archivo de configuración de TFTP:
>sudocat > /etc/dnsmasq.d/tftp.conf << 'EOF'enable-tftp tftp-root=/srv/tftpboot EOFHabilite e inicie el servicio dnsmasq:
>sudosystemctl enable --now dnsmasq
7.5 Verificación de la configuración de TFTP #
Pruebe la funcionalidad del servidor TFTP para asegurarse de que puede proporcionar archivos a clientes PXE.
Cree un archivo de prueba:
>echo "test file" | sudo tee /srv/tftpboot/test.txtRecupere el archivo de prueba a través de TFTP:
>tftp localhost -c get test.txt /tmp/tftp-test.txtVerifique que el archivo se ha recuperado correctamente:
>cat /tmp/tftp-test.txtBorre los archivos de prueba:
>sudorm /srv/tftpboot/test.txt /tmp/tftp-test.txt
7.6 Solución de problemas de la configuración de TFTP #
Estos son los problemas comunes al configurar servicios TFTP para entornos de arranque PXE.
7.6.1 Conflictos de servicio en el puerto 69 #
Tanto in.tftpd como dnsmasq utilizan el puerto UDP 69 para los servicios TFTP y no pueden ejecutarse simultáneamente.
Comprueba qué servicios se están ejecutando:
>systemctl status tftp.service dnsmasqCompruebe cuál está usando el puerto 69:
>ss -ulnp | grep :69Detenga el servicio conflictivo (ejemplo para dnsmasq):
>sudosystemctl stop dnsmasqInicie su servicio TFTP preferido:
>sudosystemctl start tftp.service
7.6.2 Problemas con el directorio TFTP #
Los problemas de acceso al sistema de archivos raíz TFTP pueden impedir que los archivos se entreguen.
Verifique la configuración del directorio TFTP para in.tftpd:
>grep TFTP_DIRECTORY /etc/sysconfig/tftpVerifique la configuración del directorio TFTP para dnsmasq:
>grep tftp-root /etc/dnsmasq.d/tftp.confCompruebe si el directorio existe:
>ls -la /srv/tftpboot/Cree la estructura de directorio, si no existe:
>sudomkdir -p /srv/tftpboot
7.6.3 Habilitación del registro de TFTP #
El registro detallado ayuda a identificar problemas de acceso a archivos con transferencias TFTP.
Compruebe las opciones de TFTP actuales:
>grep TFTP_OPTIONS /etc/sysconfig/tftpHabilite el registro detallado:
>sudosed -i 's/^TFTP_OPTIONS=.*/TFTP_OPTIONS="-v"/' /etc/sysconfig/tftpReinicie el servicio TFTP:
>sudosystemctl restart tftp.serviceCompruebe los registros de TFTP:
>journalctl -u tftp.service -f
7.7 Pasos siguientes #
Con TFTP configurado, puede proceder a configurar los servicios HTTP para proporcionar archivos de instalador y servicios DHCP a fin de dirigir a los clientes PXE a los cargadores de arranque apropiados.
8 Configuración de nginx para la entrega HTTP #
En esta sección se explica cómo configurar nginx para proporcionar contenido de arranque PXE a través de HTTP, lo que permite a los clientes cargar archivos de instalador como imágenes de kernel, initrd y squashfs desde una ubicación central. La entrega HTTP proporciona un mejor rendimiento que TFTP para archivos grandes y es necesaria para las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0 Agama.
8.1 Introducción #
nginx sirve como servidor HTTP para entornos de arranque PXE, proporcionando acceso a archivos de instalador a través de la entrega basada en Web. El servidor HTTP expone el directorio de arranque TFTP y los repositorios de instalación, lo que permite a los clientes PXE descargar imágenes de kernel, archivos initrd y los componentes del instalador Agama a través de HTTP, en lugar de con el protocolo TFTP, que es más lento.
8.2 Requisitos #
El paquete nginx debe estar instalado
Archivos de arranque PXE organizados en
/srv/tftpboot/bootRepositorios de instalación disponibles en
/srv/installPrivilegios administrativos para modificar la configuración de nginx
8.3 Configuración de nginx para el arranque PXE #
La configuración de nginx define los alias de ubicación que exponen el directorio de arranque TFTP y los repositorios de instalación a través de varias URL HTTP.
Edite el archivo de configuración de nginx:
>sudovim /etc/nginx/nginx.confConfigure el bloque del servidor HTTP en la sección
http:>sudocat > /etc/nginx/nginx.conf << 'EOF'http { include mime.types; default_type application/octet-stream; charset utf-8; sendfile on; keepalive_timeout 65; server { listen 80 default_server; listen [::]:80 default_server; location / { root /srv/www/htdocs/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/htdocs/; } # Expose TFTP boot directory for HTTP boot location /boot { alias /srv/tftpboot/boot; autoindex on; } # Expose installation repositories and profiles location /install { alias /srv/install; autoindex on; } } } events { worker_connections 1024; } EOFPruebe la sintaxis de configuración de nginx:
>sudonginx -tHabilite e inicie el servicio nginx:
>sudosystemctl enable --now nginx.service
8.4 Verificación de la configuración de nginx #
Pruebe la funcionalidad del servidor HTTP para asegurarse de que puede proporcionar archivos de arranque PXE y contenido de instalación a los clientes.
Pruebe el acceso HTTP a los archivos de arranque:
>curl -I http://localhost/boot/Pruebe el acceso al directorio de instalación:
>curl -I http://localhost/install/Compruebe que se pueda acceder a un archivo de instalación específico:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.img
8.5 Solución de problemas de configuración de nginx #
Estos son los problemas comunes al configurar nginx para la entrega HTTP de arranque PXE.
8.5.1 Errores de sintaxis de configuración #
Una sintaxis incorrecta de la configuración de nginx puede impedir que el servicio se inicie o se recargue correctamente.
Pruebe la sintaxis de configuración:
>sudonginx -tCompruebe el estado del servicio nginx si falla el inicio:
>systemctl status nginx.serviceConsulte los registros de error detallados:
>journalctl -u nginx.service -fCompruebe el archivo de registro de errores de nginx:
>tail -f /var/log/nginx/error.log
8.5.2 Problemas de acceso a archivos y permisos #
Puede que nginx no proporcione archivos porque haya permisos incorrectos o falten directorios.
Compruebe si el directorio de arranque existe y se puede acceder a él:
>ls -la /srv/tftpboot/boot/Compruebe si existe el directorio install:
>ls -la /srv/install/Verifique que nginx pueda leer los directorios:
>sudo -u nginx ls /srv/tftpboot/boot/Cree los directorios que falten si es necesario:
>sudomkdir -p /srv/installEstablezca los permisos apropiados:
>sudochmod -R 755 /srv/tftpboot/boot /srv/install
8.5.3 Conflictos de vinculación de puertos #
Puede que nginx no se inicie si otro servicio está utilizando el puerto 80.
Compruebe qué servicio está usando el puerto 80:
>ss -tlnp | grep :80Detenga los servicios en conflicto si fuera necesario:
>sudosystemctl stop apache2Inicie el servicio nginx:
>sudosystemctl start nginx.serviceVerifique que nginx esté escuchando en el puerto 80:
>ss -tlnp | grep :80
8.6 Pasos siguientes #
Cuando nginx esté configurado para la entrega HTTP, puede proceder a configurar los servicios DHCP para dirigir a los clientes PXE a los cargadores de arranque y recursos HTTP apropiados.
9 Configuración de un servidor DNS con dnsmasq #
En esta sección se explica cómo configurar los servicios DNS mediante dnsmasq para proporcionar resolución de nombres de host a los clientes PXE que acceden a los recursos de instalación de SUSE Linux Enterprise Server for SAP applications 16.0. La configuración de DNS permite a los clientes usar nombres de host en lugar de direcciones IP en las URL de arranque y configuraciones DHCP.
9.1 Introducción #
Los servicios DNS permiten a los clientes PXE resolver nombres de host en las URL de arranque y en orígenes de instalación. Aunque la configuración completa del servidor DNS está fuera del alcance de este documento, esta sección proporciona una configuración DNS básica mediante dnsmasq que permite a los clientes resolver el nombre de host (PXE.EXAMPLE.NET) del servidor PXE a sus direcciones IP.
Sin la configuración DNS, las URL de arranque deben usar direcciones IP directamente, como http://192.168.1.200/ o http://[2001:db8:0:1::200]/. Algunas implementaciones de firmware BIOS/UEFI no admiten nombres de host en las URL TFTP DHCP y requieren direcciones IP como tftp://[2001:db8:0:1::200]/.
9.2 Requisitos #
El paquete dnsmasq debe estar instalado
Direcciones IP estáticas configuradas para el servidor PXE
Privilegios administrativos para configurar servicios DNS
9.3 Configuración de los servicios DNS de dnsmasq #
La configuración de DNS de dnsmasq proporciona resolución de nombres de host local y utiliza servidores de nombres ascendentes para consultas externas.
Cree el archivo de configuración de DNS para dnsmasq:
>sudocat > /etc/dnsmasq.d/dns.conf << 'EOF'# DNS configuration file for dnsmasq # Log DNS queries log-queries # DNS cache behavior cache-size=10000 local-ttl=60 neg-ttl=10 # Never forward A or AAAA queries for plain names to upstream name servers domain-needed # Add local domain to simple names in /etc/hosts and DHCP expand-hosts # Specifies DNS domain and networks including local forward and reverse declarations domain=EXAMPLE.NET,192.168.1.0/24,local domain=EXAMPLE.NET,2001:db8:0:1::/64,local EOFAñada entradas de nombre de host al archivo de hosts del sistema:
>sudocat >> /etc/hosts << 'EOF'192.168.1.200 PXE.EXAMPLE.NET 2001:db8:0:1::200 PXE.EXAMPLE.NET EOFPruebe la configuración de dnsmasq:
>sudodnsmasq --testHabilite e inicie el servicio dnsmasq:
>sudosystemctl enable --now dnsmasq
De forma predeterminada, dnsmasq utiliza los servidores de nombres en /etc/resolv.conf como reenviadores y proporciona registros de /etc/hosts. Esto permite al servidor PXE resolver nombres de host externos mientras proporciona resolución local para servicios relacionados con PXE.
9.4 Verificación de la configuración de DNS #
Pruebe la funcionalidad del servidor DNS para garantizar que la resolución de nombres de host funcione para clientes PXE.
Pruebe la resolución de nombres de host IPv4:
>nslookup PXE.EXAMPLE.NET localhostPruebe la resolución de nombres de host IPv6:
>nslookup PXE.EXAMPLE.NET localhost | grep 2001:db8Pruebe la búsqueda DNS inversa para IPv4:
>nslookup 192.168.1.200 localhostCompruebe que el reenvío DNS externo siga funcionando:
>nslookup google.com localhost
9.5 Solución de problemas de configuración de DNS #
Estos son los problemas comunes al configurar dnsmasq para servicios DNS en entornos PXE.
9.5.1 Problemas de configuración y servicio #
Puede que dnsmasq no se inicie debido a errores de configuración o conflictos de puertos.
Pruebe la sintaxis de configuración de dnsmasq:
>sudodnsmasq --testCompruebe el estado del servicio dnsmasq:
>systemctl status dnsmasqCompruebe qué servicio está usando el puerto DNS 53:
>ss -ulnp | grep :53Consulte si hay errores en los registros de dnsmasq:
>journalctl -u dnsmasq -fDetenga los servicios DNS en conflicto si fuera necesario:
>sudosystemctl stop systemd-resolved
9.5.2 Fallos en la resolución de nombres de host #
Las consultas DNS pueden fallar porque la configuración sea incorrecta o porque falten entradas de nombre de host.
Compruebe si existen entradas de nombre de host en el archivo de hosts:
>grep PXE.EXAMPLE.NET /etc/hostsVerifique la configuración del dominio en dnsmasq:
>grep domain= /etc/dnsmasq.d/dns.confPruebe la consulta DNS con salida detallada:
>dig @localhost PXE.EXAMPLE.NETConsulte los registros de consultas de dnsmasq:
>journalctl -u dnsmasq | grep "query"Reinicie dnsmasq para volver a cargar la configuración:
>sudosystemctl restart dnsmasq
9.5.3 Problemas de reenvío DNS #
Las consultas DNS externas pueden fallar si la configuración del servidor de nombres ascendente es incorrecta.
Compruebe la configuración del servidor de nombres ascendente:
>cat /etc/resolv.confPruebe la consulta directa al servidor de nombres ascendente:
>nslookup google.com 8.8.8.8Compruebe la configuración de reenvío de dnsmasq:
>grep -E "server=|no-resolv" /etc/dnsmasq.d/dns.confAñada un servidor de nombres ascendente específico si fuera necesario:
>sudoecho "server=8.8.8.8" >> /etc/dnsmasq.d/dns.confReinicie el servicio dnsmasq:
>sudosystemctl restart dnsmasq
9.6 Pasos siguientes #
Con los servicios DNS configurados, los clientes PXE ahora pueden resolver nombres de host en las URL de arranque y en orígenes de instalación. Puede proceder a configurar los servicios DHCP que hacen referencia al servidor DNS para la configuración del cliente.
10 Configuración de un servidor NTP con chrony #
En esta sección se explica cómo configurar los servicios NTP mediante chrony para proporcionar una sincronización horaria precisa a los clientes PXE durante las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0. Sincronizar adecuadamente la hora es esencial para la validación de certificados y el registro del sistema durante las instalaciones basadas en red.
10.1 Introducción #
Los servicios NTP garantizan una sincronización de hora precisa en toda la infraestructura de red. Para entornos de arranque PXE, que la hora esté sincronizada es crucial para la validación de certificados durante las conexiones HTTPS, para tener marcas de tiempo de registro adecuadas y en las operaciones coordinadas del sistema. Esta sección proporciona la configuración básica del servidor NTP mediante chrony.
10.2 Requisitos #
El paquete chrony debe estar instalado
>sudozypper install chronyConectividad de red a servidores NTP ascendentes
Privilegios administrativos para configurar servicios NTP
10.3 Configuración del servicio NTP con chrony. #
El servicio chrony proporciona funcionalidad NTP con sincronización horaria automática a servidores ascendentes y capacidades de provisión de hora local para clientes de red.
chrony #Habilite e inicie el servicio
chrony:>sudosystemctl enable --now chronyd.service
10.4 Verificación de la configuración de NTP #
Pruebe la funcionalidad del servicio NTP para garantizar que la sincronización horaria funcione correctamente.
Compruebe el estado del servicio
chrony:>systemctl status chronyd.serviceConsulte el estado de sincronización de hora actual:
>chronyc trackingMuestre las fuentes NTP configuradas:
>chronyc sourcesConsulte las estadísticas del servidor NTP:
>chronyc sourcestats
10.5 Solución de problemas de configuración de NTP #
Estos son los problemas comunes al configurar chrony para servicios NTP en entornos PXE.
10.5.1 Problemas de inicio del servicio #
El servicio chrony puede no iniciarse debido a errores de configuración o problemas de conectividad de red.
Compruebe el estado del servicio
chronyy los registros:>systemctl status chronyd.serviceConsulte los registros de servicio detallados:
>journalctl -u chronyd.service -fPruebe la configuración de
chrony:>sudochronyd -QSi es necesario, reinicie el servicio:
>sudosystemctl restart chronyd.service
10.5.2 Fallos de sincronización horaria #
La sincronización horaria puede fallar debido a problemas de red o a una configuración incorrecta del servidor.
Consulte el estado actual de la sincronización:
>chronyc trackingConsulte la conectividad del origen NTP:
>chronyc sources -vFuerce una sincronización inmediata:
>sudochronyc makestepCompare la hora del sistema con la del reloj de hardware:
>timedatectl statusVerifique la conectividad de red a los servidores NTP:
>chronyc activity
10.5.3 Problemas del firewall y la red #
El tráfico NTP puede estar bloqueado por reglas del firewall que impidan la sincronización horaria.
Compruebe si el puerto NTP está abierto en el firewall:
>firewall-cmd --list-services | grep ntpAñada el servicio NTP al firewall si fuera necesario:
>sudofirewall-cmd --permanent --add-service=ntpVuelva a cargar la configuración del firewall:
>sudofirewall-cmd --reloadPruebe manualmente la conectividad NTP:
>ntpdate -q pool.ntp.orgCompruebe el uso del puerto
chrony:>ss -ulnp | grep :123
10.6 Pasos siguientes #
Con los servicios NTP configurados, el servidor PXE y los clientes mantendrán una sincronización horaria precisa. Esto garantiza una validación de certificados adecuada y operaciones coordinadas del sistema durante las instalaciones basadas en la red.
11 Configuración de anuncios de router IPv6 #
En esta sección se describe cómo configurar la funcionalidad de anuncios de router IPv6 para proporcionar anuncios de router adecuados para los clientes PXE. Los anuncios de router IPv6 permiten la configuración de enrutamiento IPv6 y la configuración automática de direcciones DHCPv6 con estado para las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0.
11.1 Introducción #
Los anuncios de router IPv6 proporcionan información esencial de configuración de red a los clientes PXE, incluidos el enrutamiento IPv6 y los ajustes de configuración automática de direcciones DHCPv6. En esta sección se presupone que hay un router IPv6 configurado para proporcionar anuncios de router adecuados a fin de configurar el enrutamiento IPv6 a la red y la vía predeterminada, así como para habilitar la configuración automática de direcciones DHCPv6 con estado mediante AdvManagedFlag on.
11.2 Requisitos #
El paquete radvd debe estar instalado
Configuración de red IPv6 en la interfaz de servidor
Privilegios administrativos para configurar los servicios de anuncios de router
11.3 Configuración de radvd para los anuncios de router IPv6 #
El servicio radvd proporciona la funcionalidad de anuncios de router IPv6 mediante la configuración definida en /etc/radvd.conf.
radvd #Configure el servicio
radvd:>sudocat > /etc/radvd.conf << 'EOF'interface eno1 { # radvd options IgnoreIfMissing on; # Do not fail and exit when interface is missed AdvSendAdvert on; # Sending RAs on the interface is not disabled # Configuration settings AdvManagedFlag on; # Request IPv6 address and dns options via DHCPv6 AdvOtherConfigFlag off; # Request only dns info via DHCPv6, IP via SLAAC AdvDefaultLifetime 1800; # Add default route via this router for 1800sec prefix 2001:db8:0:1::/64 # Add direct route for this local network/prefix { AdvAutonomous off; # Assign IPv6 address via SLAAC AdvValidLifetime 7200; AdvPreferredLifetime 3600; }; }; EOFHabilite e inicie el servicio
radvd:>sudosystemctl enable --now radvd
11.4 Verificación de los anuncios de router IPv6 #
Pruebe la funcionalidad de anuncios de router IPv6 para garantizar una configuración y un funcionamiento adecuados.
Compruebe el estado del servicio
radvd:>systemctl status radvdRevise y verifique la configuración de los anuncios de router IPv6 mediante
ravdump:>radvdumpLa utilidad
radvdumpmuestra la configuración de anuncios de router de IPv6 enviada por el router IPv6 cada pocos minutos.
11.5 Configuración de reenvío de IP para la funcionalidad del router #
Si el servidor PXE también actúa como router, el reenvío de IP debe estar habilitado para permitir que el sistema funcione con dicho rol.
Cree el archivo de configuración de red:
>sudocat > /etc/sysctl.d/90-network.conf << 'EOF'# This machine is a router net.ipv4.conf.all.forwarding = 1 net.ipv6.conf.all.forwarding = 1 # Accept host autoconf on router uplink net.ipv6.conf.uplink.accept_ra = 2 EOFAplique la configuración de la red:
>sudosysctl -p /etc/sysctl.d/90-network.conf
Un router no procesa por defecto los anuncios de router IPv6 para la configuración automática del host. Para aceptar los anuncios de router IPv6 en una interfaz de enlace ascendente de router, es preciso el ajuste accept_ra = 2 de sysctl. Consulte la sección sobre la configuración de la red en la Guía de administración para obtener más detalles sobre la configuración del router, incluidos los ajustes del firewall y otros pasos necesarios.
11.6 Solución de problemas de anuncios de router IPv6 #
Estos son los problemas comunes al configurar los anuncios de router IPv6 en entornos PXE.
11.6.1 Problemas del servicio radvd #
El servicio radvd puede no iniciarse debido a errores de configuración o problemas de la interfaz.
radvd #Compruebe el estado del servicio
radvdy los registros:>systemctl status radvdConsulte los registros de servicio detallados:
>journalctl -u radvd -fPruebe la sintaxis de configuración de
radvd:>sudoradvd -C /etc/radvd.confCompruebe si existe la interfaz especificada:
>ip link show eno1Reinicie el servicio después de arreglar la configuración:
>sudosystemctl restart radvd
11.6.2 Problemas de configuración de reenvío de IP #
Si la configuración de reenvío de IP es incorrecta, el router podría no funcionar de forma adecuada.
Compruebe el estado actual del reenvío de IP:
>sysctl net.ipv4.conf.all.forwardingCompruebe el estado de reenvío de IPv6:
>sysctl net.ipv6.conf.all.forwardingVerifique el archivo de configuración de sysctl:
>cat /etc/sysctl.d/90-network.confSi los valores no son correctos, aplique la configuración:
>sudosysctl -p /etc/sysctl.d/90-network.confCompruebe el ajuste accept_ra en la interfaz del enlace ascendente:
>sysctl net.ipv6.conf.uplink.accept_ra
11.6.3 Problemas de recepción de anuncios de router #
Es posible que los clientes no reciban o procesen correctamente los anuncios de router IPv6.
Supervise los anuncios de router con
ravdump:>radvdump -dCompruebe la configuración de la interfaz IPv6 en los clientes:
>ip -6 addr showVerifique la tabla de enrutamiento IPv6 en los clientes:
>ip -6 route showPruebe la conectividad IPv6 al router:
>ping6 2001:db8:0:1::1Compruebe las reglas del firewall para ICMPv6:
>firewall-cmd --list-protocols | grep ipv6-icmp
11.7 Pasos siguientes #
Con los anuncios de router IPv6 configurados, los clientes PXE pueden recibir una configuración de red IPv6 adecuada. Esto permite la funcionalidad de DHCPv6 y la conectividad IPv6 para instalaciones basadas en red.
12 Configuración de un servidor DHCP con dnsmasq #
En esta sección se explica cómo configurar los servicios DHCP mediante dnsmasq para proporcionar configuración de red e información de arranque PXE para las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0. El servidor DHCP dnsmasq utiliza una configuración basada en etiquetas para admitir clientes PXE IPv4 e IPv6 con capacidades de arranque UEFI y BIOS.
12.1 Introducción #
El servidor DHCP dnsmasq proporciona configuración de red e información de archivos de arranque a clientes PXE mediante un sistema basado en etiquetas que se corresponden con los tipos de clientes y proporcionan los cargadores de arranque adecuados. Esta configuración admite correspondencias de PXEClient y HTTPClient que funcionan para DHCPv4 y DHCPv6, lo que permite el arranque a través de sistemas UEFI y BIOS en múltiples arquitecturas.
En dnsmasq 2.90 y versiones anteriores, no se admite el envío de la clase de proveedor option6:16 de vuelta a los clientes DHCPv6 para configuraciones de HTTPClient. Para obtener compatibilidad completa con HTTPClient, plantéese usar los servidores Kea o ISC DHCP.
12.2 Requisitos #
El paquete dnsmasq debe estar instalado
Archivos de arranque PXE correctamente organizados en
/srv/tftpbootInterfaz de red configurada para el servicio DHCP
Privilegios administrativos para configurar servicios DHCP
12.3 Configuración de los servicios DHCP con dnsmasq #
La configuración de DHCP con dnsmasq incluye la correspondencia del tipo de cliente, los intervalos de red y las asignaciones de archivos de arranque para redes IPv4 e IPv6.
Cree el archivo de configuración de DHCP para dnsmasq:
>sudocat > /etc/dnsmasq.d/dhcp.conf << 'EOF'# DHCP configuration file for dnsmasq # Log DHCP processing log-dhcp # This is the only DHCP server, don't ignore unknown clients/send NAK dhcp-authoritative # Disable re-use of the DHCPv4 servername and filename fields as extra # option space, which may confuse old or broken clients dhcp-no-override # IPv4 PXE/HTTP boot client matches (no enterprise number) # Match client type in PXEClient:Arch and map to a tag dhcp-vendorclass=set:tftp_bios_x86_pc,PXEClient:Arch:00000 dhcp-vendorclass=set:tftp_uefi_x86_64,PXEClient:Arch:00007 dhcp-vendorclass=set:tftp_ieee_ppc_64,PXEClient:Arch:0000e dhcp-vendorclass=set:tftp_uefi_arm_64,PXEClient:Arch:00011 # Match client type in HTTPClient:Arch and map to a tag dhcp-vendorclass=set:http_uefi_x86_64,HTTPClient:Arch:00016 dhcp-vendorclass=set:http_uefi_arm_64,HTTPClient:Arch:00019 # IPv6 PXE/HTTP boot client matches (enterprise:343 intel) # Match client type in PXEClient:Arch and map to a tag dhcp-vendorclass=set:tftp_bios_x86_pc,enterprise:343,PXEClient:Arch:00000 dhcp-vendorclass=set:tftp_uefi_x86_64,enterprise:343,PXEClient:Arch:00007 dhcp-vendorclass=set:tftp_ieee_ppc_64,enterprise:343,PXEClient:Arch:0000e dhcp-vendorclass=set:tftp_uefi_arm_64,enterprise:343,PXEClient:Arch:00011 # Match client type in HTTPClient:Arch and map to a tag dhcp-vendorclass=set:http_uefi_x86_64,enterprise:343,HTTPClient:Arch:00016 dhcp-vendorclass=set:http_uefi_arm_64,enterprise:343,HTTPClient:Arch:00019 EOFConfigure el intervalo y las opciones de DHCP de IPv4:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv4 range and options dhcp-range=set:net0v4,192.168.1.100,192.168.1.199,255.255.255.0,1h dhcp-option=tag:net0v4,option:domain-search,example.net dhcp-option=tag:net0v4,option:dns-server,192.168.1.200 dhcp-option=tag:net0v4,option:ntp-server,192.168.1.1 dhcp-option=tag:net0v4,option:router,192.168.1.1 EOFConfigure las opciones de arranque PXE de IPv4:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv4 PXEClient boot dhcp-boot=tag:net0v4,tag:tftp_bios_x86_pc,/boot/grub2/i386-pc/core.0,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_uefi_x86_64,/boot/grub2/x86_64-efi/bootx64.efi,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_ieee_ppc_64,/boot/grub2/powerpc-ieee1275/core.elf,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_uefi_arm_64,/boot/grub2/arm64-efi/bootaa64.efi,192.168.1.200 # IPv4 HTTPClient boot dhcp-option-force=tag:net0v4,tag:http_uefi_x86_64,option:vendor-class,HTTPClient dhcp-boot=tag:net0v4,tag:http_uefi_x86_64,http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi dhcp-option-force=tag:net0v4,tag:http_uefi_arm_64,option:vendor-class,HTTPClient dhcp-boot=tag:net0v4,tag:http_uefi_arm_64,http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi EOFConfigure el intervalo y las opciones de DHCP de IPv6:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv6 range and options dhcp-range=set:net0v6,2001:db8:0:1:d::,2001:db8:0:1:d::ffff,64,1h dhcp-option=tag:net0v6,option6:domain-search,example.net dhcp-option=tag:net0v6,option6:dns-server,[2001:db8:0:1::200] dhcp-option=tag:net0v6,option6:sntp-server,[2001:db8:0:1::1] EOFConfigure las opciones de arranque PXE de IPv6:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv6 PXEClient boot dhcp-option=tag:net0v6,tag:tftp_bios_x86_pc,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0 dhcp-option=tag:net0v6,tag:tftp_uefi_x86_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi dhcp-option=tag:net0v6,tag:tftp_ieee_ppc_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf dhcp-option=tag:net0v6,tag:tftp_uefi_arm_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi # IPv6 HTTPClient boot # Note: dnsmasq <= 2.90 does not support sending vendor-class option6:16 back to client EOFPruebe la configuración de dnsmasq:
>sudodnsmasq --testHabilite e inicie el servicio dnsmasq:
>sudosystemctl enable --now dnsmasq
12.4 Verificación de la configuración de DHCP #
Pruebe la funcionalidad del servidor DHCP para garantizar una configuración de red adecuada y la entrega de archivos de arranque a clientes PXE.
Compruebe el estado del servicio dnsmasq:
>systemctl status dnsmasqVerifique la vinculación de puertos DHCP:
>ss -ulnp | grep :67Supervise las asignaciones de concesión de DHCP:
>journalctl -u dnsmasq -fCompruebe las concesiones de DHCP activas:
>cat /var/lib/dhcp/dhcpd.leases
12.5 Solución de problemas de configuración de DHCP de dnsmasq #
Estos son los problemas comunes al configurar dnsmasq para servicios DHCP en entornos PXE.
12.5.1 Problemas de inicio y configuración del servicio #
Puede que dnsmasq no se inicie debido a errores de configuración o conflictos de puertos con otros servicios DHCP.
Pruebe la sintaxis de configuración de dnsmasq:
>sudodnsmasq --testCompruebe si hay conflictos de puertos DHCP:
>ss -ulnp | grep :67Detenga los servicios DHCP en conflicto:
>sudosystemctl stop dhcpdConsulte los registros de servicio detallados:
>journalctl -u dnsmasq -fReinicie dnsmasq después de resolver los conflictos:
>sudosystemctl restart dnsmasq
12.5.2 Problemas de asignación de concesión de DHCP #
Puede que los clientes no reciban direcciones IP debido a problemas de configuración del intervalo o la conectividad de la red.
Compruebe la configuración del intervalo de DHCP:
>grep dhcp-range /etc/dnsmasq.d/dhcp.confSupervise las solicitudes DHCP en tiempo real:
>journalctl -u dnsmasq -f | grep DHCPCompruebe el estado de la interfaz de red:
>ip addr showVerifique la configuración autorizada de DHCP:
>grep dhcp-authoritative /etc/dnsmasq.d/dhcp.confPruebe la respuesta DHCP con dhcping:
>dhcping -s 192.168.1.200
12.5.3 Problemas de entrega de archivos de arranque PXE #
Los clientes PXE pueden recibir direcciones IP, pero no pueden arrancar debido a una configuración incorrecta del archivo de arranque o problemas de correspondencia de tipos de cliente.
Compruebe que la clase de proveedor cliente coincida:
>grep dhcp-vendorclass /etc/dnsmasq.d/dhcp.confVerifique las vías del archivo de arranque:
>grep dhcp-boot /etc/dnsmasq.d/dhcp.confPruebe el acceso TFTP a los archivos de arranque:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiConsulte los registros de DHCP específicos de PXE:
>journalctl -u dnsmasq | grep -E "PXE|HTTP"Compruebe la asignación de etiquetas en los registros:
>journalctl -u dnsmasq | grep "tags:"
12.5.4 Problemas de configuración de DHCP de IPv6 #
Los clientes DHCP IPv6 requieren una configuración adecuada de los anuncios de router y pueden tener requisitos de direccionamiento diferentes a IPv4.
Verifique la configuración del intervalo de DHCP de IPv6:
>grep "2001:db8" /etc/dnsmasq.d/dhcp.confCompruebe el estado de los anuncios de router IPv6:
>systemctl status radvdSupervise las solicitudes DHCPv6:
>journalctl -u dnsmasq | grep "DHCPv6"Pruebe la conectividad IPv6:
>ping6 2001:db8:0:1::200Compruebe la configuración de la opción IPv6:
>grep option6 /etc/dnsmasq.d/dhcp.conf
12.6 Pasos siguientes #
Con los servicios DHCP de dnsmasq configurados, los clientes PXE pueden recibir la configuración de red y la información del archivo de arranque para entornos IPv4 e IPv6. El sistema basado en etiquetas proporciona una asignación flexible de archivos de arranque basada en la arquitectura del cliente y los requisitos del método de arranque.
13 Configuración de un servidor DHCP con Kea #
En esta sección se explica cómo configurar los servicios DHCP mediante Kea para proporcionar configuración de red e información de arranque PXE para las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0. Kea es un servidor DHCP moderno que admite tanto IPv4 como IPv6 con correspondencia de clases de clientes para escenarios de arranque PXE y HTTP.
13.1 Introducción #
Kea es el servidor DHCP moderno desarrollado por ISC como sucesor del servidor ISC DHCP heredado. Proporciona una compatibilidad robusta tanto para DHCPv4 como para DHCPv6 con capacidades de clasificación de clientes que permiten la entrega adecuada de archivos de arranque basados en la arquitectura y el método de arranque del cliente. Kea utiliza archivos de configuración basados en JSON y admite funciones avanzadas como la identificación de la clase del proveedor para el arranque HTTP.
13.2 Requisitos #
Paquetes DHCP de Kea instalados: kea-dhcp4 y kea-dhcp6
Archivos de arranque PXE correctamente organizados en
/srv/tftpbootInterfaz de red configurada para el servicio DHCP
Privilegios administrativos para configurar servicios DHCP
13.3 Configuración del servidor DHCPv4 de Kea #
La configuración de DHCPv4 de Kea utiliza clases de cliente que se corresponden con los tipos de cliente PXE y HTTP para proporcionar archivos de arranque apropiados para diferentes arquitecturas.
Configure el servidor DHCPv4 de Kea:
>sudocat > /etc/kea/kea-dhcp4.conf << 'EOF'{ "Dhcp4": { "interfaces-config": { "interfaces": [ "eno1" ] }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea4-ctrl-socket" }, "lease-database": { "type": "memfile", "persist": true, "name": "/var/lib/kea/dhcp4.leases", "lfc-interval": 3600 }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 }, "renew-timer": 1800, "rebind-timer": 3150, "valid-lifetime": 3600, "option-data": [], "client-classes": [ { "name": "pxeclients#00000", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00000'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/i386-pc/core.0" }, { "name": "pxeclients#00007", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00007'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/x86_64-efi/bootx64.efi" }, { "name": "pxeclients#0000e", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:0000e'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/powerpc-ieee1275/core.elf" }, { "name": "pxeclients#00011", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00011'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/arm64-efi/bootaa64.efi" }, { "name": "httpclients#00016", "test": "substring(option[60].hex,0,21) == 'HTTPClient:Arch:00016'", "boot-file-name": "http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi", "option-data": [ { "name": "vendor-class-identifier", "data": "HTTPClient" } ] }, { "name": "httpclients#00019", "test": "substring(option[60].hex,0,21) == 'HTTPClient:Arch:00019'", "boot-file-name": "http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi", "option-data": [ { "name": "vendor-class-identifier", "data": "HTTPClient" } ] } ], "subnet4": [ { "id": 1, "subnet": "192.168.1.0/24", "pools": [ { "pool": "192.168.1.100 - 192.168.1.199" } ], "option-data": [ { "name": "routers", "data": "192.168.1.1" }, { "name": "ntp-servers", "data": "192.168.1.1" }, { "name": "domain-name-servers", "data": "192.168.1.200" }, { "name": "domain-search", "data": "example.net" } ], "reservations": [] } ], "loggers": [ { "name": "kea-dhcp4", "output-options": [ { "output": "/var/log/kea/dhcp4.log" } ], "severity": "INFO", "debuglevel": 0 } ] } } EOFCree el directorio de registro de Kea:
>sudomkdir -p /var/log/keaPruebe la configuración de DHCPv4 de Kea:
>sudokea-dhcp4 -t /etc/kea/kea-dhcp4.confHabilite e inicie el servicio DHCPv4 de Kea:
>sudosystemctl enable --now kea-dhcp4
13.4 Configuración del servidor DHCPv6 de Kea #
La configuración de DHCPv6 de Kea proporciona asignación de direcciones IPv6 e información de archivos de arranque mediante la correspondencia con clases de proveedor para diferentes arquitecturas de cliente.
Configure el servidor DHCPv6 de Kea:
>sudocat > /etc/kea/kea-dhcp6.conf << 'EOF'{ "Dhcp6": { "interfaces-config": { "interfaces": [ "eno1" ] }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea6-ctrl-socket" }, "lease-database": { "type": "memfile", "persist": true, "name": "/var/lib/kea/dhcp6.leases", "lfc-interval": 3600 }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 }, "renew-timer": 1800, "rebind-timer": 2880, "preferred-lifetime": 3600, "valid-lifetime": 7200, "option-data": [], "option-def": [], "client-classes": [ { "name": "pxeclients#00000", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00000'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0" } ] }, { "name": "pxeclients#00007", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00007'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi" } ] }, { "name": "pxeclients#0000e", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:0000e'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf" } ] }, { "name": "pxeclients#00011", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00011'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi" } ] } ], "subnet6": [ { "id": 1, "subnet": "2001:db8:0:1::/64", "interface": "eno1", "pools": [ { "pool": "2001:db8:0:1:d::/112" } ], "option-data": [ { "name": "sntp-servers", "data": "2001:db8:0:1::1" }, { "name": "dns-servers", "data": "2001:db8:0:1::200" }, { "name": "domain-search", "data": "example.net" } ], "reservations": [] } ], "loggers": [ { "name": "kea-dhcp6", "output-options": [ { "output": "/var/log/kea/dhcp6.log" } ], "severity": "INFO", "debuglevel": 0 } ] } } EOFPruebe la configuración de DHCPv6 de Kea:
>sudokea-dhcp6 -t /etc/kea/kea-dhcp6.confHabilite e inicie el servicio DHCPv6 de Kea:
>sudosystemctl enable --now kea-dhcp6
13.5 Verificación de la configuración de DHCP de Kea #
Pruebe la funcionalidad del servidor DHCP de Kea para garantizar una configuración de red adecuada y la entrega de archivos de arranque a clientes PXE.
Compruebe el estado del servicio DHCPv4 de Kea:
>systemctl status kea-dhcp4Compruebe el estado del servicio DHCPv6 de Kea:
>systemctl status kea-dhcp6Verifique la vinculación de puertos DHCP:
>ss -ulnp | grep -E ":67|:547"Supervise los registros de DHCPv4:
>tail -f /var/log/kea/dhcp4.logSupervise los registros de DHCPv6:
>tail -f /var/log/kea/dhcp6.logCompruebe las concesiones de DHCP activas:
>cat /var/lib/kea/dhcp4.leases
13.6 Solución de problemas de la configuración de DHCP de Kea #
Estos son los problemas comunes al configurar servidores DHCP de Kea para entornos de arranque PXE.
13.6.1 Problemas de configuración y servicio #
Los servicios de Kea pueden no iniciarse debido a errores de configuración de JSON o a problemas de la interfaz de red.
Pruebe la sintaxis de configuración de DHCPv4:
>sudokea-dhcp4 -t /etc/kea/kea-dhcp4.confPruebe la sintaxis de configuración de DHCPv6:
>sudokea-dhcp6 -t /etc/kea/kea-dhcp6.confCompruebe si hay errores de sintaxis de JSON:
>python3 -m json.tool /etc/kea/kea-dhcp4.confVerifique la configuración de la interfaz de red:
>ip addr show eno1Consulte los registros del servicio de Kea:
>journalctl -u kea-dhcp4 -f
13.6.2 Problemas de asignación de concesión de DHCP #
Puede que los clientes no reciban direcciones IP debido a problemas de la configuración de subred o por agotamiento del grupo.
Compruebe la configuración de la subred y del grupo:
>grep -A 10 "subnet4\|pools" /etc/kea/kea-dhcp4.confSupervise las asignaciones de concesión en tiempo real:
>tail -f /var/log/kea/dhcp4.log | grep -E "ALLOC|DISCOVER"Compruebe en la base de datos de concesión si hay conflictos:
>cat /var/lib/kea/dhcp4.leases | tail -20Verifique la vinculación de interfaz:
>grep interfaces /etc/kea/kea-dhcp4.confBorre la base de datos de concesiones si fuera necesario:
>sudosystemctl stop kea-dhcp4>sudomv /var/lib/kea/dhcp4.leases /var/lib/kea/dhcp4.leases.backup>sudosystemctl start kea-dhcp4
13.6.3 Problemas de correspondencia de clase de cliente PXE #
Los clientes PXE pueden recibir direcciones IP, pero no pueden obtener los archivos de arranque correctos debido a problemas de configuración de la clase de cliente.
Compruebe las definiciones de clase de cliente:
>grep -A 5 "client-classes" /etc/kea/kea-dhcp4.confConsulte la correspondencia de clases de cliente en los registros:
>tail -f /var/log/kea/dhcp4.log | grep -i classVerifique los patrones del identificador de clase de proveedor:
>grep "PXEClient\|HTTPClient" /etc/kea/kea-dhcp4.confPruebe la accesibilidad del archivo de arranque:
>curl -I http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efiHabilite el registro de depuración para realizar un análisis detallado del cliente:
>sudosed -i 's/"debuglevel": 0/"debuglevel": 99/' /etc/kea/kea-dhcp4.conf>sudosystemctl restart kea-dhcp4
13.6.4 Problemas específicos de DHCPv6 #
Los clientes DHCP IPv6 requieren una configuración adecuada de los anuncios de router y gestionan la opción de clase de proveedor de forma diferente a como se hace para IPv4.
Compruebe la configuración de la subred DHCPv6:
>grep -A 10 "subnet6" /etc/kea/kea-dhcp6.confCompruebe el estado de los anuncios de router IPv6:
>systemctl status radvdSupervise la correspondencia de clases de proveedores DHCPv6:
>tail -f /var/log/kea/dhcp6.log | grep "option\[16\]"Compruebe el formato de la opción bootfile-url de IPv6:
>grep "bootfile-url" /etc/kea/kea-dhcp6.confPruebe la conectividad IPv6 al servidor de arranque:
>ping6 2001:db8:0:1::200
13.7 Pasos siguientes #
Con los servicios DHCP de Kea configurados, los clientes PXE pueden recibir información completa de configuración de red y archivos de arranque para entornos IPv4 e IPv6. El sistema de clasificación de clientes proporciona una asignación precisa de archivos de arranque basada en la arquitectura del cliente y admite los métodos de arranque PXE tradicionales y HTTP modernos.
14 Configuración de un servidor DHCP con ISC DHCP #
En esta sección se explica cómo configurar el servidor ISC DHCP para proporcionar configuración de red e información de arranque PXE para las instalaciones de SUSE Linux Enterprise Server for SAP applications 15. El paquete dhcp-server de ISC ya no está disponible en SUSE Linux Enterprise Server for SAP applications 16.0. ISC DHCP utiliza la correspondencia de clases y subclases para admitir escenarios de arranque PXE y HTTP en diferentes arquitecturas de cliente.
14.1 Introducción #
ISC DHCP es el servidor DHCP tradicional que proporciona configuración de red e información de archivos de arranque a clientes PXE mediante un sistema de clases y subclases. Si bien ISC ha declarado que este servidor llegó al final de su vida útil en 2022, sigue siendo ampliamente utilizado en despliegues existentes y proporciona una compatibilidad sólida para escenarios de arranque PXE y HTTP con identificación de clase de proveedor.
Según ISC, ISC DHCP llegó al final de su vida útil en 2022. Para nuevos despliegues, plantéese usar Kea o dnsmasq en su lugar. Esta configuración se proporciona para la compatibilidad con las instalaciones ISC DHCP existentes.
14.2 Requisitos #
Paquetes de ISC DHCP instalados: dhcp-server
Archivos de arranque PXE correctamente organizados en
/srv/tftpbootInterfaz de red configurada para el servicio DHCP
Privilegios administrativos para configurar servicios DHCP
14.3 Configuración del servidor ISC DHCPv4 #
La configuración de ISC DHCPv4 usa declaraciones de clase y subclase que se corresponden con los tipos de clientes PXE y HTTP para proporcionar archivos de arranque apropiados para diferentes arquitecturas.
Configure el servidor ISC DHCPv4:
>sudocat > /etc/dhcpd.conf << 'EOF'# /etc/dhcpd.conf # # Sample configuration file for ISC dhcpd # # *** PLEASE CONFIGURE IT FIRST *** # # Don't forget to set the DHCPD_INTERFACE in the # /etc/sysconfig/dhcpd file. # # if you want to use dynamical DNS updates, you should first read # read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt # ddns-updates off; # Use this to enable / disable dynamic dns updates globally. ddns-update-style none; # default lease time default-lease-time 3600; max-lease-time 7200; ## ## PXE / HTTP boot option declarations ## class "pxeclients" { # PXEClient:Arch:00000:UNDI:002001 match substring (option vendor-class-identifier, 0, 20); } class "httpclients" { # HTTPClient:Arch:00016:UNDI:003001 match substring (option vendor-class-identifier, 0, 21); } ## ## PXE / HTTP boot subclass request matches ## subclass "pxeclients" "PXEClient:Arch:00000" { next-server 192.168.1.200; filename "/boot/grub2/i386-pc/core.0"; } subclass "pxeclients" "PXEClient:Arch:00007" { next-server 192.168.1.200; filename "/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "pxeclients" "PXEClient:Arch:0000e" { next-server 192.168.1.200; filename "/boot/grub2/powerpc-ieee1275/core.elf"; } subclass "pxeclients" "PXEClient:Arch:00011" { next-server 192.168.1.200; filename "/boot/grub2/arm64-efi/bootaa64.efi"; } subclass "httpclients" "HTTPClient:Arch:00016" { option vendor-class-identifier "HTTPClient"; filename "http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "httpclients" "HTTPClient:Arch:00019" { option vendor-class-identifier "HTTPClient"; filename "http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi"; } ## ## Subnet declaration for the pxe network ## subnet 192.168.1.0 netmask 255.255.255.0 { authoritative; range dynamic-bootp 192.168.1.100 192.168.1.199; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option ntp-servers 192.168.1.1; option domain-name-servers 192.168.1.200; option domain-name "example.net"; option domain-search "example.net"; } EOFConfigure la interfaz de DHCP en sysconfig:
>sudoecho 'DHCPD_INTERFACE="eno1"' > /etc/sysconfig/dhcpdPruebe la configuración de DHCPv4:
>sudodhcpd -t -cf /etc/dhcpd.confHabilite e inicie el servicio ISC DHCPv4:
>sudosystemctl enable --now dhcpd
14.4 Configuración del servidor ISC DHCPv6 #
La configuración de ISC DHCPv6 proporciona asignación de direcciones IPv6 e información de archivos de arranque mediante la correspondencia de clases de proveedores con la gestión adecuada de la opción de DHCPv6.
Configure el servidor ISC DHCPv6:
>sudocat > /etc/dhcpd6.conf << 'EOF'# /etc/dhcpd6.conf # # Sample DHCPv6 configuration file for ISC dhcpd # # *** PLEASE CONFIGURE IT FIRST *** # # Don't forget to set the DHCPD6_INTERFACE in the # /etc/sysconfig/dhcpd file. # # if you want to use dynamical DNS updates, you should first # read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt ddns-updates off; # Use this to enable / disable dynamic dns updates globally. ddns-update-style none; # IPv6 address valid lifetime # (at the end the address is no longer usable by the client) # (set to 30 days, the usual IPv6 default) default-lease-time 7200; # IPv6 address preferred lifetime # (at the end the address is deprecated, i.e., the client should use # other addresses for new connections) # (set to 7 days, the usual IPv6 default) preferred-lifetime 3600; ## ## PXE / HTTP boot option declarations ## # The dhcp6 option 16 is in fact an: # { uint32 enterprise-number, array of { uint16 len, string tag} vendor-class-data } # this declaration is using the whole option data as string for substring match: option dhcp6.vendor-class-as-string code 16 = string; # this declaration is using the enterprise-number with 1st tag length and string: option dhcp6.vendor-class-en-len-tag code 16 = {integer 32, integer 16, string}; class "pxeclients" { # PXEClient:Arch:00000:UNDI:002001 # note: +6 to skip the enterprise-number+len until the PXEClient string match substring (option dhcp6.vendor-class-as-string, 6, 20); } class "httpclients" { # HTTPClient:Arch:00016:UNDI:003001 # note: +6 to skip the enterprise-number+len until the HTTPClient string match substring (option dhcp6.vendor-class-as-string, 6, 21); } ## ## PXE / HTTP boot subclass request matches ## subclass "pxeclients" "PXEClient:Arch:00000" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0"; } subclass "pxeclients" "PXEClient:Arch:00007" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "pxeclients" "PXEClient:Arch:0000e" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf"; } subclass "pxeclients" "PXEClient:Arch:00011" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi"; } subclass "httpclients" "HTTPClient:Arch:00016" { option dhcp6.vendor-class-en-len-tag 343 10 "HTTPClient"; option dhcp6.bootfile-url "http://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "httpclients" "HTTPClient:Arch:00019" { option dhcp6.vendor-class-en-len-tag 343 10 "HTTPClient"; option dhcp6.bootfile-url "http://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi"; } ## ## Subnet declaration for the pxe network ## subnet6 2001:db8:0:1::/64 { authoritative; range6 2001:db8:0:1:d:: 2001:db8:0:1:d::ffff; option dhcp6.sntp-servers 2001:db8:0:1::1; option dhcp6.name-servers 2001:db8:0:1::200; option dhcp6.domain-search "example.net"; } EOFConfigure la interfaz de DHCPv6 en sysconfig:
>sudoecho 'DHCPD6_INTERFACE="eno1"' >> /etc/sysconfig/dhcpdPruebe la configuración de DHCPv6:
>sudodhcpd -6 -t -cf /etc/dhcpd6.confHabilite e inicie el servicio ISC DHCPv6:
>sudosystemctl enable --now dhcpd6
14.5 Verificación de la configuración de ISC DHCP #
Pruebe la funcionalidad del servidor ISC DHCP para garantizar una configuración de red adecuada y la entrega de archivos de arranque a clientes PXE.
Compruebe el estado del servicio ISC DHCPv4:
>systemctl status dhcpdCompruebe el estado del servicio ISC DHCPv6:
>systemctl status dhcpd6Verifique la vinculación de puertos DHCP:
>ss -ulnp | grep -E ":67|:547"Consulte los registros de DHCP:
>journalctl -u dhcpd -fCompruebe las concesiones de DHCP activas:
>cat /var/lib/dhcp/dhcpd.leasesSupervise la actividad de DHCPv6:
>journalctl -u dhcpd6 -f
14.6 Solución de problemas de configuración de ISC DHCP #
Estos son los problemas comunes al configurar servidores ISC DHCP para entornos de arranque PXE.
14.6.1 Problemas de configuración y servicio #
Los servicios ISC DHCP pueden no iniciarse debido a errores de sintaxis de configuración o problemas de vinculación de interfaz.
Pruebe la sintaxis de configuración de DHCPv4:
>sudodhcpd -t -cf /etc/dhcpd.confPruebe la sintaxis de configuración de DHCPv6:
>sudodhcpd -6 -t -cf /etc/dhcpd6.confCompruebe la configuración de la interfaz:
>cat /etc/sysconfig/dhcpdVerifique el estado de la interfaz de red:
>ip addr show eno1Compruebe si hay conflictos de puerto:
>ss -ulnp | grep :67Consulte los registros de servicio detallados:
>journalctl -u dhcpd -xe
14.6.2 Problemas de asignación de concesión de DHCP #
Puede que los clientes no reciban direcciones IP debido a problemas de la configuración de subred o problemas de autorización.
Compruebe la configuración de la subred y el intervalo:
>grep -A 10 "subnet\|range" /etc/dhcpd.confVerifique la configuración autorizada:
>grep authoritative /etc/dhcpd.confSupervise las asignaciones de concesión en tiempo real:
>tail -f /var/log/messages | grep dhcpdCompruebe en la base de datos de concesiones si hay errores:
>tail -20 /var/lib/dhcp/dhcpd.leasesPruebe manualmente la respuesta DHCP:
>dhcping -s 192.168.1.200 -h aa:bb:cc:dd:ee:ff
14.6.3 Problemas de correspondencia de clases y subclases #
Los clientes PXE pueden recibir direcciones IP, pero no pueden obtener archivos de arranque correctos debido a problemas de configuración de la correspondencia de clases.
Compruebe las definiciones de clase:
>grep -A 3 "class.*clients" /etc/dhcpd.confVerifique las entradas de subclase:
>grep -A 5 "subclass" /etc/dhcpd.confSupervise la identificación de la clase de proveedor:
>tail -f /var/log/messages | grep -E "PXEClient|HTTPClient"Pruebe la accesibilidad del archivo de arranque:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiHabilite el registro detallado:
>sudosed -i '1i\log-facility local7;' /etc/dhcpd.conf>sudosystemctl restart dhcpd
14.6.4 Problemas con la opción de clase de proveedor DHCPv6 #
Los clientes DHCP IPv6 gestionan la opción de clase de proveedor de una forma compleja que puede requerir una configuración específica para proporcionar la compatibilidad adecuada para el arranque PXE.
Compruebe las definiciones de la opción DHCPv6:
>grep -A 3 "option dhcp6" /etc/dhcpd6.confVerifique el análisis de la cadena de clase de proveedor:
>grep "substring.*6.*20\|21" /etc/dhcpd6.confSupervise la correspondencia de clases de proveedores DHCPv6:
>journalctl -u dhcpd6 | grep -i vendorCompruebe el formato bootfile-url de IPv6:
>grep "bootfile-url" /etc/dhcpd6.confVerifique la dependencia de los anuncios de router:
>systemctl status radvdPruebe la conectividad IPv6:
>ping6 2001:db8:0:1::200
14.7 Pasos siguientes #
Con los servicios ISC DHCP configurados, los clientes PXE pueden recibir la configuración de la red e información de los archivos de arranque utilizando el sistema tradicional de clases y subclases. Si bien ISC DHCP se encuentra al final de su vida útil, esta configuración proporciona compatibilidad para despliegues existentes que requieren funcionalidad de arranque PXE y HTTP en múltiples arquitecturas de cliente.
15 Validación de la configuración del servidor PXE #
En esta sección se describe cómo validar y probar la configuración completa del servidor PXE para garantizar que todos los componentes funcionen correctamente para las instalaciones de red de SUSE Linux Enterprise Server for SAP applications 16.0. Cubre la verificación del servicio, las pruebas de conectividad de red y la validación del arranque PXE de extremo a extremo.
15.1 Introducción #
Después de configurar todos los componentes del servidor PXE, incluidos los servicios de arranque TFTP, HTTP, DNS, DHCP y GRUB 2, es esencial validar que el sistema completo funcione correctamente. Esta validación garantiza que los clientes PXE puedan arrancar correctamente en el instalador Agama y realizar instalaciones basadas en red de SUSE Linux Enterprise Server for SAP applications 16.0.
15.2 Requisitos #
Todos los componentes del servidor PXE configurados y en ejecución
Sistemas cliente de prueba capaces de arrancar PXE
Conectividad de red entre el servidor PXE y los clientes
Acceso administrativo para supervisar los servicios del servidor
15.3 Validación de los servicios de servidor PXE #
Compruebe que todos los servicios esenciales del servidor PXE se están ejecutando y se han configurado correctamente antes de hacer pruebas con los clientes PXE.
Verifique el estado del servicio TFTP:
>systemctl status tftp.socketResultado esperado: el servicio debe estar activo y a la escucha en el puerto 69.
Compruebe el servicio HTTP de nginx:
>systemctl status nginxResultado esperado: el servicio debe estar activo y a la escucha en el puerto 80.
Verifique el servicio DNS (si usa dnsmasq):
>systemctl status dnsmasqResultado esperado: el servicio debe estar activo y a la escucha en el puerto 53.
Compruebe el estado del servicio DHCP (elija el servicio apropiado):
>systemctl status dhcpdPara DHCP dnsmasq:
>systemctl status dnsmasqPara DHCP Kea:
>systemctl status kea-dhcp4 kea-dhcp6Resultado esperado: el servicio DHCP debe estar activo y a la escucha en los puertos apropiados.
Verifique los anuncios de router IPv6 (si están configurados):
>systemctl status radvdResultado esperado: el servicio debe estar activo para entornos IPv6.
Compruebe el servicio NTP:
>systemctl status chronydResultado esperado: el servicio debe estar activo y sincronizado.
15.4 Prueba de conectividad de red y acceso a archivos #
Valide que los clientes PXE puedan acceder a los archivos de arranque y al contenido de instalación a través de la red utilizando los protocolos TFTP y HTTP.
Pruebe el acceso TFTP a los archivos del cargador de arranque:
>tftp localhost -c get /boot/grub2/x86_64-efi/bootx64.efi /tmp/test-bootx64.efiVerifique que el archivo se recupera:
>file /tmp/test-bootx64.efiBorre el archivo de prueba:
>rm /tmp/test-bootx64.efiPruebe el acceso HTTP a la configuración de GRUB 2:
>curl -I http://localhost/boot/grub2/grub.cfgResultado esperado: respuesta correcta de HTTP 200.
Verifique el acceso HTTP a los archivos de instalador:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.imgResultado esperado: respuesta correcta de HTTP 200 con la longitud de contenido adecuada.
Pruebe la resolución DNS (si se ha configurado el DNS local):
>nslookup pxe.example.net localhostResultado esperado: resolución de registro A y AAAA adecuada.
Verifique la navegación de directorios para ubicaciones de autoíndice:
>curl http://localhost/boot/Resultado esperado: listado de directorios que muestra los archivos de arranque.
15.5 Validación de la funcionalidad de DHCP #
Pruebe las respuestas del servidor DHCP y compruebe que se proporciona la información de arranque adecuada a los diferentes tipos de clientes.
Compruebe la vinculación de puertos DHCP:
>ss -ulnp | grep -E ":67|:547"Resultado esperado: los servicios DHCP escuchan en los puertos 67 (IPv4) y 547 (IPv6).
Supervise las solicitudes DHCP en tiempo real:
>journalctl -u dhcpd -fO para dnsmasq:
>journalctl -u dnsmasq -fDeje esto funcionando para observar la actividad de DHCP durante las pruebas.
Pruebe la respuesta DHCP usando dhcping (si está disponible):
>dhcping -s 192.168.1.200Resultado esperado: respuesta DHCP correcta del servidor.
Compruebe las concesiones de DHCP activas:
>cat /var/lib/dhcp/dhcpd.leasesO para Kea:
>cat /var/lib/kea/dhcp4.leasesResultado esperado: entradas de concesión para clientes de prueba.
15.6 Pruebas de arranque PXE de extremo a extremo #
Realice pruebas de arranque PXE completas con sistemas cliente reales para validar todo el proceso de arranque desde DHCP hasta el inicio del instalador Agama.
Prepare un sistema cliente de prueba:
Configure BIOS/UEFI para habilitar el arranque de red.
Establezca el arranque de red como primera prioridad de arranque.
Conecte el cliente a la misma red que el servidor PXE.
Consulte los registros del servidor PXE durante el arranque del cliente:
>journalctl -f | grep -E "dhcp|tftp|nginx"Arranque el cliente de prueba y observe la siguiente secuencia:
El cliente debe recibir la dirección IP a través de DHCP.
El cliente debe descargar el cargador de arranque a través de TFTP.
El menú de GRUB 2 debe aparecer con las opciones de instalación.
El kernel e initrd deben cargarse a través de HTTP.
El instalador Agama debería iniciarse correctamente.
Compruebe que la arquitectura del cliente se detecta probando diferentes tipos de cliente:
Sistemas BIOS x86_64 heredados (deberían obtener core.0)
Sistemas UEFI x86_64 (debería obtener bootx64.efi)
Sistemas UEFI aarch64 (debería obtener bootaa64.efi)
Pruebe el arranque PXE IPv6 (si IPv6 está configurado):
Habilite la configuración de la red solo IPv6 en el cliente de prueba.
Verifique la asignación de direcciones DHCPv6.
Confirme la entrega de bootfile-url IPv6.
15.7 Validación de la funcionalidad del instalador Agama #
Compruebe que el instalador Agama se inicia correctamente y puede acceder a los orígenes de instalación para completar las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0.
Verifique la accesibilidad de la interfaz web de Agama:
Durante el arranque del cliente, anote la dirección IP asignada y acceda a:
http://CLIENT_IP_ADDRESS
Resultado esperado: la interfaz Web de Agama debería cargarse correctamente.
Compruebe los registros del instalador Agama en el cliente:
Cambie a la consola (Alt+F2) y ejecute:
#journalctl -u agama-web-server -fResultado esperado: no hay errores críticos en el inicio de Agama.
Verifique la accesibilidad del origen de instalación:
Para instalaciones ISO completas, compruebe el acceso al repositorio:
#curl -I http://192.168.1.200/install/SLES-16.0/x86_64/Resultado esperado: respuesta correcta de HTTP 200 con listado de directorios.
Pruebe la capacidad de instalación del paquete:
En la interfaz de Agama, compruebe que:
El sistema puede detectar los discos disponibles.
No se requiere ninguna configuración de red.
Se puede acceder al repositorio de paquetes.
La instalación puede continuar hasta su finalización.
15.8 Solución de problemas de fallos de validación #
Estos son los problemas comunes durante la validación del servidor PXE y los pasos para solucionarlos.
15.8.1 Fallos en la asignación de DHCP #
Los clientes no reciben direcciones IP durante el arranque PXE.
Compruebe si hay conflictos del servicio DHCP:
>ss -ulnp | grep :67Verifique que la interfaz de red esté activa:
>ip addr show eno1Compruebe la disponibilidad del intervalo de DHCP:
>nmap -sn 192.168.1.100-199Consulte en los registros de DHCP si hay errores:
>journalctl -u dhcpd | tail -50
15.8.2 Errores de entrega del archivo de arranque #
Los clientes reciben direcciones IP, pero no pueden descargar los archivos de arranque.
Verifique que se puede acceder al servicio TFTP:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiCompruebe los permisos del archivo:
>ls -la /srv/tftpboot/boot/grub2/x86_64-efi/Consulte los registros de acceso de TFTP:
>journalctl -u tftp.socket -fVerifique que se detecta la arquitectura del cliente:
>grep -E "PXEClient|HTTPClient" /var/log/messages
15.8.3 Fallos de inicio del instalador Agama #
Los archivos de arranque se cargan correctamente, pero el instalador Agama no se inicia.
Compruebe el acceso HTTP a los archivos de instalador:
>curl -I http://192.168.1.200/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.imgCompruebe la sintaxis del parámetro del kernel en la configuración de GRUB 2:
>grep "root=live:" /srv/tftpboot/boot/grub2/menu.cfgSupervise el proceso de arranque del cliente:
>journalctl -f | grep -E "kernel|initrd|agama"Compruebe la persistencia de la configuración de red:
#ip addr show
15.9 Lista de verificación para validar el servidor PXE #
Utilice esta lista para verificar sistemáticamente todos los aspectos de la configuración de su servidor PXE.
| Componente | Paso de validación | Estado |
|---|---|---|
| Servicio TFTP | Servicio activo, puerto 69 a la escucha, archivos accesibles | ☐ |
| Servicio HTTP | nginx activo, puerto 80 a la escucha, archivos de instalador accesibles | ☐ |
| Servicio DNS | La resolución de nombres de host funciona, puerto 53 a la escucha | ☐ |
| Servicio DHCP | La asignación de IP funciona, las opciones de arranque se entregan | ☐ |
| Configuración de GRUB 2 | El menú se carga, la detección de arquitectura funciona | ☐ |
| Compatibilidad con IPv6 | Anuncios de router activos, DHCPv6 funciona | ☐ |
| Arranque PXE | El cliente arranca correctamente, recibe el cargador de arranque correcto | ☐ |
| Instalador Agama | El instalador se inicia, interfaz web accesible | ☐ |
| Origen de la instalación | Repositorio accesible, paquetes instalables | ☐ |
| Persistencia de la red | La configuración de red se mantiene durante la instalación | ☐ |
15.10 Conclusión de la validación #
Un servidor PXE debidamente validado debe demostrar una funcionalidad completa y correcta desde el arranque de la red del cliente hasta el inicio del instalador Agama. Todos los servicios deben funcionar sin errores y los clientes deben poder completar las instalaciones de SUSE Linux Enterprise Server for SAP applications 16.0 a través de la red. Las pruebas de validación periódicas garantizan la fiabilidad continua de la infraestructura PXE para implementaciones automatizadas.
16 Información legal #
Copyright© 2006–2025 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Esta información de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.