Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / SUSE Linux Enterprise Server-Dokumentation / Bereitstellungshandbuch / Einrichten eines Installationsservers / Einrichten eines UEFI HTTP-Boot-Servers
Gilt für SUSE Linux Enterprise Server 15 SP3

18 Einrichten eines UEFI HTTP-Boot-Servers

In diesem Kapitel wird beschrieben, wie Sie einen UEFI HTTP-Boot-Server einrichten und konfigurieren.

18.1 Einführung

HTTP-Boot kombiniert DHCP, DNS und HTTP, um das Booten und Bereitstellen von Systemen über das Netzwerk zu ermöglichen. HTTP-Boot kann als leistungsstarker Ersatz für PXE verwendet werden. HTTP-Boot ermöglicht das Booten eines Servers von einem URI über HTTP und damit die schnelle Übertragung großer Dateien, wie zum Beispiel des Linux-Kernels und des Root-Dateisystems, von Servern außerhalb Ihres lokalen Netzwerks.

18.1.1 Konfigurieren des Client-Rechners

Die Aktivierung von HTTP-Boot auf einem physischen Client-Rechner hängt von Ihrer spezifischen Hardware ab. In der Dokumentation finden Sie weitere Informationen zur Aktivierung von HTTP-Boot auf Ihrem Rechner.

18.1.2 Vorbereitung

Bei der hier beschriebenen Einrichtung werden die IP-Teilnetze 192.168.111.0/24 (IPv4) und 2001:db8:f00f:cafe::/64 (IPv6) verwendet. Die Server-IP-Adressen lauten beispielsweise 192.168.111.1(IPv4) und 2001:db8:f00f:cafe::1/64 (IPv6). Passen Sie diese Werte an Ihre spezifische Einrichtung an.

Installieren Sie die folgenden Pakete auf dem Rechner, den Sie als HTTP-Boot-Server verwenden möchten: dhcp-server, apache2 (oder lighttpd), und dnsmasq.

18.2 Konfigurieren des Servers

18.2.1 DNS-Server

Die Konfiguration des DNS-Servers ist zwar optional, ermöglicht aber die Vergabe eines benutzerfreundlichen Namens für den HTTP-Boot-Server. Fügen Sie zum Einrichten des DNS-Servers Folgendes zur Datei /etc/dnsmasq.conf hinzu:

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

Weisen Sie den IP-Adressen in der Datei /etc/dnsmasq.d/hosts.conf einen Domänennamen zu:

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

Starten Sie den DNS-Server.

systemctl start dnsmasq
Anmerkung
Anmerkung: Verwenden des Schnittstellenmodul-Bootloaders

Aufgrund einer Änderung in UEFI 2.7 empfehlen wir die Verwendung eines Schnittstellenmodul-Bootloaders von SLE 15 oder neuer, um mögliche Fehler durch den zusätzlichen DNS-Knoten zu vermeiden.

18.2.1.1 Konfigurieren des DHCP-Servers

Geben Sie die Netzwerkschnittstelle für die DHCP-Server in /etc/sysconfig/dhcpd an, bevor Sie sie einrichten:

DHCPD_INTERFACE="eth0"
DHCPD6_INTERFACE="eth0"

Auf diese Weise stellen die DHCP-Server den Dienst nur auf der eth0-Schnittstelle zur Verfügung.

Fügen Sie die folgende Konfiguration zur Datei /etc/dhcpd.conf hinzu, um einen DHCPv4-Server sowohl für PXE-Boot als auch für HTTP-Boot einzurichten:

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

Beachten Sie, dass der DHCPv4-Server den HTTPClient-Parameter für die ID der Herstellerklasse verwenden muss, da der Client diesen zur Identifizierung eines HTTP-Boot-Angebots verwendet.

Starten Sie den DHCP-Daemon:

systemctl start dhcpd

18.2.1.2 Konfigurieren des DHCPv6-Servers

Fügen Sie zum Einrichten des DHCPv6-Servers Folgendes zur Datei /etc/dhcpd6.conf hinzu:

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

Diese Konfiguration definiert den Typ der Boot-URL, die Herstellerklasse und andere erforderliche Optionen. Ähnlich wie bei den DHCPv4-Einstellungen ist es erforderlich, die Boot-URL anzugeben, die eine IPv6-Adresse enthalten muss. Es ist auch notwendig, die Option der Herstellerklasse anzugeben. Bei DHCPv6 besteht sie aus der Unternehmensnummer und den Daten der Herstellerklasse (Länge und Inhalt). Da der HTTP-Boot-Treiber die Unternehmensnummer ignoriert, können Sie sie auf 0 festlegen. Der Inhalt der Herstellerklassedaten muss HTTPClient lauten, da ansonsten der Client das Angebot ignoriert.

Für die ältere HTTP-Boot-Implementierung, die nicht RFC 3315 folgt, ist eine andere Konfiguration erforderlich:

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

Starten Sie den dhcpv6-Daemon.

systemctl start dhcpd6
18.2.1.2.1 Einrichten des DHCPv6-Servers für PXE- und HTTP-Boot

Mit der folgenden Konfiguration ist es möglich, den DHCPv6-Server sowohl für PXE-Boot als auch für HTTP-Boot zu konfigurieren:

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

Es ist auch möglich, die Herstellerklasse einer bestimmten Architektur zuzuordnen, und zwar wie folgt:

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

In diesem Beispiel bezieht sich HTTPClient:Arch:00016 auf einen AMD64/Intel 64 HTTP-Boot-Client. Mit dieser Konfiguration kann der Server verschiedene Architekturen gleichzeitig bedienen.

18.2.1.2.2 Konfigurieren der Firewall

Falls DHCPv6-Pakete vom RP-Filter in der Firewall verworfen werden, überprüfen Sie das Protokoll. Sollte es den Eintrag rpfilter_DROP enthalten, deaktivieren Sie den Filter mit der folgenden Konfiguration in /etc/firewalld/firewalld.conf:

IPv6_rpfilter=no

18.2.1.3 Bereitstellen eines TFTP-Servers (optional)

Stellen Sie einen TFTP-Server bereit, wenn sowohl PXE-Boot als auch HTTP-Boot unterstützt werden soll. Installieren Sie die Pakete tftp und starten Sie den Dienst:

 systemctl start tftp.socket
systemctl start tftp.service

Außerdem muss ein spezielles tftpboot-installation -Paket installiert werden, um PXE-Boot zu verwenden. Führen Sie das Kommando zypper se tftpboot aus, um die verfügbaren tftp-installation -Pakete aufzulisten. Installieren Sie dann das Paket für die gewünschte Systemversion und Architektur, z. B. tftpboot-installation-SLE-15-SP3-x86_64 Beispiel: tftpboot-installation-SLE-VERSION-x86_64 (ersetzen SieVERSION durch die tatsächliche Version). Kopieren Sie den Inhalt des Verzeichnisses SLE-VERSION-x86_64 in das Root-Verzeichnis des TFTP-Servers:

Weitere Informationen finden Sie im /usr/share/tftpboot-installation/SLE-VERSION-x86_64/README

18.2.1.4 Einrichten des HTTP-Servers

Kopieren Sie den gesamten Inhalt des ersten System-ISO-Image in das Verzeichnis /srv/www/htdocs/sle/. Bearbeiten Sie dann die Datei /srv/www/htdocs/sle/grub.cfg. Verwenden Sie das folgende Beispiel als Referenz:

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 Konfigurieren von lighttpd

Ändern Sie /etc/lighttpd/lighttpd.conf wie folgt, um die Unterstützung sowohl für IPv4 als auch für IPv6 in lighttpd zu aktivieren:

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

Starten Sie den lighttpd-Daemon:

systemctl start lighttpd
18.2.1.4.2 Konfigurieren von apache2

Für Apache ist keine zusätzliche Konfiguration erforderlich. Starten Sie den apache2-Daemon:

systemctl start apache2

18.2.1.5 Aktivieren der SSL-Unterstützung für den HTTP-Server (optional)

Zur Verwendung des HTTPS-Boot müssen Sie ein vorhandenes Serverzertifikat in das DER-Format konvertieren und in die Firmware des Clients eintragen.

Falls auf Ihrem Server bereits ein Zertifikat installiert ist, konvertieren Sie es mit folgendem Kommando in das DER-Format, damit es vom Client verwendet werden kann:

openssl x509 -in CERTIFICATE.crt -outform der -out CERTIFICATE.der
18.2.1.5.1 Tragen Sie das Serverzertifikat in der Client-Firmware ein

Die genaue Vorgehensweise zum Eintragen des konvertierten Zertifikats hängt von der spezifischen Implementierung der Firmware des Clients ab. Bei bestimmter Hardware müssen Sie das Zertifikat manuell über die Firmware-Benutzeroberfläche eintragen. Verwenden Sie dazu ein externes Speichermedium, auf dem sich das Zertifikat befindet. Rechner mit Redfish-Unterstützung können das Zertifikat im Fernverfahren eintragen. Weitere Informationen zum Eintragen von Zertifikaten finden Sie in der Dokumentation zu Ihrer spezifischen Hardware.

18.2.1.5.2 Aktivieren der SSL-Unterstützung in lighttpd

Da lighttpd den privaten Schlüssel und das Zertifikat in derselben Datei benötigt, vereinheitlichen Sie sie mit folgendem Kommando:

cat CERTIFICATE.crt server.key > CERTIFICATE.pem

Kopieren Sie CERTIFICATE.pem in das Verzeichnis /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

Vergewissern Sie sich, dass mod_openssl in der Datei /etc/lighttpd/modules.conf im Abschnitt server.modules aufgelistet ist, wie zum Beispiel:

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

Fügen Sie die folgenden Zeilen in der Datei /etc/lighttpd/lighttpd.conf zum Abschnitt SSL-Unterstützung hinzu:

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

Starten Sie lighttpd neu, um die SSL-Unterstützung zu aktivieren:

systemctl restart lighttpd
18.2.1.5.3 Aktivieren der SSL-Unterstützung in Apache

Öffnen Sie die Datei /etc/sysconfig/apache2 und fügen Sie das SSL-Flag wie folgt hinzu:

APACHE_SERVER_FLAGS="SSL"

Vergewissern Sie sich, dass das ssl-Modul in APACHE_MODULES aufgeführt ist, wie zum Beispiel:

Als Nächstes kopieren Sie den privaten Schlüssel und das Zertifikat in das Verzeichnis /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/

Erstellen Sie die ssl vhost-Konfiguration.

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

Bearbeiten Sie /etc/apache2/vhosts.d/vhost-ssl.conf, um den privaten Schlüssel und das Zertifikat zu ändern:

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

Starten Sie Apache neu, um die SSL-Unterstützung zu aktivieren:

systemctl restart apache2
18.2.1.5.4 Ändern der DHCP-Konfiguration

Ersetzen Sie in dhcpd.conf/dhcpd6.conf das Präfix http:// durch https:// und starten Sie den DHCP-Server neu.

systemctl restart dhcpd
systemctl restart dhcpd6

18.3 Booten des Client über HTTP-Boot

Wenn die Firmware bereits HTTP-Boot unterstützt, stecken Sie das Kabel ein und wählen Sie die richtige Boot-Option.