felipelima
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # **`Documentação FOG PROJECT em LAN`** *Documentação Técnica* --- ## **Identificação** | **Autor** | `Felipe Antonio Lima Mota` | |--------------------|---------------------| | **Data** | `01/06/2025` | | **Versão** | `1.0.0` | | **Repositório** | [GitHub](https://github.com/flfelipelima) | | **Créditos** | [FOGProject](https://github.com/FOGProject/fogproject) | --- ## **Sobre o Projeto** 📌 **Objetivo**: Este projeto documenta a implementação completa do FOG Project em uma rede local (LAN) isolada. O FOG Project é uma solução gratuita e open source utilizada para clonagem, implantação e gerenciamento de sistemas operacionais via rede, ideal para ambientes com múltiplos computadores, como laboratórios, escolas e departamentos de TI. A configuração proposta neste guia visa otimizar desempenho, garantir padronização das máquinas e permitir a reinstalação rápida de sistemas, mesmo sem acesso à internet externa, utilizando Ubuntu 22.04 LTS e múltiplos discos para organização e armazenamento de imagens. 🔧 **Tecnologias**: - FOG Project - Ubuntu Server 22.04 LTS - ISC DHCP Server - NFS/TFTP --- ### **Como usar este documento** - Seções numeradas para referência rápida. - Imagens e tabelas ilustram configurações críticas. - Problemas e soluções destacados em `▶️ Destaque`. --- > ✒️ **Nota do Autor**: > *"Documentação criada para fins de replicação e manutenção do ambiente. Contato: `mota.felipelima@gmail.com`"* --- # 📑 Sumário ## 1. [FOG Project - Apresentação](#1-fog-project---apresentação) - [1.1 O que é o FOG Project?](#11-o-que-é-o-fog-project) - [1.2 Como funciona?](#12-como-funciona) - [1.3 Ambiente e Premissas](#13-ambiente-e-premissas) - [1.4 Servidor e Sistema Operacional](#14-servidor-e-sistema-operacional) - [1.5 Interfaces de Rede](#15-interfaces-de-rede) - [1.6 Estrutura da Rede Isolada](#16-estrutura-da-rede-isolada) - [1.7 Interface de Administração Web](#17-interface-de-administração-web) ## 2. [Preparação](#2-preparação) - [2.1 Criação do Pendrive Bootável](#21-criação-do-pendrive-bootável) - [2.2 Instalação do Ubuntu](#22-instalação-do-ubuntu) - [2.2.1 Pré-instalação](#221-pré-instalação) - [2.2.2 Processo de Instalação](#222-processo-de-instalação) - [Disco 1 – Sistema Operacional](#disco-1--sistema-operacional-devnvme0n1) - [Disco 2 – Imagens](#disco-2--armazenamento-principal-de-imagens-devsda) - [Disco 3 – Imagens adicionais](#disco-3--armazenamento-secundário-de-imagens-devsdb) ## 3. [Atualizar o Sistema Operacional](#3-atualizar-o-sistema-operacional) ## 4. [Instalação do FOG](#4-instalação-do-fog) - [4.1 Início da Instalação](#41-início-da-instalação) - [4.2 Tabela: Respostas](#42-tabela-respostas-à-instalação-do-fog-project-lan-isolada) - [4.3 Continuação das Perguntas](#43-continuação-das-perguntas-da-instalação) - [4.4 Observação – Permission Denied](#44-observação---permission-denied) - [4.5 Pós-instalação do FOG](#45-pós-instalação-do-fog) - [4.6 Configuração do Netplan](#46-configuração-do-netplan) ## 5. [Ajuste do Arquivo .fogsettings](#5-ajuste-do-arquivo-fogsettings) - [5.1 Atualização dos IPs](#51-configuração-do-fogsettings) - [5.2 Configuração do TFTP](#52-configuração-do-tftp) - [5.3.1 O que é TFTP](#531-o-que-é-tftp) - [5.3.2 Como funciona o TFTP?](#532-como-funciona-o-tftp) - [5.3.3 Ajuste Manual no TFTP](#533-ajuste-manual-no-tftp) ## 6. [Configuração do ISC DHCP Server](#6-configuração-do-isc-dhcp-server) - [6.1 O que é o ISC DHCP Server?](#61-o-que-é-o-isc-dhcp-server) - [6.2 O que o DHCP faz?](#62-o-que-o-dhcp-faz) - [6.3 Configuração do Serviço DHCP](#63-configuração-do-isc-dhcp-server) ## 7. [Reiniciar Serviços Essenciais](#7-reiniciar-serviços) ## 8. [Gerenciamento de Armazenamento](#8-gerenciamento-de-armazenamento-nodes-hds-e-disco-principal) - [8.1 O que são Storage Nodes](#81-o-que-são-storage-nodes-no-fog) - [8.2 Como adicionar HDs](#82-como-adicionar-hds-a-um-node) - [8.3 Configuração do Node Principal](#83-configuração-do-node-principal-e-disco-2-no-fog) - [8.4 Configuração do Disco 2](#84-configurar-o-disco-2-armazenamento-adicional) ## 9. [Problemas e Soluções no FOG Project](#9-problemas-e-soluções-do-fog-project) - [9.1 Erro de Certificado HTTPS](#91-erro-de-certificado-https) - [9.2 Erro “Permission Denied” – NFS](#92-erro-permission-denied-e-falha-de-montagem-no-fog) - [9.2.1 Verificar /etc/exports](#921-verifique-o-arquivo-de-exportação-nfs) - [9.2.2 Permissões da pasta](#922-verifique-as-permissões-da-pasta-images2) - [9.2.3 Verificar o NFS](#923-verifique-se-o-nfs-está-rodando) - [9.2.4 Teste o acesso NFS](#924-teste-o-acesso-nfs-de-outra-máquina) - [9.2.5 Subpastas obrigatórias](#925-subpastas-obrigatórias-ausentes) - [9.2.6 Configuração no painel](#926-configuração-incorreta-no-painel-do-fog) - [9.2.7 Checklist Final](#927-checklist-final) - [9.2.8 Reinicie os serviços](#928-reinicie-os-serviços) - [9.3 Porta do Switch Limitada a 100 Mbps](#93-por-que-uma-porta-do-switch-fica-limitada-a-100-mbps) - [9.3.1 Identificação do problema](#931-problema) - [9.3.2 Causas comuns](#932-por-que-isso-acontece) - [9.3.3 Cabos inadequados](#933-cabo-de-rede-inadequado-ou-danificado) - [9.3.4 Dispositivos limitados](#934-dispositivo-conectado-limitado) - [9.3.5 Problemas no conector RJ45](#935-problemas-nos-pinos-do-conector-rj45) - [9.3.6 Configuração manual](#936-configuração-manual-no-switch-ou-host) - [9.3.7 Como testar e corrigir](#937-como-testar-e-corrigir) ## 1. FOG Project - Apresentação ### 1.1 O que é o FOG Project? O FOG Project é uma ferramenta gratuita e de código aberto usada para a **clonagem e gerenciamento de sistemas operacionais** em computadores via rede. Ele é amplamente utilizado em ambientes que possuem muitos computadores, como escolas, universidades, laboratórios de informática e empresas, onde é necessário instalar ou restaurar sistemas operacionais de forma rápida e padronizada. ![Captura de tela de 2025-06-10 12-59-32](https://hackmd.io/_uploads/rJeFVOimle.png) ***Fig. 1** Dashboard - Tela incial do Fog Project* ### 1.2 Como funciona? O FOG opera com base em um modelo **cliente-servidor**. Em um cenário típico, você tem: - Um servidor FOG instalado em uma máquina com Linux armazena as imagens de sistema operacional e controla o processo de clonagem. - Vários computadores (clientes) irão receber as imagens. - Um switch de rede conecta fisicamente todos os dispositivos na mesma rede local. ![_- visual selection (2)](https://hackmd.io/_uploads/BJSOm4fXex.png) ***Fig. 2** Fluxograma - Configuração de Rede com Servidor FOG* Os computadores clientes são configurados para fazer boot via PXE (um recurso da BIOS/UEFI que permite iniciar o sistema pela rede). Quando esses clientes são ligados, eles se conectam ao servidor FOG, carregam um sistema leve via rede, e executam as tarefas designadas, como capturar uma imagem do disco ou restaurar uma imagem previamente criada. ![_- visual selection](https://hackmd.io/_uploads/SytNN4Gmlx.png) ***Fig. 3** Gráfico - Ciclo de Boot PXE* **Vantagens** * **Gratuito e open source:** sem custos de licença. * **Economia de tempo:** ideal para restaurar dezenas ou centenas de PCs rapidamente. * **Padronização:** garante que todos os computadores usem a mesma configuração. * **Controle centralizado:** tudo é feito a partir de um painel acessível pelo navegador. ### 1.3. Ambiente e Premissas Este documento tem por **objetivo** descrever a configuração de um servidor FOG Project operando em uma **rede local (LAN)** **isolada**, destinada à captura e implantação de imagens de sistemas operacionais em estações de trabalho. A solução é especialmente útil em ambientes sem acesso à internet, como laboratórios acadêmicos, oficinas de manutenção ou setores de TI com restrições de conectividade externa. - **Servidor FOG**: Ubuntu Desktop 22.04 LTS - **Interface de rede principal**: `enp0s`, IP fixo `192.168.0.100` - **Interface Wi-Fi**: `wlp0s` (usada só durante instalação) - **Rede isolada (LAN)**: Faixa `192.168.0.0/24`, sem gateway - **Faixa DHCP**: `192.168.0.10 → 192.168.0.254` - **WebUI**: http://192.168.0.100/fog/management ### 1.4 Servidor e Sistema Operacional O servidor utilizado na implementação é o **Ubuntu Desktop 22.04 LTS**, o qual oferece estabilidade, suporte e compatibilidade. O ambiente gráfico foi mantido para facilitar operações administrativas locais, como testes de rede, monitoramento de discos e execução de tarefas via terminal. ### 1.5 Interfaces de Rede A máquina em questão possui duas interfaces de rede, sendo elas: **Interface cabeada principal:** `enp0s`, configurada com endereço **IP fixo** `192.168.0.100`. Esta interface é responsável pela comunicação com os dispositivos clientes na LAN isolada e deve ser **priorizada** na configuração dos serviços DHCP e TFTP. **Interface sem fio (Wi-Fi):** `wlp0s`, utilizada exclusivamente durante a instalação inicial do sistema e do FOG Project, com o objetivo de baixar pacotes e atualizações. Após a conclusão da instalação, esta interface foi **desativada** para evitar conflitos de roteamento ou atribuição de IPs via DHCP externo. ### 1.6 Estrutura da Rede Isolada A rede LAN foi projetada para operar de forma autônoma e sem dependência de conexão com a internet, seguindo a faixa de endereçamento `192.168.0.0/24`. O servidor FOG desempenha múltiplas funções, incluindo: ➡️ Servidor **DHCP** (atribuindo IPs na faixa de `192.168.0.100` a `192.168.0.254`); ➡️ Servidor **TFTP** (responsável pelo envio de arquivos PXE); ➡️ Servidor **NFS** (armazenamento e compartilhamento de imagens). ### 1.7 Interface de Administração Web Após a instalação e inicialização dos serviços, o gerenciamento do FOG Server é realizado através da interface WebUI, acessível pelo seguinte endereço: ```ba= http://192.168.0.100/fog/management ``` Essa interface permite o controle completo dos hosts cadastrados, imagens de sistema, tarefas de captura e implantação, além da configuração de usuários, grupos e plugins adicionais. --- ## **2 Preparação** ### 2.1 Criação do Pendrive **Requisitos** ➡️ Um pendrive com mínimo 8 GB ➡️ Imagem ISO do Ubuntu 22.04.5 LTS: https://old-releases.ubuntu.com/releases/22.04.4/ubuntu-22.04.4-desktop-amd64.iso ➡️ Rufus: https://rufus.ie/pt_BR/ **Criação do Pendrive Bootável (usando o Rufus)** 1. Insira o pendrive. 1. Abra o Rufus 1. Em “Dispositivo”, selecione seu pendrive. 1. Em “Selecionar imagem”, escolha a ISO do Ubuntu 22.04.5. 1. Em “Esquema de partição”, escolha: 1. MBR para BIOS/Legacy. 1. GPT para UEFI. 1. Sistema de arquivos: FAT32 (padrão). 1. Clique em “Iniciar”. 1. Aceite a opção para gravar no modo ISO (se solicitado). 1. Aguarde a conclusão e ejete o pendrive com segurança. ### **2.2 Instalação do Ubuntu** Neste projeto vamos instalar a versão do Ubuntu 22.04.5 LTS, utilizamos 2 HDs de 1TB (para as imagens) cada e 1 NVME de 512gb (para o sistema), o foco é configurar o particionamento dos discos de forma adequada para desempenho e organização, especialmente considerando que o FOG trabalha com imagens de disco e pode exigir bastante espaço. ### **2.2.1 Pré instalação do Ubuntu** **Modo BIOS/UEFI:** defina no BIOS para UEFI. **Boot pelo pendrive:** insira o pendrive com o Ubuntu 22.04.5 LTS e inicie a instalação. ### **2.2.2 Processo de Instalação do Ubuntu 22.04.4** **Etapa 1 - Escolher idioma** > Selecione **Português (Brasil)**. > Clique em **Instalar o Ubuntu**. ![Captura de tela 2025-06-29 145833](https://hackmd.io/_uploads/H1PfJWySle.png) **Etapa 2 - Layout do teclado** > Selecione o seu layout (ex: **Português (Brasil - ABNT2)**). > Clique em **Continuar**. ![Captura de tela 2025-06-29 150252](https://hackmd.io/_uploads/rJlLlZyrex.png) **Etapa 3 - Tipo de instalação** Escolha uma das opções: - **Instalação normal** (com navegador, apps de escritório, etc). - **Instalação mínima** (mais leve, apenas o básico). - Clique em **Continuar**. ![Captura de tela 2025-06-29 150558](https://hackmd.io/_uploads/rkD5xb1Hee.png) **Etapa 4 - Particionamento** - **Escolha a opção avançada** - Clique em Continuar ![Captura de tela 2025-06-29 150933](https://hackmd.io/_uploads/BkaFZWkHlg.png) **Etapa 5 - Confirmar alterações** > Confirme a escrita no disco (partições, formatação). > Clique em **Continuar**. #### **Configuração do Disco 1 (`/dev/nvme0n1`) – Sistema Operacional** Se o seu projeto contar com 2 TB de armazenamento adicional e um NVMe de 512 GB, utilize a tabela abaixo como referência de particionamento. Caso contrário, adapte os valores conforme a sua infraestrutura e necessidade. Selecione o disco **NVMe de 512 GB** (identificado como `/dev/nvme0n1`). Ele será usado exclusivamente para o **sistema Ubuntu e o FOG Server**. 1. Clique em **“Nova Tabela de Partição”** (isso apagará todo o conteúdo do disco). 2. Com o espaço livre, crie as seguintes partições: ![Captura de tela 2025-06-29 152612](https://hackmd.io/_uploads/BkbI0-ySgl.png) > 💡 *Esta tabela assume que o sistema está sendo instalado em modo UEFI. Caso utilize BIOS/Legacy, **não crie a partição EFI** e inicie direto com a raiz (`/`).* | Tamanho | Tipo | Sistema | Ponto de Montagem | Observações | |---------------|----------|---------|-------------------|--------------------------------------| | 512 MB | Primária | FAT32 | *(sem ponto)* | Tipo EFI (`/boot/efi`) – obrigatório no UEFI | | 50 GB | Lógica | ext4 | `/` | Raiz do sistema | | 8 GB | Lógica | swap | *(sem ponto)* | Área de troca (Swap) | | 100 GB | Lógica | ext4 | `/var` | Ideal para cache, logs e bancos de dados | | Restante (~350 GB) | Lógica | ext4 | *(não atribuído)* | Reservado para expansão futura ou backups | > ⚠️ **Atenção – Partição EFI ausente** > > Durante a instalação, pode surgir a seguinte mensagem: > > ``` > Go back to the menu and resume partitioning? > > No EFI System Partition was found. > This system will likely not be able to boot successfully, and the installation process may fail. > > Please go back and add an EFI System Partition, or continue at your own risk. > ``` ![943a9a0a-0c70-4764-b301-45a5d3f2d0ac2428886773426372902](https://hackmd.io/_uploads/H1-IBM1rgg.jpg) > > Isso indica que **não foi criada uma partição EFI**, essencial para sistemas que utilizam **UEFI** (como a maioria dos computadores atuais). > > ✅ **Solução rápida:** > 1. Clique em **Voltar**. > 2. Localize a partição de **512 MB FAT32** já criada. > 3. Edite essa partição e altere o tipo para: `Sistema EFI`. > 4. Confirme, salve e continue a instalação normalmente. > > 💡 *Sem essa configuração, o sistema pode não inicializar após a instalação.* --- #### **Configuração do Disco 2 (`/dev/sda`) – Armazenamento Principal de Imagens** Esse disco será utilizado como **node principal** do FOG (pasta `/images`). 1. Selecione o disco `/dev/sda`. 2. Crie uma nova tabela de partição. 3. Depois, crie a seguinte partição: | Tamanho | Tipo | Sistema | Ponto de Montagem | |----------|----------|---------|-------------------| | 1000 GB | Primária | ext4 | `/images` | --- #### **Configuração do Disco 3 (`/dev/sdb`) – Armazenamento Secundário de Imagens** Esse disco funcionará como armazenamento adicional para o FOG, montado em `/images2`. 1. Selecione o disco `/dev/sdb`. 2. Crie uma nova tabela de partição. 3. Crie a partição abaixo: | Tamanho | Tipo | Sistema | Ponto de Montagem | |----------|----------|---------|-------------------| | 1000 GB | Primária | ext4 | `/images2` | --- ### 🧠 Observações Finais - O sistema foi estruturado de forma a **isolar o SO e os dados**, otimizando desempenho e segurança. - Os pontos de montagem `/images` e `/images2` serão configurados posteriormente como **Storage Nodes** no painel do FOG. - A separação da pasta `/var` previne que o sistema fique sem espaço por logs ou bancos de dados em uso contínuo. **Etapa 6 - Fuso horário** ![Captura de tela 2025-06-29 160629](https://hackmd.io/_uploads/ByqpCbyrll.png) > Escolha sua cidade (ex: **São Paulo**). > Clique em **Continuar**. **Etapa 7 - Criar usuário** ![Captura de tela 2025-06-29 160802](https://hackmd.io/_uploads/S1yS1z1Bxx.png) > **Seu nome** > **Nome do computador** > **Nome de usuário** > **Senha** (digite duas vezes) Clique em **Continuar**. **Etapa 8 - Aguardar instalação** ![Captura de tela 2025-06-29 160824](https://hackmd.io/_uploads/HyH8yfJHxg.png) > O Ubuntu será instalado. > Aguarde o processo (pode levar de **5 a 15 minutos**). **Etapa 9 - Finalizar** > Após a instalação, clique em **Reiniciar agora**. > **Remova o pendrive** quando for solicitado. ## **3 Atualizar o Sistema Operacional** É fundamental manter o SO atualizado para garantir a segurança, estabilidade e desempenho do servidor onde o FOG será instalado. Atualizações incluem correções de vulnerabilidades, melhorias de desempenho, suporte a novos hardwares e softwares, além de ajustes que evitam conflitos e falhas durante a execução de serviços críticos. Para atualizar o sistema no Ubuntu, utilizamos o seguinte comando: ```bash sudo apt update && sudo apt upgrade -y ``` ![Captura de tela de 2025-06-06 11-17-35](https://hackmd.io/_uploads/Hk6amwiXxl.png) ***Fig. 4** Instalação das atualizações* ## 4. Instalação do FOG ### 4.1 Início da Instalação Você estará pronto para instalar o FOG com: **Etapa 1 - Instalação do GIT:** ```bash= sudo apt install -y git ``` **Etapa 2 - Executar o instalador do FOG:** ```bash= git clone https://github.com/FOGProject/fogproject.git # baixar o repositório cd fogproject/bin # entrar no diretório ``` ```bash= sudo ./installfog.sh # instalação do fog ``` > Durante a instalação, ele detectará a pasta /images. Se quiser usar a outra unidade também, poderá configurar posteriormente. ![Captura de tela de 2025-06-06 12-08-36](https://hackmd.io/_uploads/SJ7VwYiXxx.png) ***Fig. 5** Instalação - Tela inicial de instalação do FOG* ![Captura de tela de 2025-06-06 12-14-13](https://hackmd.io/_uploads/Bkxpbcsmgl.png) ***Fig. 6** Instalação - Parte 1* ![Captura de tela de 2025-06-06 12-15-09](https://hackmd.io/_uploads/r1xTb9o7xl.png) ***Fig. 7** Instalação - Parte 2* ![Captura de tela de 2025-06-06 12-15-26](https://hackmd.io/_uploads/SJyUfcjQlg.png) ***Fig. 8** Instalação - Parte 3* ![Captura de tela de 2025-06-06 12-21-50](https://hackmd.io/_uploads/BJ1UGqimee.png) ***Fig. 9** Instalação - Parte 4* ![Captura de tela de 2025-06-06 12-21-57](https://hackmd.io/_uploads/r1gLM9iQgg.png) ***Fig. 10** Instalação - Parte 5* ### 4.2 Tabela: Respostas à Instalação do FOG Project (LAN Isolada) | Pergunta | Resposta | Observação Técnica | |------------------------------------------------------------------------------------------|------------------------------------|----------------------------------------------------------------------| | What type of installation would you like to do? | `2) Normal Server` | Instalação padrão para PXE + DHCP + TFTP | | Would you like to change the default network interface? [Y/N] | `N` | Interface `enp0s31f6`* | | Would you like to setup a router address for the DHCP server? [Y/N] | `Y` | Mesmo sem acesso externo, define-se o IP do próprio FOG como gateway | | What is the IP address to be used for the router on the DHCP server? | `192.168.0.100` | IP fixo do servidor FOG | | Would you like DHCP to handle DNS? [Y/N] | `Y` | Para ambientes isolados, o FOG atua também como DNS local (mock) | | What DNS address should DHCP allow? | `192.168.0.100` | O próprio servidor como DNS | | Would you like to enable HTTPS on your FOG server? [y/N] | recomendo`Y` | Não necessário em rede interna isolada | | Are you sure you wish to continue? [Y/N] | `Y` | Confirmação final para iniciar a instalação | ### 4.3 Continuação das Perguntas da Instalação | Pergunta | Resposta | Observação Técnica | |------------------------------------------------------------------------------------------------------------|----------|-----------------------------------------------------------------------------------------------------| | Would you like to install the additional language packs? [Y/n] | N | Não necessário em ambientes restritos ou sem conexão com a internet | | Would you like to enable secure HTTPS on your FOG server? [y/N] | Y | Ativação do suporte HTTPS. Exige configuração de certificado. | | Which hostname would you like to use? Currently is: fog-Precision-3660 | - | Nome padrão do host (pode ser personalizado) | | Would you like to change it? If you are not sure, select No. [y/N] | N | Mantido o hostname padrão durante a instalação | | Are you ok with sending this information? [Y/n] | N | Recusado o envio de informações estatísticas (nome e versão do SO e versão do FOG) | Observação sobre: **Would you like to enable HTTPS on your FOG server? [y/N] → N** Ao optar por **"N" (não ativar HTTPS)** durante a instalação do FOG, o sistema é configurado para operar exclusivamente por meio do protocolo HTTP. Essa é uma prática aceitável em redes locais isoladas, onde o tráfego é restrito e não há exposição à internet. Contudo, é importante estar ciente de que **alguns navegadores podem exibir alertas de segurança**, e determinados recursos da interface Web podem ser limitados ou bloqueados. Além disso, é comum ocorrerem **erros de inicialização PXE** quando o ambiente tenta utilizar **HTTPS sem o devido suporte no servidor**. Um dos erros mais recorrentes nesse contexto é: ### 4.4 Observação - Permission Denied **Permission denied (0216ea8f) — iPXE** Esse erro geralmente é causado quando o iPXE tenta carregar arquivos via `https://` em um servidor que **não possui SSL configurado corretamente**, ou está utilizando um **certificado inválido ou inexistente**. Durante a primeira instalação do FOG, foi selecionada a opção de uso com **HTTP**. No entanto, foi necessário **reconfigurar manualmente** o servidor para assegurar que todos os serviços (Apache, TFTP, DHCP e iPXE) estivessem devidamente alinhados para trabalhar com HTTP, eliminando chamadas incorretas ao protocolo HTTPS e, consequentemente, **resolvendo erros de boot via rede**. > 💡 **Solução completa e alternativa com HTTPS:** > Consulte o tópico **6.1 – Ativando HTTPS Manualmente** ao final desta documentação, caso o uso de HTTPS se torne necessário futuramente. ## 4.5 Pós Instalação do FOG ### 4.6 Configuração do Netplan ### 4.6.1 O que é Netplan O Netplan é o gerenciador de rede padrão em versões modernas do Ubuntu (17.10+). Ele substitui o `/etc/network/interfaces` e funciona em conjunto com o `systemd-networkd` ou `NetworkManager`. `Netplan + systemd-networkd` → usado em servidores. `Netplan + NetworkManager` → usado em desktops com interface gráfica. ### 4.6.2 Netplan - Atribuição de IP Fixo no Ubuntu Atribuir um IP fixo no Ubuntu usando o Netplan é essencial para servidores como o FOG, onde é necessário que o endereço IP permaneça o mesmo após reinicializações, especialmente para DHCP, PXE e NFS funcionarem corretamente. **Etapa 1 - Identificar nome da interface** ```bash= # interface → Ex.: enp0s ip addr show ``` **Etapa 2 - Arquivo de configuração .yaml** ```bash= sudo nano /etc/netplan/01-network-manager-all.yaml ``` **Etapa 3 - Substitua o conteúdo e ajuste o nome da interface:** ```bash= # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager ethernets: enp0s: dhcp4: no addresses: - 192.168.0.100/24 routes: - to: 0.0.0.0/0 via: 192.168.0.100 nameservers: addresses: [192.168.0.100] ``` **Etapa 4 - Permissões do arquivo** ```bash= # O Netplan exige que o YAML não seja legível por outros usuários sudo chmod 600 /etc/netplan/01-network-manager-all.yaml # Aplicar as mudanças sudo netplan apply # Desativar Wi-Fi (opcional, após instalação) # Como a rede é isolada, desligue a interface wireless nmcli radio wifi off ``` > Ao final desse passo, o servidor passou a ter IP fixo **192.168.0.100** na interface **enp0s31f6** e nenhuma outra rota externa (internet). --- ## 5. Ajuste do Arquivo .fogsettings O arquivo `/opt/fog/.fogsettings` armazena as configurações básicas do FOG (IPs, faixa de DHCP, caminho de imagens etc). É necessário atualizar para refletir a nova rede 192.168.0.0/24: ### 5.1 Configuração do .fogsettings ```bash= sudo nano /opt/fog/.fogsettings ``` ### 5.2 Substuição de IPs anteriores (10.14.103.x) pelos novos (192.168.0.x) ```bash= # Antes: ipaddress='10.14.103.57' startrange='10.14.103.10' endrange='10.14.103.254' # Depois: ipaddress='192.168.0.100' startrange='192.168.0.10' endrange='192.168.0.254' ``` ### 5.3 Configuração do TFTP ### 5.3.1 O que é TFTP **TFTP (Trivial File Transfer Protocol)** é um protocolo de transferência de arquivos simples, leve e sem autenticação, geralmente usado para: ➡️ Boot pela rede (PXE boot) ➡️ Enviar/receber arquivos entre máquinas locais ➡️ Configurar dispositivos de rede (switches, roteadores etc.) ➡️ Clonagem de sistemas via FOG ou Clonezilla ### 5.3.2 Como funciona o TFTP? ➡️ Usa UDP na porta 69 (diferente do FTP que usa TCP). ➡️ Não tem login nem senha. ➡️ Só permite operações básicas de leitura e gravação. ➡️ Transferência direta, ideal para arquivos pequenos e rápidos (como bootloaders, kernels PXE). ### 5.3.3 Ajuste Manual no TFTP Configuração do arquivo de boot do **iPXE**: ```bash= sudo nano /tftpboot/default.ipxe ``` Certifique-se de que a linha que define o IP do FOG (set fog-ip) aponte para 192.168.0.100. ```bash= # Exemplo: ipxe #!ipxe set fog-ip 192.168.0.100 kernel http:// 192.168.0.100/fog/service/ipxe/boot.php boot ``` Se ainda houvesse algum resquício apontando para o IP antigo (10.14.103.57), substituímos manualmente por 192.168.0.100. --- ### 6 Configuração do ISC DHCP Server ### 6.1 O que é o ISC DHCP Server? **ISC DHCP Server** é um servidor DHCP de código aberto, criado pela Internet Systems Consortium (ISC). Ele é responsável por: ➡️ Distribuir IPs automaticamente para dispositivos em uma rede (clientes). ➡️ Fornecer outras configurações de rede, como gateway, DNS e arquivos de boot PXE. ### 6.2 O que o DHCP faz? Em uma rede de computadores, a comunicação eficiente entre dispositivos depende de uma configuração de rede correta, e um dos principais responsáveis por essa tarefa é o **DHCP**, sigla para Dynamic Host Configuration Protocol. Trata-se de um protocolo fundamental que automatiza a atribuição de parâmetros de rede, como endereços IP, máscaras de sub-rede, gateways e servidores DNS. Sem o DHCP, cada dispositivo precisaria ser configurado manualmente, o que seria inviável em ambientes maiores ou dinâmicos. Quando um dispositivo, como um notebook ou PC, é conectado a uma rede local, ele ainda não possui um endereço IP definido. Nesse momento, ele emite um broadcast solicitando as informações necessárias para se comunicar com os demais dispositivos da rede. Essa solicitação é recebida por um servidor DHCP, cuja função é fornecer automaticamente os dados de configuração de rede. O servidor, então, responde atribuindo ao cliente um endereço IP disponível dentro de uma faixa predefinida (conhecida como range), bem como a **máscara de sub-rede**, o **gateway padrão** (usado para comunicação externa) e os **servidores DNS**, que permitem resolver nomes de domínio em endereços IP. Em redes que utilizam boot **via rede (PXE)**, o DHCP ainda tem um papel adicional: ele informa o nome do arquivo de inicialização PXE, que será baixado pelo cliente através de **TFTP (Trivial File Transfer Protocol)**. Essa funcionalidade é essencial em ambientes de clonagem de sistemas, como o que ocorre com o FOG Project, onde esta sequência automatizada permite iniciar um sistema operacional diretamente pela rede, sem depender de mídias físicas. Portanto, o DHCP não apenas simplifica a administração da rede, como também viabiliza soluções de automação e manutenção em larga escala, provando-se indispensável em qualquer infraestrutura moderna. ### 6.3 Configuração do ISC DHCP Server Definir a interface na qual o DHCP deve atuar ```bash= sudo nano /etc/default/isc-dhcp-server ``` Altere a linha: `INTERFACESv4="enp0s31f6"` Conferir o bloco de sub-rede em `/etc/dhcp/dhcpd.conf` ```bash= subnet 192.168.0.0 netmask 255.255.255.0{ option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.0.100 192.168.0.200; default-lease-time 21600; max-lease-time 43200; option routers 192.168.0.100; option domain-name-servers 192.168.0.100; next-server 192.168.0.100; } ``` --- ## 7 Reiniciar serviços > `sudo systemctl restart isc-dhcp-server` > `sudo systemctl restart apache2` > `sudo systemctl restart mysql` > `sudo systemctl restart php8.*-fpm` > `sudo systemctl restart tftpd-hpa` ```bash= # Oneline sudo systemctl restart isc-dhcp-server sudo systemctl restart tftpd-hpa sudo systemctl restart apache2 sudo systemctl restart mysql ``` --- ## 8. Gerenciamento de Armazenamento: Nodes, HDs e Disco Principal ### **8.1 O que são Storage Nodes no FOG?** No FOG Project, um Storage Node é qualquer máquina (geralmente um servidor ou computador na mesma rede) que pode armazenar imagens de sistemas operacionais capturadas ou distribuídas. O node principal **(DefaultMember)** é aquele que centraliza a maioria das operações, como captura e deploy. Nodes adicionais ajudam a balancear a carga de rede e armazenamento em ambientes maiores (por exemplo, laboratórios com muitas máquinas ou múltiplos blocos). ### **8.2 Como adicionar HDs a um Node** Caso o seu servidor FOG tenha mais de um HD físico (ou partições extras), é possível usá-los para expandir a capacidade de armazenamento. Passo a passo de como configurar os HDs usando o GUI do Ubuntu (recomendo): > **Configurações do Servidor:** > 2 HDs de 1TB cada (imagens) (ex: /dev/sda e /dev/sdb); > 1 Nvme de 512GB (sistema) (Ubuntu Desktop 22.04 LTS) **Etapas de instalação:** 1. Inicie a instalação do Ubuntu normalmente 2. Escolha a opção de Instalação Avançada 3. Identifique os discos `/dev/sda `e `/dev/sdb` ### 8.3 Configuração do Node Principal e Disco 2 no FOG Após o acesso à interface web do FOG, seguimos com a configuração inicial dos nós de armazenamento. Na tela principal do FOG, é possível notar que o node principal ainda não está configurado. Precisamos realizar essa configuração para vinculá-lo corretamente ao nosso servidor de arquivos. Em seguida, também será necessário configurar o segundo disco (Disco 2), geralmente disponível no mesmo menu onde definimos as opções do node principal. Esse segundo disco poderá ser utilizado como armazenamento adicional para imagens do sistema, otimizando a estrutura de repositório do FOG. **Etapa 1 – Verificar o Node Principal** Na tela principal do FOG, observe que o **node de armazenamento principal** ainda não está configurado corretamente. > Isso significa que o FOG ainda **não reconhece o diretório padrão de armazenamento de imagens**. Para configurar: 1. Acesse o menu: `FOG Configuration` → `Storage Management` 2. Selecione o node listado (geralmente com o nome do servidor). 4. Edite os campos principais: - **Storage Node Name:** nome identificador do node - **Storage Node IP:** IP do servidor FOG (ex: `192.168.0.100`) - **Image Location:** `/images` - **Interface:** `eth0` ou a interface de rede configurada - Marque a opção: `Is Master Node` 4. Clique em **Update** para salvar. ### 8.4 Configurar o Disco 2 (armazenamento adicional) Como o segundo disco já foi **particionado e montado** durante a instalação do sistema, não é necessário utilizar comandos no terminal. Para integrá-lo ao FOG: 1. Acesse novamente o menu: `FOG Configuration` → `Storage Management` 2. Clique em **Add Storage Node** para adicionar um novo node. 4. Preencha as informações: - **Name:** `images2` ou outro identificador - **IP Address:** o IP do servidor - **Image Location:** `/images2` (caminho usado durante a instalação) - Desmarque a opção `Is Master Node` (se for apenas armazenamento adicional) 4. Clique em **Add Storage Node** para finalizar. Com isso, o servidor FOG estará utilizando: - O node principal (`/images`) para armazenar e gerenciar as imagens. - Um segundo volume (`/images2`) como espaço extra de armazenamento. --- ## 9. Problemas e Soluções do FOG Project ### 9.1 Erro de Certificado HTTPS Durante o boot via PXE, a seguinte mensagem de erro era exibida: ```bash= Could not boot: Permission denied (https://ipxe.org/0216ea8f) Chainloading failed ``` Esse é um problema causado pelo uso de HTTPS sem suporte adequado, a principal causa desse erro no FOG é tentar usar https:// em um ambiente onde: o servidor FOG não tem SSL configurado (certificado inválido ou inexistente). > Na primeira instalação do FOG, selecionei a opção de uso com protocolo HTTP. No entanto, foi necessário reconfigurar o servidor para garantir que todos os serviços estivessem corretamente ajustados para operar com HTTP, evitando erros de boot relacionados ao uso indevido de HTTPS, como o erro Permission denied (0216ea8f) no iPXE. ### **Solução:** Reinstalação do FOG Project Clone do repositório do FOG: ```bash= git clone https://github.com/FOGProject/fogproject.git ``` Acesso ao diretório: ```bash= cd fogproject/bin ``` Instalação com: ```bash= sudo ./installfog.sh ``` ### 9.2 Erro "Permission Denied" e Falha de Montagem no FOG O cliente PXE (que está tentando baixar a imagem pelo FOG) não consegue montar o diretório NFS /images2 que está hospedado no servidor 192.168.0.100. O erro “Permission denied” indica que o servidor FOG não está permitindo a conexão NFS por algum motivo. ```text Reason: mount: mounting 192.168.0.100:/images2 on /images failed: Permission denied Could not mount mount point, check if /mnt/check exists (/bin/fog.download) Error trying to send notification: Invalid MAC Address! ``` ### 9.2.1. Verifique o arquivo de exportação NFS Abra o arquivo: ```bash= sudo nano /etc/exports ``` Procure por uma linha parecida com: ```bash= /images2 *(rw,sync,no_wdelay,no_root_squash,insecure,no_subtree_check) # Se não existir ou estiver incorreta, adicione ou corrija. ``` ![Captura de tela de 2025-07-03 11-49-19](https://hackmd.io/_uploads/B1cLpXVBee.png) Salve e depois recarregue o serviço: ```bash= sudo exportfs -r ``` ### 9.2.2 Verifique as permissões da pasta `/images2` O FOG precisa de permissões completas na pasta: ```bash sudo chown -R fogproject:fogproject /images2 sudo chmod -R 777 /images2 ``` Se necessário, descubra o usuário com: ```bash ps aux | grep fog ``` ### 9.2.3. Verifique se o NFS está rodando Confirme com: ```bash sudo systemctl status nfs-kernel-server ``` Se estiver inativo: ```bash sudo systemctl start nfs-kernel-server sudo systemctl enable nfs-kernel-server ``` ### 9.2.4. Teste o acesso NFS de outra máquina Em um cliente Linux: ```bash sudo mount 192.168.0.100:/images2 /mnt ``` Se falhar, o erro está no servidor. ### 9.2.5. Subpastas obrigatórias ausentes O diretório `/images2` deve conter ao menos: ```bash sudo mkdir -p /images2/dev /images2/postdownloadscripts sudo chown -R fogproject:fogproject /images2 sudo chmod -R 777 /images2 ``` ### 9.2.6. Configuração incorreta no painel do FOG Acesse via navegador: ``` FOG Configuration > Storage Management > DefaultMember ``` Atualize: - **Image Location**: `/images2` - **FTP Path**: `/images2` - **IP Address**: `192.168.0.100` - **Username**: `fog` - **Password**: (preenchido) --- ### 9.2.7. ✅ Checklist Final | Verificação | Status | |-------------------------------------|--------| | `/etc/exports` correto | ✅ | | `exportfs -r` sem erros | ✅ | | Permissões corretas em `/images2` | ✅ | | Subpastas criadas (`dev`, etc.) | ✅ | | FOG Storage Node atualizado | ✅ | | MAC do cliente cadastrado | ✅ | | Cliente PXE inicializa sem erro | ✅ | ### 9.2.8. Reinicie os serviços ```bash sudo exportfs -r sudo systemctl restart nfs-kernel-server sudo systemctl restart apache2 ``` --- ### 9.3. Por que uma porta do switch fica limitada a 100 Mbps? ### 9.3.1. Problema Você percebeu que: - **Porta 1** do switch está limitada a **100 Mbps** - **Porta 2** funciona normalmente com **1000 Mbps (1 Gbps)** ### 9.3.2. Por que isso acontece? A limitação geralmente **não está no switch**, mas sim na **negociação de velocidade** entre o switch e o dispositivo conectado. Veja as causas mais comuns: ### 9.3.3. Cabo de rede inadequado ou danificado - **Cabos CAT5 antigos** → só suportam até **100 Mbps**. - Para **1 Gbps**, o mínimo recomendado é: - **CAT5e** - **CAT6** - Cabos danificados ou com fios rompidos **negociam apenas 100 Mbps** como fallback. ### 9.3.4. Dispositivo conectado limitado - O equipamento conectado à porta 1 pode **suportar apenas 100 Mbps**. - Ou a **placa de rede** está configurada para forçar **100 Mbps**, ao invés de **Auto negociação**. ### 9.3.5. Problemas nos pinos do conector RJ45 - Conexão **Gigabit (1 Gbps)** usa **todos os 8 fios** do cabo. - Conexão **100 Mbps** usa apenas **4 fios**. - Fios mal conectados ou rompidos → apenas 100 Mbps negociado. ### 9.3.6. Configuração manual no switch ou host - A porta 1 do switch pode estar **configurada manualmente** para 100 Mbps. - Verifique no painel do switch se está como **"Auto" (negociação automática)**. ### 9.3.7. Como testar e corrigir 1. **Troque o cabo da porta 1** por um novo **CAT5e ou CAT6**. 2. **Teste o mesmo equipamento** conectado na porta 2 (1 Gbps) para ver se o problema persiste. 3. Acesse o **painel de gerenciamento do switch Dell** e verifique se a **porta 1 está em modo Auto negotiation**. 4. No **computador/dispositivo conectado**, vá até as **configurações da placa de rede** e: - Verifique se a velocidade está configurada como **"Auto negociação"**. - Ou force manualmente para **"1 Gbps Full Duplex"** (se disponível). --- ### Dica final Se alterar o diretório de imagens (`/images` → `/images2`), **atualize no painel web do FOG e nas permissões do sistema**.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully