Esta aplicação transforma o conteúdo da aula sobre `systemd` e configuração de rede em uma experiência de aprendizado interativa. Navegue pelas seções usando o menu lateral para explorar os conceitos fundamentais, comparar ferramentas e simular configurações práticas. O objetivo é fornecer uma forma clara e engajadora de compreender o gerenciamento moderno de sistemas Linux.
Objetivos da Aula
Compreender o papel do `systemd`.
Utilizar `systemctl` para gerenciar serviços.
Analisar e criar arquivos de unidade.
Configurar rede com `systemd-networkd`.
Configurar rede com `NetworkManager`.
Configurar acesso via proxy.
Como Usar
Use o menu à esquerda para navegar. Em cada seção, você encontrará explicações, exemplos de código e elementos interativos. Procure pelos botões nos blocos de código para simular diferentes cenários. Há também um botão para copiar comandos facilmente. Explore e experimente!
A Evolução: System V `init` vs. `systemd`
Para entender a importância do `systemd`, é útil compará-lo com seu predecessor, o System V `init`. O `systemd` não é apenas uma substituição, mas uma mudança de paradigma, focada em paralelismo e gerenciamento declarativo.
System V `init` (Tradicional)
▶️ **Execução Sequencial:** Scripts em `/etc/init.d/` rodam um após o outro, seguindo uma ordem rígida definida por links simbólicos nos diretórios `rc.d`. Isso cria um gargalo no boot.
🔗 **Dependências Manuais:** O gerenciamento de dependências é complexo e baseado em convenções de nomes de scripts, sendo frágil e propenso a erros.
📉 **Monitoramento Limitado:** Não possui um mecanismo nativo para monitorar processos. Se um serviço falhar, ele não será reiniciado a menos que uma ferramenta externa seja usada.
`systemd` (Moderno)
⚡ **Paralelização Agressiva:** Utiliza ativação por socket e D-Bus. Serviços são iniciados apenas quando necessários e em paralelo, com base em suas dependências explícitas, acelerando drasticamente o boot.
🧩 **Dependências Declarativas:** As dependências são claramente definidas nos arquivos de unidade (`Requires`, `Wants`, `After`, `Before`), permitindo que o `systemd` construa uma árvore de transações para otimizar a inicialização.
🔄 **Gerenciamento Robusto:** Monitora o ciclo de vida dos processos usando cgroups. Pode reiniciar serviços automaticamente em caso de falha, com políticas configuráveis (`Restart=on-failure`).
Fundamentos do `systemd`
O `systemd` é muito mais que um sistema de `init`; é uma suíte de ferramentas para gerenciar um sistema Linux. Ele introduz o conceito de "unidades" (`units`) para gerenciar recursos do sistema de forma consistente.
Explorando o `systemctl`
`systemctl` é a sua ferramenta principal para interagir com o `systemd`. A simulação abaixo demonstra os comandos mais comuns para gerenciar o ciclo de vida de um serviço, como o `sshd`.
Verifica o estado atual de um serviço, incluindo se está ativo, logs recentes e seu status de habilitação no boot.
$ systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Mon 2025-09-29 09:17:00 -03
...
Inicia um serviço na sessão atual. Não o habilita para iniciar no próximo boot.
$ sudo systemctl start sshd.service
Para um serviço na sessão atual.
$ sudo systemctl stop sshd.service
Habilita um serviço para ser iniciado automaticamente no boot. Cria os links simbólicos necessários.
$ sudo systemctl enable sshd.service
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /lib/systemd/system/sshd.service.
Desabilita um serviço, impedindo que ele inicie no boot. Remove os links simbólicos.
Contém metadados e define as dependências. Description é uma descrição legível. After=network.target garante que a rede esteja ativa antes de iniciar este serviço.
[Service]
Especifica como o serviço deve ser executado. ExecStart define o comando para iniciar. Restart=on-failure reinicia o serviço se ele terminar com um código de erro. User e Group definem o usuário e grupo que executarão o processo.
[Install]
Usado pelo comando `systemctl enable`. WantedBy=multi-user.target informa ao `systemd` para iniciar este serviço quando o sistema atingir o target (nível) multiusuário.
Configuração com `systemd-networkd`
`systemd-networkd` é um componente do `systemd` para configuração de rede. É uma solução leve e declarativa, ideal para servidores e ambientes com configurações de rede previsíveis.
Simulador de Configuração
As configurações são feitas em arquivos `.network` no diretório `/etc/systemd/network/`. Use os botões abaixo para ver exemplos de configuração para DHCP e IP estático em uma interface chamada `enp0s3`.
Ativando e Verificando
Após criar os arquivos de configuração, siga estes passos para ativar e verificar o `systemd-networkd`.
Desabilitar outros gerenciadores (ex: NetworkManager):
`NetworkManager` é a solução de rede padrão para a maioria das distribuições desktop. Ele é projetado para lidar com cenários de rede complexos e dinâmicos de forma automática e transparente para o usuário.
Comandos Essenciais do `nmcli`
Antes de configurar, use estes comandos para inspecionar o estado atual da rede:
# Listar dispositivos de rede e seu estado
$ nmcli device status
# Listar perfis de conexão configurados
$ nmcli connection show
Simulador de Comandos `nmcli`
Use os botões para ver como configurar uma conexão chamada "Wired connection 1" para usar DHCP ou IP Estático.
Alternativa: `nmtui`
Para quem prefere uma interface mais visual no terminal, o comando `nmtui` abre uma TUI (Text User Interface) que permite editar conexões, ativar e desativar interfaces de forma interativa, sem precisar memorizar todos os parâmetros do `nmcli`.
Configuração de Proxy
Em muitas redes corporativas e acadêmicas, o acesso à internet é feito através de um servidor proxy. A configuração pode ser feita para todo o sistema ou por aplicação.
Proxy para todo o Sistema
A forma mais comum é definir variáveis de ambiente globais no arquivo `/etc/environment`. Essas configurações afetam a maioria das aplicações executadas pelos usuários. É necessário reiniciar a sessão para aplicá-las.
Algumas ferramentas, como o gerenciador de pacotes `apt`, podem precisar de sua própria configuração. Crie o arquivo `/etc/apt/apt.conf.d/80proxy.conf` com o seguinte conteúdo:
Após configurar as variáveis de ambiente, você pode usar uma ferramenta como o `curl` para verificar se o tráfego está passando pelo proxy. O `-v` (verbose) mostrará os detalhes da conexão.