Vai al contenutoNaviga tra le pagine: pagina precedente [tasto di scelta p]/pagina successiva [tasto di scelta n]
documentation.suse.com / Documentazione di SUSE Linux Enterprise Server / Guida alla distribuzione / Configurazione di un server di installazione / Configurazione di un UEFI HTTP Boot server
Si applica a SUSE Linux Enterprise Server 15 SP3

18 Configurazione di un UEFI HTTP Boot server

In questo capitolo viene descritto come configurare un UEFI HTTP Boot server.

18.1 Introduzione

L'avvio HTTP combina DHCP, DNS e HTTP per consentire l'avvio e la distribuzione di sistemi nella rete. È possibile utilizzare l'avvio HTTP come meccanismo sostitutivo a prestazioni elevate di PXE. L'avvio HTTP consente l'avvio di un server da un URI su HTTP, per il trasferimento rapido di file di grandi dimensioni come il kernel Linux e il file system root dai server esterni alla rete locale.

18.1.1 Configurazione del computer client

L'abilitazione dell'avvio HTTP su un computer client fisico varia in base all'hardware specifico. Consultare la documentazione per ulteriori informazioni su come abilitare l'avvio HTTP sul proprio computer.

18.1.2 Preparazione

Per la configurazione descritta in questo documento vengono utilizzate come esempio le sottoreti IP 192.168.111.0/24 (IPv4) e 2001:db8:f00f:cafe::/64 (IPv6) e gli indirizzi IP del server sono 192.168.111.1(IPv4) e 2001:db8:f00f:cafe::1/64 (IPv6). Modificare questi valori in base alla configurazione specifica.

Installare i seguenti pacchetti sul computer che si intende utilizzare come server di avvio HTTP: dhcp-server, apache2 (oppure lighttpd), e dnsmasq.

18.2 Configurazione del server

18.2.1 Server DNS

La configurazione del server DNS è facoltativa, ma consente di assegnare un nome intuitivo al server di avvio HTTP. Per configurare il server DNS, aggiungere quanto riportato di seguito al file /etc/dnsmasq.conf:

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

Assegnare un nome di dominio agli indirizzi IP nel file /etc/dnsmasq.d/hosts.conf:

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

Avviare il server DNS.

systemctl start dnsmasq
Nota
Nota: utilizzo del boot loader shim

Per via di una modifica in UEFI 2.7, è consigliabile utilizzare un boot loader shim di SLE 15 o versione successiva per evitare potenziali errori causati dal nodo DNS aggiuntivo.

18.2.1.1 Configurazione del server DHCPv4

Prima di configurare i server DHCP, specificarne l'interfaccia di rete in /etc/sysconfig/dhcpd:

DHCPD_INTERFACE="eth0"
DHCPD6_INTERFACE="eth0"

In questo modo i server DHCP forniscono il servizio solo sull'interfaccia eth0.

Per configurare un server DHCPv4 per l'avvio PXE e l'avvio HTTP, aggiungere la seguente configurazione al file /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";
    }
}

Il server DHCPv4 deve utilizzare il parametro HTTPClient per l'ID classe fornitore, poiché il client lo utilizza per identificare un'offerta di avvio HTTP.

Avviare il daemon DHCP:

systemctl start dhcpd

18.2.1.2 Configurazione del server DHCPv6

Per configurare il server DHCPv6, aggiungere la seguente configurazione al file /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";
}

Questa configurazione definisce il tipo di URL di avvio, la classe fornitore e altre opzioni necessarie. In modo analogo alle impostazioni DHCPv4, è necessario fornire l'URL di avvio, che deve includere un indirizzo IPv6. È inoltre necessario specificare l'opzione di classe fornitore. In DHCPv6 è costituita dal numero dell'azienda e dai dati della classe fornitore (lunghezza e contenuto). Poiché il driver di avvio HTTP ignora il numero dell'azienda, è possibile impostarlo su 0. Il contenuto dei dati della classe fornitore deve essere HTTPClient; in caso contrario, il client ignora l'offerta.

L'implementazione di avvio HTTP precedente, che non segue l'RFC 3315, richiede una configurazione diversa:

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

Avviare il daemon dhcpv6.

systemctl start dhcpd6
18.2.1.2.1 Configurazione del server DHCPv6 per l'avvio PXE e HTTP

Utilizzando la seguente configurazione, è possibile configurare il server DHCPv6 per l'avvio PXE e 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";
	}
}

È inoltre possibile abbinare la classe fornitore a una specifica architettura, come indicato di seguito:

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 questo esempio, HTTPClient:Arch:00016 fa riferimento a un client di avvio HTTP AMD64/Intel 64. Questa configurazione consente al server di gestire contemporaneamente varie architetture.

18.2.1.2.2 Configurazione del firewall

Se nel firewall vengono rilasciati pacchetti DHCPv6 dal filtro RP, controllare il relativo registro. Se contiene la voce rpfilter_DROP, disabilitare il filtro mediante la seguente configurazione in /etc/firewalld/firewalld.conf:

IPv6_rpfilter=no

18.2.1.3 Distribuzione di un server TFTP (facoltativa)

Per fornire supporto per l'avvio PXE e HTTP, distribuire un server TFTP. Installare il pacchetto tftp e avviare il servizio:

 systemctl start tftp.socket
systemctl start tftp.service

È inoltre necessario installare un pacchetto tftpboot-installation specifico per l'utilizzo con l'avvio PXE. Eseguire il comando zypper se tftpboot per un elenco dei pacchetti tftp-installation disponibili, quindi installare il pacchetto per l'architettura e la versione del sistema desiderate, ad esempio tftpboot-installation-SLE-15-SP3-x86_64 Ad esempio: tftpboot-installation-SLE-VERSIONE-x86_64 (sostituire VERSIONE con la versione effettiva). Copiare il contenuto della directory SLE-VERSIONE-x86_64 nella directory root del server TFTP:

Per ulteriori informazioni, fare riferimento a /usr/share/tftpboot-installation/SLE-VERSIONE-x86_64/README

18.2.1.4 Configurazione del server HTTP

Copiare l'intero contenuto della prima immagine ISO del sistema nella directory /srv/www/htdocs/sle/. Modificare quindi il file /srv/www/htdocs/sle/grub.cfg. Utilizzare il seguente esempio come riferimento:

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 Configurazione di lighttpd

Per abilitare il supporto per IPv4 e IPv6 in lighttpd, modificare /etc/lighttpd/lighttpd.conf nel modo seguente:

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

Avviare il daemon lighttpd:

systemctl start lighttpd
18.2.1.4.2 Configurazione di apache2

Apache non richiede configurazioni aggiuntive. Avviare il daemon apache2:

systemctl start apache2

18.2.1.5 Abilitazione del supporto SSL per il server HTTP (facoltativa)

Per utilizzare l'avvio HTTPS, è necessario convertire un certificato server esistente nel formato DER ed eseguirne la registrazione nel firmware del client.

Presupponendo che si disponga di un certificato installato nel server, convertirlo nel formato DER per l'utilizzo con il client mediante il seguente comando:

openssl x509 -in CERTIFICATE.crt -outform der -out CERTIFICATE.der
18.2.1.5.1 Registrazione del certificato server nel firmware del client

La procedura esatta per registrare il certificato convertito varia in base all'implementazione specifica del firmware del client. Per alcuni componenti hardware è necessario registrare il certificato manualmente nell'interfaccia utente del firmware mediante un dispositivo di memorizzazione esterno contenente il certificato. I computer con supporto Redfish possono registrare il certificato in remoto. Per ulteriori informazioni sulla registrazione dei certificati, consultare la documentazione dei componenti hardware specifici.

18.2.1.5.2 Abilitazione del supporto SSL in lighttpd

Poiché per lighttpd è necessario che la chiave privata e il certificato si trovino nello stesso file, unificarli mediante il seguente comando:

cat CERTIFICATE.crt server.key > CERTIFICATE.pem

Copiare CERTIFICATO.pem nella directory /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

Accertarsi che mod_openssl sia elencato nella sezione server.modules del file /etc/lighttpd/modules.conf, ad esempio:

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

Aggiungere le seguenti righe alla sezione SSL Support nel file /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"
}

Riavviare lighttpd per attivare il supporto SSL:

systemctl restart lighttpd
18.2.1.5.3 Abilitazione del supporto SSL in Apache

Aprire il file /etc/sysconfig/apache2 e aggiungere il flag SSL come indicato di seguito:

APACHE_SERVER_FLAGS="SSL"

Accertarsi che il modulo ssl sia elencato in APACHE_MODULES, ad esempio:

Copiare quindi la chiave privata e il certificato nella directory /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/

Creare la configurazione vhost ssl.

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

Modificare /etc/apache2/vhosts.d/vhost-ssl.conf per cambiare la chiave privata e il certificato:

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

Riavviare apache per attivare il supporto SSL:

systemctl restart apache2
18.2.1.5.4 Modifica della configurazione DHCP

Sostituire il prefisso http:// con https:// in dhcpd.conf/dhcpd6.conf e riavviare il server DHCP.

systemctl restart dhcpd
systemctl restart dhcpd6

18.3 Avvio del client tramite avvio HTTP

Se il firmware supporta già l'avvio HTTP, collegare il cavo e scegliere l'opzione di avvio corretta.