Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Server / Guia de Implantação / Configurando um servidor de instalação / Configurando um servidor de boot HTTP UEFI
Aplica-se a SUSE Linux Enterprise Server 15 SP4

18 Configurando um servidor de boot HTTP UEFI

Este capítulo descreve como instalar e configurar um servidor de boot HTTP UEFI.

18.1 Introdução

O Boot HTTP combina DHCP, DNS e HTTP para possibilitar a inicialização e a implantação de sistemas na rede. O Boot HTTP pode ser usado como um substituto de alto desempenho do PXE. O Boot HTTP permite inicializar um servidor de um URI por HTTP, transferindo rapidamente arquivos grandes, como o kernel do Linux e o sistema de arquivos raiz de servidores fora da rede local.

18.1.1 Configurando a máquina cliente

A habilitação do Boot HTTP em uma máquina cliente física depende do seu hardware específico. Consulte a documentação para obter mais informações sobre como habilitar o Boot HTTP em sua máquina específica.

18.1.2 Preparação

A configuração descrita aqui usa sub-redes com IP 192.168.111.0/24 (IPv4) e 2001:db8:f00f:cafe::/64 (IPv6), e os endereços IP de servidor são 192.168.111.1 (IPv4) e 2001:db8:f00f:cafe::1/64 (IPv6), como exemplos. Ajuste esses valores para corresponder à sua configuração específica.

Instale os seguintes pacotes na máquina que planeja usar como servidor de Boot HTTP: dhcp-server, apache2 (ou lighttpd) e dnsmasq.

18.2 Configurando o servidor

18.2.1 Servidor DNS

Embora a configuração do servidor DNS seja opcional, ela permite que você atribua um nome amigável ao servidor de Boot HTTP. Para configurar o servidor DNS, adicione o seguinte ao arquivo /etc/dnsmasq.conf:

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

Atribua um nome de domínio aos endereços IP no arquivo /etc/dnsmasq.d/hosts.conf:

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

Inicie o servidor DNS.

systemctl start dnsmasq
Nota
Nota: Usar o carregador de boot shim

Devido a uma mudança no UEFI 2.7, recomendamos o uso de um carregador de boot shim do SLE 15 ou versão mais recente para evitar possíveis erros causados pelo nó DNS adicional.

18.2.1.1 Configurando o servidor DHCPv4

Antes de configurar os servidores DHCP, especifique a interface de rede para eles em /etc/sysconfig/dhcpd:

DHCPD_INTERFACE="eth0"
DHCPD6_INTERFACE="eth0"

Dessa forma, os servidores DHCP fornecem o serviço apenas na interface eth0.

Para configurar um servidor DHCPv4 para Boot PXE e Boot HTTP, adicione a seguinte configuração ao arquivo /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";
    }
}

Observe que o servidor DHCPv4 deve usar o parâmetro HTTPClient para o ID da classe do fornecedor, pois o cliente o utiliza para identificar uma oferta de Boot HTTP.

Inicie o daemon DHCP:

systemctl start dhcpd

18.2.1.2 Configurando o servidor DHCPv6

Para configurar o servidor DHCPv6, adicione a seguinte configuração 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";
}

Essa configuração define o tipo de URL de boot, a classe do fornecedor e outras opções necessárias. Semelhante às configurações do DHCPv4, é necessário informar o URL de boot, que deve ter um endereço IPv6. Também é necessário especificar a opção de classe do fornecedor. No DHCPv6, ela consiste no número da empresa e nos dados da classe do fornecedor (tamanho e conteúdo). Como o driver de Boot HTTP ignora o número da empresa, você pode defini-lo como 0. O conteúdo dos dados da classe do fornecedor precisa ser HTTPClient; do contrário, o cliente ignorará a oferta.

A implementação do Boot HTTP mais antiga, que não segue o RFC 3315, requer uma configuração 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 o daemon dhcpv6.

systemctl start dhcpd6
18.2.1.2.1 Configurando o servidor DHCPv6 para boot PXE e HTTP

Usando a seguinte configuração, é possível definir o servidor DHCPv6 para Boot PXE e Boot 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";
	}
}

Também é possível corresponder a classe do fornecedor a uma arquitetura específica, conforme mostrado a seguir:

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

Nesse exemplo, HTTPClient:Arch:00016 refere-se a um cliente de Boot HTTP AMD64/Intel 64. Essa configuração permite que o servidor atenda a diferentes arquiteturas simultaneamente.

18.2.1.2.2 Configurando o firewall

Se os pacotes DHCPv6 forem descartados pelo filtro RP no firewall, verifique o registro dele. Se ele incluir a entrada rpfilter_DROP, desabilite o filtro usando a seguinte configuração em /etc/firewalld/firewalld.conf:

IPv6_rpfilter=no

18.2.1.3 Implantando um servidor TFTP (opcional)

Para oferecer suporte a Boot PXE e Boot HTTP, implante um servidor TFTP. Instale o tftp e inicie o serviço:

 systemctl start tftp.socket
systemctl start tftp.service

Também é necessário instalar um pacote tftpboot-installation específico para uso com Boot PXE. Execute o comando zypper se tftpboot para listar os pacotes tftp-installation disponíveis e, em seguida, instale o pacote para a versão e a arquitetura desejadas do sistema, por exemplo tftpboot-installation-SLE-15-SP3-x86_64 Por exemplo, tftpboot-installation-SLE-VERSION-x86_64 (substitua VERSÃO pela versão real). Copie o conteúdo do diretório SLE-VERSION-x86_64 para o diretório raiz do servidor TFTP:

Para obter mais informações, consulte /usr/share/tftpboot-installation/SLE-VERSÃO-x86_64/README

18.2.1.4 Configurando o servidor HTTP

Copie todo o conteúdo da imagem ISO do primeiro sistema para o diretório /srv/www/htdocs/sle/. Edite o arquivo /srv/www/htdocs/sle/grub.cfg. Use o exemplo a seguir como referência:

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 Configurando o lighttpd

Para habilitar o suporte a IPv4 e IPv6 no lighttpd, modifique /etc/lighttpd/lighttpd.conf da seguinte maneira:

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

Inicie o daemon lighttpd:

systemctl start lighttpd
18.2.1.4.2 Configurando o apache2

O Apache não requer configuração adicional. Inicie o daemon apache2:

systemctl start apache2

18.2.1.5 Habilitando o suporte SSL para o servidor HTTP (opcional)

Para usar o Boot HTTPS, você precisa converter uma certificação do servidor existente no formato DER e registrá-la no firmware do cliente.

Supondo que você já tenha um certificado instalado no servidor, converta-o no formato DER para usá-lo com o cliente executando o seguinte comando:

openssl x509 -in CERTIFICATE.crt -outform der -out CERTIFICATE.der
18.2.1.5.1 Registrar a certificação do servidor no firmware do cliente

O procedimento exato de registro do certificado convertido depende da implementação específica do firmware do cliente. Para determinados hardwares, você precisa registrar o certificado manualmente pela IU do firmware usando um dispositivo de armazenamento externo que tenha o certificado. As máquinas com suporte ao Redfish podem registrar o certificado remotamente. Consulte a documentação do seu hardware específico para obter mais informações sobre o registro de certificados.

18.2.1.5.2 Habilitando o suporte a SSL no lighttpd

Como o lighttpd precisa da chave privada e do certificado no mesmo arquivo, unifique-os usando o seguinte comando:

cat CERTIFICATE.crt server.key > CERTIFICATE.pem

Copie CERTIFICATE.pem para o diretório /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

Verifique se mod_openssl está listado na seção server.modules do arquivo /etc/lighttpd/modules.conf, por exemplo:

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

Adicione as seguintes linhas à seção SSL Support em /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 o lighttpd para ativar o suporte a SSL:

systemctl restart lighttpd
18.2.1.5.3 Habilitando o suporte a SSL no Apache

Abra o arquivo /etc/sysconfig/apache2 e adicione o flag SSL da seguinte maneira:

APACHE_SERVER_FLAGS="SSL"

Verifique se o módulo ssl está listado em APACHE_MODULES, por exemplo:

Em seguida, copie a chave privada e o certificado para o diretório /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/

Crie a configuração ssl vhost.

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

Edite /etc/apache2/vhosts.d/vhost-ssl.conf para mudar a chave privada e o certificado:

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

Reinicie o apache para ativar o suporte a SSL:

systemctl restart apache2
18.2.1.5.4 Modificar a configuração do DHCP

Substitua o prefixo http:// por https:// no dhcpd.conf/dhcpd6.conf e reinicie o servidor DHCP.

systemctl restart dhcpd
systemctl restart dhcpd6

18.3 Inicializando o cliente por boot HTTP

Se o firmware já suporta o boot HTTP, conecte o cabo e escolha a opção de boot correta.