Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
109.2 Lição 1
Tópico 105: Shells e scripts do Shell
105.1 Personalizar e trabalhar no ambiente shell
  • 105.1 Lição 1
  • 105.1 Lição 2
  • 105.1 Lição 3
105.2 Editar e escrever scripts simples
  • 105.2 Lição 1
  • 105.2 Lição 2
Tópico 106: Interfaces de usuário e Desktops
106.1 Instalar e configurar o X11
  • 106.1 Lição 1
106.2 Desktops gráficos
  • 106.2 Lição 1
106.3 Acessibilidade
  • 106.3 Lição 1
Tópico 107: Tarefas administrativas
107.1 Administrar contas de usuário, grupos e arquivos de sistema relacionados
  • 107.1 Lição 1
  • 107.1 Lição 2
107.2 Automatizar e agendar tarefas administrativas de sistema
  • 107.2 Lição 1
  • 107.2 Lição 2
107.3 Localização e internacionalização
  • 107.3 Lição 1
Tópico 108: Serviços essenciais do sistema
108.1 Manutenção da data e hora do sistema
  • 108.1 Lição 1
  • 108.1 Lição 2
108.2 Log do sistema
  • 108.2 Lição 1
  • 108.2 Lição 2
108.3 Fundamentos de MTA (Mail Transfer Agent)
  • 108.3 Lição 1
108.4 Configurar impressoras e impressão
  • 108.4 Lição 1
Tópico 109: Fundamentos de Rede
109.1 Fundamentos de protocolos de internet
  • 109.1 Lição 1
  • 109.1 Lição 2
109.2 Configuração persistente de rede
  • 109.2 Lição 1
  • 109.2 Lição 2
109.3 Soluções para problemas simples de rede
  • 109.3 Lição 1
  • 109.3 Lição 2
109.4 Configurar DNS cliente
  • 109.4 Lição 1
Tópico 110: Segurança
110.1 Tarefas administrativas de segurança
  • 110.1 Lição 1
110.2 Configurar a segurança do host
  • 110.2 Lição 1
110.3 Proteção de dados com criptografia
  • 110.3 Lição 1
  • 110.3 Lição 2
How to get certified
  1. Tópico 109: Fundamentos de Rede
  2. 109.2 Configuração persistente de rede
  3. 109.2 Lição 1

109.2 Lição 1

Certificação:

LPIC-1

Versão:

5.0

Tópico:

109 Fundamentos de rede

Objetivo:

109.2 Configuração de rede persistente

Lição:

1 de 2

Introdução

Em qualquer rede TCP/IP, cada nó deve configurar seu adaptador de rede para atender aos requisitos da rede. Caso contrário, eles não poderão se comunicar uns com os outros. Portanto, o administrador do sistema deve fornecer a configuração básica para que o sistema operacional seja capaz de configurar a interface de rede apropriada, além de se identificar e identificar os recursos básicos da rede sempre que for inicializado.

As configurações de rede não são dependentes do sistema operacional, mas cada um deles tem seus próprios métodos para armazenar e aplicar essas configurações. Os sistemas Linux dependem de configurações armazenadas em arquivos de texto simples no diretório /etc para ativar a conectividade de rede durante a inicialização. Vale a pena saber como esses arquivos são usados para evitar a perda de conectividade devido a uma configuração local incorreta.

A Interface de Rede

Interface de rede é o termo pelo qual o sistema operacional se refere ao canal de comunicação configurado para funcionar com o hardware de rede conectado ao sistema, como um dispositivo ethernet ou wi-fi. A exceção é a interface loopback, usada quando o sistema operacional precisa estabelecer uma conexão consigo mesmo, mas o objetivo principal de uma interface de rede é fornecer uma rota através da qual os dados locais podem ser enviados e os dados remotos, recebidos. Se a interface de rede não estiver configurada corretamente, o sistema operacional não será capaz de se comunicar com outras máquinas na rede.

Na maioria dos casos, as configurações de interface corretas são definidas por padrão ou personalizadas durante a instalação do sistema operacional. Ainda assim, essas configurações geralmente precisam ser inspecionadas ou mesmo modificadas quando a comunicação não está funcionando corretamente ou quando o comportamento da interface requer personalização.

O Linux tem muitos comandos para listar as interfaces de rede presentes no sistema, mas nem todos estão disponíveis em todas as distribuições. O comando ip, no entanto, faz parte do conjunto básico de ferramentas de rede empacotadas com todas as distribuições Linux e pode ser usado para listar as interfaces de rede. O comando completo para mostrar as interfaces é ip link show:

$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:16:3e:8d:2b:5b brd ff:ff:ff:ff:ff:ff

Se disponível, o comando nmcli device também pode ser usado:

$ nmcli device
DEVICE      TYPE      STATE      CONNECTION
enp3s5      ethernet  connected  Gigabit Powerline Adapter
lo          loopback  unmanaged  --

Os comandos mostrados nos exemplos não modificam as configurações do sistema e, portanto, podem ser executados por um usuário sem privilégios. Ambos os comandos listam duas interfaces de rede: lo (a interface de loopback) e enp3s5 (uma interface ethernet).

Os desktops e laptops que executam Linux geralmente têm duas ou três interfaces de rede predefinidas, uma para a interface virtual de loopback e as outras atribuídas ao hardware de rede encontrado pelo sistema. Os servidores e dispositivos de rede que executam Linux, por outro lado, podem ter dezenas de interfaces de rede, mas os mesmos princípios se aplicam a todas elas. A abstração fornecida pelo sistema operacional permite a configuração de interfaces de rede usando os mesmos métodos, independentemente do hardware usado.

No entanto, é útil conhecer os detalhes sobre o hardware subjacente de uma interface para entender melhor o que está acontecendo quando a comunicação não funciona conforme o esperado. Em um sistema em que há muitas interfaces de rede disponíveis, nem sempre é óbvio saber qual delas corresponde ao wi-fi e qual corresponde à ethernet, por exemplo. Por esse motivo, o Linux usa uma convenção para a nomenclatura de interfaces que ajuda a identificar qual interface de rede corresponde a qual dispositivo e porta.

Nomes de interface

As distribuições Linux mais antigas atribuíam às interfaces de rede ethernet nomes como eth0, eth1, etc., numeradas de acordo com a ordem em que o kernel identificava os dispositivos. As interfaces wireless eram nomeadas wlan0, wlan1, etc. Esta convenção de nomenclatura, no entanto, não esclarece qual porta Ethernet específica corresponde à interface eth0, por exemplo. Dependendo de como o hardware fosse detectado, era possível inclusive que duas interfaces de rede trocassem de nome após uma reinicialização.

Para evitar essa ambigüidade, os sistemas Linux mais recentes empregam uma convenção de nomenclatura previsível para as interfaces de rede, criando uma aproximação maior entre o nome da interface e a conexão de hardware subjacente.

Nas distribuições Linux que usam o esquema de nomenclatura do systemd, todos os nomes de interfaces começam com um prefixo de dois caracteres que indica o tipo de interface:

en

Ethernet

ib

InfiniBand

sl

Serial line IP (slip)

wl

Rede de área local sem fio (WLAN)

ww

Rede de longa distância sem fio (WWAN)

De prioridade mais alta para mais baixa, as seguintes regras são usadas pelo sistema operacional para nomear e numerar as interfaces de rede:

  1. Nomear a interface de acordo com o índice fornecido pela BIOS ou pelo firmware dos dispositivos incorporados, por exemplo, eno1.

  2. Nomear a interface de acordo com o índice do slot PCI Express, conforme fornecido pela BIOS ou firmware, por exemplo, ens1.

  3. Nomear a interface de acordo com seu endereço no barramento correspondente, por exemplo, enp3s5.

  4. Nomear a interface de acordo com o endereço MAC da interface, por exemplo, enx78e7d1ea46da.

  5. Nomear a interface usando a convenção legada, por exemplo, eth0.

É correto pressupor, por exemplo, que a interface de rede enp3s5 recebeu esse nome porque não se encaixava nos dois primeiros métodos de nomenclatura, de forma que seu endereço no barramento e no slot correspondentes foi usado. O endereço do dispositivo 03:05.0, encontrado na saída do comando lspci, revela o dispositivo associado:

$ lspci | fgrep Ethernet
03:05.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet (rev 10)

As interfaces de rede são criadas pelo próprio kernel do Linux, mas existem muitos comandos que podem ser usados para interagir com elas. Normalmente, a configuração ocorre automaticamente e não há necessidade de se alterar as configurações manualmente. Ainda assim, com o nome da interface, é possível informar ao kernel como proceder para configurá-la se necessário.

Gerenciamento da interface

Ao longo dos anos, vários programas foram desenvolvidos para interagir com os recursos de rede fornecidos pelo kernel do Linux. Embora o antigo comando ifconfig ainda possa ser usado para fazer consultas e configurações de interface simples, ele agora está obsoleto devido ao seu suporte limitado a interfaces não ethernet. O ifconfig foi substituído pelo comando ip, que é capaz de gerenciar muitos outros aspectos das interfaces TCP/IP, como rotas e túneis.

Para a maioria das tarefas comuns, a riqueza de recursos do comando ip acaba sendo excessiva, e por isso existem comandos auxiliares que facilitam a ativação e configuração das interfaces de rede. Os comandos ifup e ifdown servem para configurar interfaces de rede com base nas definições de interface encontradas no arquivo /etc/network/interfaces. Embora possam ser invocados manualmente, esses comandos são, em geral, executados automaticamente durante a inicialização do sistema.

Todas as interfaces de rede gerenciadas por ifup e ifdown devem estar listadas no arquivo /etc/network/interfaces. O formato usado no arquivo é simples: as linhas que começam com a palavra auto são usadas para identificar as interfaces físicas a serem acessadas quando o ifup é executado com a opção -a. O nome da interface deve seguir a palavra auto na mesma linha. Todas as interfaces marcadas como auto são ativadas no momento da inicialização, na ordem em que estão listadas.

Warning

Os métodos de configuração de rede usados por ifup e ifdown não são padronizados em todas as distribuições Linux. O CentOS, por exemplo, mantém as configurações de interface em arquivos individuais no diretório /etc/sysconfig/network-scripts/, e o formato de configuração usado neles é ligeiramente diferente do formato usado em /etc/network/interfaces.

A configuração da interface em si é escrita em outra linha, começando com a palavra iface, seguida pelo nome da interface, o nome da família de endereços usada por ela e o nome do método empregado para configurá-la. O exemplo a seguir mostra um arquivo de configuração básico para as interfaces lo (loopback) e enp3s5:

auto lo
iface lo inet loopback

auto enp3s5
iface enp3s5 inet dhcp

A família de endereços deve ser inet para as redes TCP/IP, mas também há suporte a redes IPX (ipx) e IPv6 (inet6). As interfaces de loopback usam o método de configuração loopback. Com o método dhcp, a interface usa as configurações de IP fornecidas pelo servidor DHCP da rede. As configurações de nosso exemplo permitem a execução do comando ifup usando o nome de interface enp3s5 como argumento:

# ifup enp3s5
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp3s5/00:16:3e:8d:2b:5b
Sending on   LPF/enp3s5/00:16:3e:8d:2b:5b
Sending on   Socket/fallback
DHCPDISCOVER on enp3s5 to 255.255.255.255 port 67 interval 4
DHCPOFFER of 10.90.170.158 from 10.90.170.1
DHCPREQUEST for 10.90.170.158 on enp3s5 to 255.255.255.255 port 67
DHCPACK of 10.90.170.158 from 10.90.170.1
bound to 10.90.170.158 -- renewal in 1616 seconds.

Neste exemplo, o método escolhido para a interface enp3s5 foi dhcp, de modo que o comando ifup chamou um programa cliente DHCP para obter as configurações de IP do servidor DHCP. Da mesma forma, o comando ifdown enp3s5 pode ser usado para desativar a interface.

Nas redes sem um servidor DHCP, o método static pode ser usado e as configurações de IP fornecidas manualmente em /etc/network/interfaces. Por exemplo:

iface enp3s5 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

As interfaces que usam o método static não precisam de uma instrução auto correspondente, pois são ativadas sempre que o hardware de rede é detectado.

Se a mesma interface tiver mais de uma entrada iface, todos os endereços e opções configurados serão aplicados ao se abrir essa interface. Isso é útil para configurar endereços IPv4 e IPv6 na mesma interface, bem como para configurar diversos endereços do mesmo tipo em uma única interface.

Nomes locais e remotos

Uma configuração funcional de TCP/IP é apenas o primeiro passo para a usabilidade total da rede. Além de ser capaz de distinguir os nós da rede por seus números IP, o sistema deve poder identificá-los com nomes mais facilmente compreensíveis por seres humanos.

O nome pelo qual o sistema se identifica é personalizável e é aconselhável fazê-lo, mesmo se a máquina não for destinada a se conectar a uma rede. O nome local geralmente corresponde ao nome da rede da máquina, mas nem sempre. Se o arquivo /etc/hostname existir, o sistema operacional usará o conteúdo da primeira linha como nome local, que a partir daí é chamado simplesmente de nome do host (hostname, em inglês). As linhas que começam com # dentro de /etc/hostname são ignoradas.

O arquivo /etc/hostname pode ser editado diretamente, mas o nome de host da máquina também pode ser definido com o comando hostnamectl. Quando fornecido com o subcomando set-hostname, o comando hostnamectl pega o nome dado como argumento e o escreve em /etc/hostname:

# hostnamectl set-hostname storage
# cat /etc/hostname
storage

O nome de host (ou “hospedeiro”) definido em /etc/hostname é o nome estático, ou seja, o nome usado para inicializar o nome de host do sistema na inicialização. O nome de host estático pode ser uma string com até 64 caracteres de comprimento. No entanto, é recomendado que ele consista apenas em caracteres ASCII minúsculos e sem espaços ou pontos. Também é aconselhável limitá-lo ao formato permitido para rótulos de nomes de domínio DNS, embora esse não seja um requisito estrito.

O comando hostnamectl pode definir dois outros tipos de nomes de host além do nome de host estático:

Hostname pretty

Ao contrário do nome de host estático, o nome de host pretty pode incluir todos os tipos de caracteres especiais. Ele pode ser usado para definir um nome mais descritivo para a máquina, por exemplo “Armazenamento compartilhado da LAN”:

# hostnamectl --pretty set-hostname "LAN Shared Storage"
Hostname transiente

Usado quando o nome de host estático não está definido ou quando ele é o nome localhost padrão. O nome de host transiente é normalmente definido junto com outras configurações automáticas, mas também pode ser modificado com o comando hostnamectl, por exemplo:

# hostnamectl --transient set-hostname generic-host

Se nem a opção --pretty nem --transient forem usadas, os três tipos de nomes de host serão configurados com o nome fornecido. Para definir o nome de host estático, mas não os nomes pretty e transiente, usa-se a opção --static. Em todos os casos, somente o nome de host estático é armazenado no arquivo /etc/hostname. O comando hostnamectl também pode ser usado para exibir diversas informações descritivas e de identidade sobre o sistema em execução:

$ hostnamectl status
     Static hostname: storage
     Pretty hostname: LAN Shared Storage
  Transient hostname: generic-host
           Icon name: computer-server
             Chassis: server
          Machine ID: d91962a957f749bbaf16da3c9c86e093
             Boot ID: 8c11dcab9c3d4f5aa53f4f4e8fdc6318
    Operating System: Debian GNU/Linux 10 (buster)
              Kernel: Linux 4.19.0-8-amd64
        Architecture: x86-64

Esta é a ação padrão do comando hostnamectl, de modo que o subcomando status pode ser omitido.

Com relação ao nome dos nós remotos da rede, o sistema operacional tem duas maneiras básicas à sua disposição para combinar nomes e números IP: usar uma fonte local ou usar um servidor remoto para traduzir nomes em números IP e vice-versa. Os métodos podem ser complementares entre si e sua ordem de prioridade é definida no arquivo de configuração Name Service Switch: /etc/nsswitch.conf. Este arquivo é usado pelo sistema e pelos aplicativos para determinar não apenas as fontes para as correspondências de nome-IP, mas também as fontes das quais obter informações de nome-serviço em uma variedade de categorias, chamadas bancos de dados.

O banco de dados hosts mantém um registro do mapeamento entre nomes e números de host. A linha dentro de /etc/nsswitch.conf que começa com hosts define os serviços responsáveis por fornecer as associações para ele:

hosts: files dns

Neste exemplo, files e dns são os nomes de serviços que especificam como o processo de pesquisa de nomes de host funciona. Primeiro, o sistema procura por correspondências em arquivos locais e, em seguida, solicita correspondências ao serviço DNS.

O arquivo local do banco de dados hosts é /etc/hosts, um arquivo de texto simples que associa endereços IP a nomes de host, com uma linha por endereço IP, por exemplo:

127.0.0.1 localhost

O número IP 127.0.0.1 é o endereço padrão da interface de loopback, daí sua associação com o nome localhost.

Também é possível vincular aliases opcionais ao mesmo IP. Os aliases podem fornecer grafias alternativas, nomes de host mais curtos, e devem ser adicionados no final da linha, por exemplo:

192.168.1.10 foo.mydomain.org foo

As regras de formatação para o arquivo /etc/hosts são:

  • Os campos da entrada são separados por qualquer número de espaços em branco e/ou caracteres de tabulação.

  • O texto que começa em um caractere # e vai até o final da linha é um comentário e é ignorado.

  • Os nomes de host podem conter apenas caracteres alfanuméricos, sinais de menos e pontos.

  • Os nomes de host devem começar com um caractere alfabético e terminar com um caractere alfanumérico.

Também podemos adicionar endereços IPv6 a /etc/hosts. A seguinte entrada se refere ao endereço de loopback IPv6:

::1 localhost ip6-localhost ip6-loopback

Após a especificação do serviço files, a especificação dns diz ao sistema para solicitar a um serviço DNS a associação nome/IP desejada. O conjunto de rotinas responsáveis por este método é chamado de resolver (resolvedor) e seu arquivo de configuração é /etc/resolv.conf. O exemplo a seguir mostra um /etc/resolv.conf genérico contendo entradas para os servidores DNS públicos do Google:

nameserver 8.8.4.4
nameserver 8.8.8.8

Como mostrado no exemplo, a palavra-chave nameserver indica o endereço IP do servidor DNS. Apenas um servidor de nomes é necessário, mas é possível informar até três deles. Os suplementares serão usados como reserva. Se nenhuma entrada de servidor de nomes estiver presente, o comportamento padrão é usar o servidor de nomes da máquina local.

O resolver pode ser configurado para adicionar automaticamente o domínio aos nomes antes de consultá-los no servidor de nomes. Por exemplo:

nameserver 8.8.4.4
nameserver 8.8.8.8
domain mydomain.org
search mydomain.net mydomain.com

A entrada domain define mydomain.org como o nome de domínio local; assim, as consultas por nomes dentro deste domínio podem usar nomes curtos relativos ao domínio local. A entrada search tem uma finalidade semelhante, mas aceita uma lista de domínios a experimentar quando um nome curto é fornecido. Por padrão, ela contém apenas o nome de domínio local.

Exercícios Guiados

  1. Quais comandos podem ser usados para listar os adaptadores de rede presentes no sistema?

  2. Qual é o tipo de adaptador de rede cujo nome de interface é wlo1?

  3. Qual o papel do arquivo /etc/network/interfaces durante o tempo de inicialização?

  4. Qual entrada de /etc/network/interfaces configura a interface eno1 para obter suas configurações de IP com DHCP?

Exercícios Exploratórios

  1. Como o comando hostnamectl poderia ser usado para alterar apenas o nome de host estático da máquina local para firewall?

  2. Quais detalhes além dos nomes de host podem ser modificados pelo comando hostnamectl?

  3. Qual entrada de /etc/hosts associa os nomes firewall e router com o IP 10.8.0.1?

  4. Como o arquivo /etc/resolv.conf poderia ser modificado de maneira a enviar todas as solicitações de DNS para 1.1.1.1?

Resumo

Esta lição trata de como fazer mudanças persistentes na configuração da rede local usando arquivos e comandos padrão do Linux. O Linux espera que as configurações de TCP/IP estejam em locais específicos e pode ser necessário alterá-las quando as configurações padrão não forem apropriadas. A lição abrange os seguintes tópicos:

  • Como o Linux identifica as interfaces de rede.

  • Ativação da interface durante a inicialização e configuração de IP básica.

  • Como o sistema operacional associa nomes a hosts.

Os conceitos, comandos e procedimentos abordados foram:

  • Convenções de nomenclatura de interfaces.

  • Listagem de interfaces de rede com ip e nmcli.

  • Ativação da interface com ifup e ifdown.

  • Comando hostnamectl e o arquivo /etc/hostname.

  • Arquivos /etc/nsswitch.conf, /etc/hosts e /etc/resolv.conf.

Respostas aos Exercícios Guiados

  1. Quais comandos podem ser usados para listar os adaptadores de rede presentes no sistema?

    Os comandos ip link show, nmcli device e o comando legado ifconfig.

  2. Qual é o tipo de adaptador de rede cujo nome de interface é wlo1?

    O nome começa com wl, portanto trata-se de um adaptador LAN sem fio.

  3. Qual o papel do arquivo /etc/network/interfaces durante o tempo de inicialização?

    Ele contém as configurações utilizadas pelo comando ifup para ativar as interfaces correspondentes durante o tempo de inicialização.

  4. Qual entrada de /etc/network/interfaces configura a interface eno1 para obter suas configurações de IP com DHCP?

    A linha iface eno1 inet dhcp.

Respostas aos Exercícios Exploratórios

  1. Como o comando hostnamectl poderia ser usado para alterar apenas o nome de host estático da máquina local para firewall?

    Com a opção --static: hostnamectl --static set-hostname firewall.

  2. Quais detalhes além dos nomes de host podem ser modificados pelo comando hostnamectl?

    O hostnamectl também pode definir o ícone padrão da máquina local, o tipo de chassi, a localização e o ambiente de implantação.

  3. Qual entrada de /etc/hosts associa os nomes firewall e router com o IP 10.8.0.1?

    A linha 10.8.0.1 firewall router.

  4. Como o arquivo /etc/resolv.conf poderia ser modificado de maneira a enviar todas as solicitações de DNS para 1.1.1.1?

    Usando nameserver 1.1.1.1 como sua única entrada de nameserver.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

109.2 Configuração persistente de rede (109.2 Lição 2)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.