Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Documentation de SUSE Linux Enterprise Server / Guide de déploiement / Configuration d'un serveur d'installation / Configuration d'un serveur de démarrage HTTP UEFI
S'applique à SUSE Linux Enterprise Server 15 SP4

18 Configuration d'un serveur de démarrage HTTP UEFI

Ce chapitre décrit comment installer et configurer un serveur de démarrage HTTP UEFI.

18.1 Introduction

Le démarrage HTTP associe DHCP, DNS et HTTP pour permettre l'amorçage et le déploiement de systèmes via le réseau. Le démarrage HTTP peut être utilisé comme solution de remplacement haute performance pour PXE. Le démarrage HTTP permet d'amorcer un serveur à partir d'un URI via HTTP, en transférant rapidement des fichiers volumineux, tels que le kernel Linux et le système de fichiers racine à partir de serveurs situés en dehors de votre réseau local.

18.1.1 Configuration de la machine cliente

L'activation du démarrage HTTP sur une machine cliente physique dépend de votre matériel. Pour plus d'informations sur l'activation du démarrage HTTP sur votre machine, consultez la documentation.

18.1.2 Préparation

La configuration décrite ici utilise les sous-réseaux IP 192.168.111.0/24 (IPv4) et 2001:db8:f00f:cafe::/64 (Ipv6) et les adresses IP serveur sont 192.168.111.1 (IPv4) et 2001:db8:f00f:cafe::1/64 (IPv6), à titre d'exemple. Ajustez ces valeurs en fonction de votre configuration spécifique.

Installez les paquetages suivants sur la machine que vous envisagez d'utiliser comme serveur de démarrage HTTP : dhcp-server, apache2 (ou lighttpd) et dnsmasq.

18.2 Configuration du serveur

18.2.1 Serveur DNS

Bien que la configuration du serveur DNS soit facultative, elle vous permet d'assigner un nom convivial au serveur de démarrage HTTP. Pour configurer le serveur DNS, ajoutez ce qui suit au fichier /etc/dnsmasq.conf :

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

Assignez un nom de domaine aux adresses IP dans le fichier /etc/dnsmasq.d/hosts.conf :

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

Démarrez le serveur DNS.

systemctl start dnsmasq
Note
Note : utilisation du chargeur d'amorçage de module d'interface (shim)

En raison d'un changement dans UEFI 2.7, nous vous recommandons d'utiliser un chargeur d'amorçage de module d'interface à partir de SLE 15 ou version plus récente, pour éviter des erreurs potentielles causées par le noeud DNS supplémentaire.

18.2.1.1 Configuration du serveur DHCPv4

Avant de configurer les serveurs DHCP, spécifiez leur interface réseau dans /etc/sysconfig/dhcpd :

DHCPD_INTERFACE="eth0"
DHCPD6_INTERFACE="eth0"

De cette façon, les serveurs DHCP fournissent le service sur l'interface eth0 uniquement.

Pour configurer un serveur DHCPv4 en vue du démarrage PXE et HTTP, ajoutez la configuration suivante au fichier /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";
    }
}

Notez que le serveur DHCPv4 doit utiliser le paramètre HTTPClient pour l'ID de classe du fournisseur, car le client l'utilise pour identifier une offre de démarrage HTTP.

Démarrez le daemon DHCP :

systemctl start dhcpd

18.2.1.2 Configuration du serveur DHCPv6

Pour configurer le serveur DHCPv6, ajoutez la configuration suivante au fichier /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";
}

Cette configuration définit le type de l'URL de démarrage, la classe du fournisseur et les autres options requises. Comme pour les paramètres DHCPv4, il est nécessaire de fournir l'URL de démarrage, qui doit présenter une adresse IPv6. Il est également nécessaire de spécifier l'option de classe du fournisseur. Dans DHCPv6, il se compose du numéro d'entreprise et des données de classe du fournisseur (longueur et contenu). Étant donné que le pilote de démarrage HTTP ignore le numéro d'entreprise, vous pouvez le définir sur 0. Le contenu des données de classe du fournisseur doit être HTTPClient, sinon, le client ignore l'offre.

L'ancienne implémentation du démarrage HTTP, qui ne respecte pas la norme RFC 3315, nécessite une configuration différente :

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";
}

Démarrez le daemon dhcpv6.

systemctl start dhcpd6
18.2.1.2.1 Configuration du serveur DHCPv6 pour le démarrage PXE et HTTP

À l'aide de la configuration suivante, il est possible de configurer le serveur DHCPv6 pour le démarrage PXE et 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";
	}
}

Il est également possible de faire correspondre la classe du fournisseur à une architecture spécifique, comme suit :

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";
}

Dans cet exemple, HTTPClient:Arch:00016 fait référence à un client de démarrage HTTP AMD64/Intel 64. Cette configuration permet au serveur de servir simultanément différentes architectures.

18.2.1.2.2 Configuration du pare-feu

Si des paquets DHCPv6 sont abandonnés par le filtre RP dans le pare-feu, vérifiez son journal. S'il contient l'entrée rpfilter_DROP, désactivez le filtre à l'aide de la configuration suivante dans le fichier /etc/firewalld/firewalld.conf :

IPv6_rpfilter=no

18.2.1.3 Déploiement d'un serveur TFTP (facultatif)

Pour prendre en charge le démarrage PXE et HTTP, déployez un serveur TFTP. Installez le paquetage tftp et démarrez le service :

 systemctl start tftp.socket
systemctl start tftp.service

Vous devez également installer un paquetage tftpboot-installation spécifique à utiliser avec le démarrage PXE. Exécutez la commande zypper se tftpboot pour lister les paquetages tftp-installation disponibles, puis installez le paquetage pour la version système et l'architecture souhaitées, tel que tftpboot-installation-SLE-15-SP3-x86_64. Par exemple, tftpboot-installation-SLE-VERSION-x86_64 (remplacez VERSION par la version réelle). Copiez le contenu du répertoire SLE-VERSION-x86_64 dans le répertoire racine du serveur TFTP.

Pour plus d'informations, reportez-vous au document /usr/share/tftpboot-installation/SLE-VERSION-x86_64/README.

18.2.1.4 Configuration du serveur HTTP

Copiez tout le contenu de la première image ISO du système dans le répertoire /srv/www/htdocs/sle/. Modifiez ensuite le fichier /srv/www/htdocs/sle/grub.cfg. Utilisez l'exemple suivant comme référence :

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 Configuration de lighttpd

Pour activer la prise en charge d'IPv4 et d'IPv6 dans lighttpd, modifiez /etc/lighttpd/lighttpd.conf comme suit :

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

Démarrez le daemon lighttpd :

systemctl start lighttpd
18.2.1.4.2 Configuration d'apache2

Apache ne nécessite aucune configuration supplémentaire. Démarrez le daemon apache2 :

systemctl start apache2

18.2.1.5 Activation de la prise en charge de SSL pour le serveur HTTP (facultatif)

Pour utiliser le démarrage HTTPS, vous devez convertir un certificat de serveur existant au format DER et l'enregistrer dans le microprogramme du client.

En supposant qu'un certificat soit déjà installé sur votre serveur, convertissez-le au format DER pour l'utiliser avec le client à l'aide de la commande suivante :

openssl x509 -in CERTIFICATE.crt -outform der -out CERTIFICATE.der
18.2.1.5.1 Enregistrement du certificat de serveur dans le microprogramme client

La procédure exacte d'enregistrement du certificat converti dépend de l'implémentation spécifique du microprogramme du client. Pour certains matériels, vous devez enregistrer le certificat manuellement, via l'interface utilisateur du microprogramme, à l'aide d'un périphérique de stockage externe sur lequel se trouve le certificat. Les machines prenant en charge Redfish peuvent enregistrer le certificat à distance. Consultez la documentation de votre matériel pour plus d'informations sur l'enregistrement de certificats.

18.2.1.5.2 Activation de la prise en charge de SSL dans lighttpd

Étant donné que lighttpd a besoin de la clé privée et du certificat dans le même fichier, unifiez-les à l'aide de la commande suivante :

cat CERTIFICATE.crt server.key > CERTIFICATE.pem

Copiez CERTIFICATE.pem dans le répertoire /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

Assurez-vous que mod_openssl est répertorié dans la section server.modules du fichier /etc/lighttpd/modules.conf, par exemple :

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

Ajoutez les lignes suivantes à la section SSL Support du fichier /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"
}

Redémarrez lighttpd pour activer la prise en charge de SSL :

systemctl restart lighttpd
18.2.1.5.3 Activation de la prise en charge de SSL dans Apache

Ouvrez le fichier /etc/sysconfig/apache2 et ajoutez le drapeau SSL comme suit :

APACHE_SERVER_FLAGS="SSL"

Assurez-vous que le module ssl est répertorié dans APACHE_MODULES, par exemple :

Ensuite, copiez la clé privée et le certificat dans le répertoire /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/

Créez la configuration ssl vhost.

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

Modifiez le fichier /etc/apache2/vhosts.d/vhost-ssl.conf pour changer la clé privée et le certificat :

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

Redémarrez apache pour activer la prise en charge SSL :

systemctl restart apache2
18.2.1.5.4 Modification de la configuration DHCP

Remplacez le préfixe http:// par https:// dans le fichier dhcpd.conf/dhcpd6.conf et redémarrez le serveur DHCP.

systemctl restart dhcpd
systemctl restart dhcpd6

18.3 Amorçage du client via le démarrage HTTP

Si le microprogramme prend déjà en charge le démarrage HTTP, branchez le câble et choisissez l'option d'amorçage appropriée.