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

15 Einrichten eines UEFI HTTP-Boot-Servers

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

15.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.

15.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.

15.1.2 Vorbereitung

Die hier beschriebene Konfiguration verwendet die IP-Teilnetze 192.168.111.0/24 (IPv4) und 2001:db8:f00f:café::/64 (IPv6), und die Server-IP-Adressen sind 192.168.111.1 (IPv4) und 2001:db8:f00f:café::1/64 (IPv6) als Beispiele. 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.

15.2 Konfigurieren des Servers

15.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.

15.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;
class "pxeclients" {
  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
  option vendor-class-identifier "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";
}
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;
}

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

15.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. In DHCPv6 besteht es 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
15.2.1.2.1 Einrichten des DHCPv6-Servers für den PXE- und HTTP-Boot

Mit der folgenden Konfiguration ist es möglich, den DHCPv6-Server sowohl für den 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.

15.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

15.2.1.3 Bereitstellen eines TFTP-Servers (optional)

Um Unterstützung für den PXE-Boot und HTTP-Boot bereitzustellen, stellen Sie einen TFTP-Server bereit. Installieren Sie tftp und starten Sie den Dienst:

 systemctl start tftp.socket
systemctl start tftp.service

Außerdem muss ein spezielles tftpboot-installation-Paket für die Verwendung mit PXE-Boot installiert werden. Führen Sie den Befehl zypper se tftpboot aus, um eine Liste der verfügbaren tftp-installation-Pakete zu erhalten, und installieren Sie dann ein Paket für die gewünschte Systemversion und -architektur, wie tftpboot-installation-SLE-15-SP3-x86_64. Verwenden Sie beispielsweise tftpboot-installation-SLE-VERSION-x86_64 (ersetzen Sie VERSION durch die jeweilige Version). Kopieren Sie den Inhalt des Verzeichnisses SLE-VERSION-x86_64 in das Root-Verzeichnis des TFTP-Servers:

cp -r /usr/share/tftpboot-installation/SLE-VERSION-x86_64 /srv/tftpboot

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

15.2.1.4 Einrichten des HTTP-Servers

Erstellen Sie das Verzeichnis sle/ unterhalb des Verzeichnisses /srv/www/htdocs/ und 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/EFI/BOOT/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 ...'
    linux /sle/boot/x86_64/loader/linux install=http://www.httpboot.local/sle
    echo 'Loading initial ramdisk ...'
    initrd /sle/boot/x86_64/loader/initrd
}

menuentry 'Installation IPv6' --class opensuse --class gnu-linux --class gnu --class os {
    set gfxpayload=keep
    echo 'Loading kernel ...'
    linux /sle/boot/x86_64/loader/linux install=install=http://www.httpboot.local/sle ipv6only=1 ifcfg=*=dhcp6,DHCLIENT6_MODE=managed
    echo 'Loading initial ramdisk ...'
    initrd /sle/boot/x86_64/loader/initrd
}
15.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
15.2.1.4.2 Konfigurieren von apache2

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

systemctl start apache2

15.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
15.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.

15.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, können Sie diese mit dem folgenden Kommando vereinen:

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 server.modules in Abschnitt /etc/lighttpd/modules.conf aufgelistet ist, wie zum Beispiel:

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

Fügen Sie die folgenden Zeilen unter SSL Support in Abschnitt /etc/lighttpd/lighttpd.conf 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
15.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
15.2.1.5.4 Ändern der DHCP-Konfiguration

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

systemctl restart dhcpd
systemctl restart dhcpd6

15.3 Booten des Client über HTTP-Boot

Wenn die Firmware bereits den HTTP-Boot unterstützt, schließen Sie das Kabel an, und wählen Sie die richtige Boot-Option.