Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Documentación de SUSE Linux Enterprise Server / Guía de distribución / Configuración de un servidor de instalación / Configuración de un servidor de arranque HTTP UEFI
Se aplica a SUSE Linux Enterprise Server 15 SP3

18 Configuración de un servidor de arranque HTTP UEFI

En este capítulo se describe cómo instalar y configurar un servidor de arranque HTTP UEFI.

18.1 Introducción

El arranque HTTP combina DHCP, DNS y HTTP para permitir el arranque y la distribución de sistemas a través de la red. El arranque HTTP se puede utilizar como sustituto de alto rendimiento de PXE. El arranque HTTP permite arrancar un servidor desde un URI a través de HTTP, transfiriendo rápidamente archivos grandes, como el núcleo de Linux y el sistema de archivos raíz, desde servidores fuera de la red local.

18.1.1 Configuración del equipo cliente

La habilitación del arranque HTTP en un equipo cliente físico depende del hardware específico. Consulte en la documentación cómo habilitar el arranque HTTP en su equipo concreto.

18.1.2 Preparación

La configuración descrita aquí utiliza las subredes IP 192.168.111.0/24 (IPv4) y 2001:db8:f00f:cafe::/64 (IPv6) y las direcciones IP del servidor son 192.168.111.1 (IPv4) y 2001:db8:f00f:cafe::1/64 (IPv6) como ejemplos. Ajuste estos valores para que coincidan con su configuración específica.

Instale los siguientes paquetes en el equipo que tiene previsto utilizar como servidor de arranque HTTP: dhcp-server, apache2 (o bien lighttpd), y dnsmasq.

18.2 Configuración del servidor

18.2.1 Servidor DNS

Aunque la configuración del servidor DNS es opcional, permite asignar un nombre fácil de usar al servidor de arranque HTTP. Para configurar el servidor DNS, añada lo siguiente al archivo /etc/dnsmasq.conf:

interface=eth0
addn-hosts=/etc/dnsmasq.d/hosts.conf

Asigne un nombre de dominio a las direcciones IP del archivo /etc/dnsmasq.d/hosts.conf:

192.168.111.1 www.httpboot.local
2001:db8:f00f:cafe::1 www.httpboot.local

Inicie el servidor DNS.

systemctl start dnsmasq
Nota
Nota: uso del cargador de arranque suplementario

Debido a un cambio en UEFI 2.7, se recomienda utilizar un cargador de arranque suplementario de SLE 15 o posterior para evitar posibles errores causados por el nodo DNS adicional.

18.2.1.1 Configuración del servidor DHCPv4

Antes de configurar los servidores DHCP, especifique la interfaz de red para ellos en /etc/sysconfig/dhcpd:

DHCPD_INTERFACE="eth0"
DHCPD6_INTERFACE="eth0"

De esta forma, los servidores DHCP proporcionan el servicio solo en la interfaz eth0.

Para configurar un servidor DHCPv4 para el arranque PXE y el arranque HTTP, añada la siguiente configuración al archivo /etc/dhcpd.conf:

option domain-name-servers 192.168.111.1;
option routers 192.168.111.1;
default-lease-time 14400;
ddns-update-style none;
  subnet 192.168.111.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.111.100 192.168.111.120;
    default-lease-time 14400;
    max-lease-time 172800;
    class "pxeclients"{
      match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
      next-server 192.168.111.1;
      filename "/bootx64.efi";
    }
    class "httpclients" {
      match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";
      option vendor-class-identifier "HTTPClient";
      filename "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi";
    }
}

Tenga en cuenta que el servidor DHCPv4 debe utilizar el parámetro HTTPClient para el ID de clase de proveedor, ya que el cliente lo utiliza para identificar una oferta de arranque HTTP.

Inicie el daemon DHCP:

systemctl start dhcpd

18.2.1.2 Configuración del servidor DHCPv6

Para configurar el servidor DHCPv6, añada la siguiente configuración a /etc/dhcpd6.conf:

option dhcp6.bootfile-url code 59 = string;
option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
subnet6 2001:db8:f00f:cafe::/64 {
        range6 2001:db8:f00f:cafe::42:10 2001:db8:f00f:cafe::42:99;
        option dhcp6.bootfile-url "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi";
        option dhcp6.name-servers 2001:db8:f00f:cafe::1;
        option dhcp6.vendor-class 0 10 "HTTPClient";
}

Esta configuración define el tipo de URL de arranque, la clase de proveedor y otras opciones necesarias. De forma similar a la configuración de DHCPv4, es necesario proporcionar la URL de arranque, que debe tener una dirección IPv6. También es necesario especificar la opción de clase de proveedor. En DHCPv6, está formada por el número de empresa y los datos de la clase de proveedor (longitud y contenido). Dado que el controlador de arranque HTTP ignora el número de empresa, puede definirlo en 0. El contenido de los datos de la clase de proveedor debe ser HTTPClient; de lo contrario, el cliente ignorará la oferta.

La implementación de arranque HTTP anterior, que no sigue la especificación RFC 3315, requiere una configuración diferente:

option dhcp6.bootfile-url code 59 = string;
option dhcp6.vendor-class code 16 = string;
        subnet6 2001:db8:f00f:cafe::/64 {
        range6 2001:db8:f00f:cafe::42:10 2001:db8:f00f:cafe::42:99;
        option dhcp6.bootfile-url "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi;
	option dhcp6.name-servers 2001:db8:f00f:cafe::1;
	option dhcp6.vendor-class "HTTPClient";
}

Inicie el daemon dhcpv6.

systemctl start dhcpd6
18.2.1.2.1 Configuración del servidor DHCPv6 para el arranque PXE y HTTP

Con la siguiente configuración, es posible configurar el servidor DHCPv6 para el arranque PXE y el arranque HTTP:

option dhcp6.bootfile-url code 59 = string;
option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};

subnet6 2001:db8:f00f:cafe::/64 {
        range6 2001:db8:f00f:cafe::42:10 2001:db8:f00f:cafe::42:99;

        class "PXEClient" {
	        match substring (option dhcp6.vendor-class, 6, 9);
	}

        subclass "PXEClient" "PXEClient" {
	        option dhcp6.bootfile-url "tftp://[2001:db8:f00f:cafe::1]/bootloader.efi";
	}

	class "HTTPClient"; {
	        match substring (option dhcp6.vendor-class, 6, 10);
	}

	subclass "HTTPClient" "HTTPClient" {
	        option dhcp6.bootfile-url "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi";
		option dhcp6.name-servers 2001:db8:f00f:cafe::1;
		option dhcp6.vendor-class 0 10 "HTTPClient";
	}
}

También es posible hacer coincidir la clase de proveedor con una arquitectura específica, como se indica a continuación:

class "HTTPClient" {
        match substring (option dhcp6.vendor-class, 6, 21);
	}

subclass "HTTPClient" "HTTPClient":Arch:00016 {
        option dhcp6.bootfile-url "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi";
	option dhcp6.name-servers 2001:db8:f00f:cafe::1;
	option dhcp6.vendor-class 0 10 "HTTPClient";
}

En este ejemplo, HTTPClient:Arch:00016 hace referencia a un cliente de arranque HTTP AMD64/Intel 64. Esta configuración permite que el servidor sirva a diferentes arquitecturas simultáneamente.

18.2.1.2.2 Configuración del cortafuegos

Si el filtro RP del cortafuegos descarta paquetes DHCPv6, compruebe su registro. En caso de que contenga la entrada rpfilter_DROP, inhabilite el filtro utilizando la siguiente configuración en /etc/firewalld/firewalld.conf:

IPv6_rpfilter=no

18.2.1.3 Distribución de un servidor TFTP (opcional)

Para proporcionar compatibilidad tanto con el arranque PXE como con el arranque HTTP, distribuya un servidor TFTP. Instale el paquete tftp e iniciar el servicio:

 systemctl start tftp.socket
systemctl start tftp.service

También es necesario instalar un paquete tftpboot-installation específico para utilizarlo con el arranque PXE. Ejecute el comando zypper se tftpboot para obtener una lista de los paquetes tftp-installation disponibles y, a continuación, instale el paquete para la versión y la arquitectura del sistema que desee, por ejemplo: tftpboot-installation-SLE-15-SP3-x86_64 Por ejemplo, tftpboot-installation-SLE-VERSIÓN-x86_64 (sustituya VERSIÓN por la versión real). Copie el contenido del directorio SLE-VERSIÓN-x86_64 en el directorio raíz del servidor TFTP:

Para obtener más información, consulte el archivo /usr/share/tftpboot-installation/SLE-VERSIÓN-x86_64/README

18.2.1.4 Configuración del servidor HTTP

Copie todo el contenido de la primera imagen ISO del sistema en el directorio /srv/www/htdocs/sle/. A continuación, edite el archivo /srv/www/htdocs/sle/grub.cfg. Utilice el siguiente ejemplo como referencia:

timeout=60
default=1

menuentry 'Installation IPv4' --class opensuse --class gnu-linux --class gnu --class os {
    set gfxpayload=keep
    echo 'Loading kernel ...'
    linuxefi /sle/boot/x86_64/loader/linux install=http://www.httpboot.local/sle
    echo 'Loading initial ramdisk ...'
    initrdefi /sle/boot/x86_64/loader/initrd
}

menuentry 'Installation IPv6' --class opensuse --class gnu-linux --class gnu --class os {
    set gfxpayload=keep
    echo 'Loading kernel ...'
    linuxefi /sle/boot/x86_64/loader/linux install=install=http://www.httpboot.local/sle ipv6only=1 ifcfg=*=dhcp6,DHCLIENT6_MODE=managed
    echo 'Loading initial ramdisk ...'
    initrdefi /sle/boot/x86_64/loader/initrd
}
18.2.1.4.1 Configuración de lighttpd

Para habilitar la compatibilidad con IPv4 e IPv6 en lighttpd, modifique /etc/lighttpd/lighttpd.conf de la siguiente manera:

##
## Use IPv6?
##
#server.use-ipv6 = "enable"
$SERVER["socket"] == "[::]:80" {  }

Inicie el daemon lighttpd:

systemctl start lighttpd
18.2.1.4.2 Configuración de apache2

Apache no requiere configuración adicional. Inicie el daemon apache2:

systemctl start apache2

18.2.1.5 Habilitación de la compatibilidad con SSL para el servidor HTTP (opcional)

Para utilizar el arranque HTTPS, debe convertir un certificado de servidor existente al formato DER e inscribirlo en el firmware del cliente.

Suponiendo que ya tenga un certificado instalado en el servidor, conviértalo al formato DER para utilizarlo con el cliente mediante el siguiente comando:

openssl x509 -in CERTIFICATE.crt -outform der -out CERTIFICATE.der
18.2.1.5.1 Inscripción del certificado del servidor en el firmware del cliente

El procedimiento exacto para inscribir el certificado convertido depende de la implementación específica del firmware del cliente. Para cierto hardware, debe inscribir el certificado manualmente a través de la interfaz de usuario del firmware mediante un dispositivo de almacenamiento externo con el certificado. Los equipos compatibles con Redfish pueden inscribir el certificado de forma remota. Consulte la documentación de su hardware específico para obtener más información sobre cómo inscribir certificados.

18.2.1.5.2 Habilitación de la compatibilidad con SSL en lighttpd

Dado que lighttpd necesita la clave privada y el certificado en el mismo archivo, unifíquelos mediante el siguiente comando:

cat CERTIFICATE.crt server.key > CERTIFICATE.pem

Copie CERTIFICADO.pem en el directorio /etc/ssl/private/.

cp server-almighty.pem /etc/ssl/private/
chown -R root:lighttpd /etc/ssl/private/server-almighty.pem
chmod 640 /etc/ssl/private/server-almighty.pem

Asegúrese de que mod_openssl aparece en la sección server.modules del archivo /etc/lighttpd/modules.conf, por ejemplo:

server.modules = (
  "mod_access",
  "mod_openssl",
)

Añada las siguientes líneas a la sección SSL Support de /etc/lighttpd/lighttpd.conf:

# IPv4
$SERVER["socket"] == ":443" {
    ssl.engine                 = "enable"
    ssl.pemfile                = "/etc/ssl/private/server-almighty.pem"
}
# IPv6
$SERVER["socket"] == "[::]:443" {
    ssl.engine                 = "enable"
    ssl.pemfile                = "/etc/ssl/private/server-almighty.pem"
}

Reinicie lighttpd para activar la compatibilidad con SSL:

systemctl restart lighttpd
18.2.1.5.3 Habilitación de la compatibilidad con SSL en Apache

Abra el archivo /etc/sysconfig/apache2 y añada el indicador SSL de la siguiente manera:

APACHE_SERVER_FLAGS="SSL"

Asegúrese de que el módulo ssl aparece en APACHE_MODULES, por ejemplo:

A continuación, copie la clave privada y el certificado en el directorio /etc/apache2/.

cp server.key /etc/apache2/ssl.key/
chown wwwrun /etc/apache2/ssl.key/server.key
chmod 600 /etc/apache2/ssl.key/server.key
cp server.crt /etc/apache2/ssl.crt/

Cree la configuración de ssl vhost.

cd /etc/apache2/vhosts.d
cp vhost-ssl.template vhost-ssl.conf

Edite /etc/apache2/vhosts.d/vhost-ssl.conf para cambiar la clave privada y el certificado:

SSLCertificateFile /etc/apache2/ssl.crt/server.crt
 SSLCertificateKeyFile /etc/apache2/ssl.key/server.key

Reinicie apache para activar la compatibilidad con SSL:

systemctl restart apache2
18.2.1.5.4 Modificación de la configuración de DHCP

Sustituya el prefijo http:// por https:// en dhcpd.conf/dhcpd6.conf y reinicie el servidor DHCP.

systemctl restart dhcpd
systemctl restart dhcpd6

18.3 Arranque del cliente mediante arranque HTTP

Si el firmware ya admite el arranque HTTP, conecte el cable y elija la opción de arranque correcta.