# MANUAL TÉCNICO - SERVIÇO TFTP E PROVISIONAMENTO

**Código:** ITGINF 0021/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Habilitar e configurar o servidor TFTP (Trivial File Transfer Protocol) no pfSense, utilizado principalmente para provisionamento automático de telefones IP (VoIP) e boot via rede (PXE) de thin clients ou instaladores.

## 3. PRÉ-REQUISITOS
- [ ] Acesso à WebGUI do pfSense.
- [ ] Arquivos de configuração/firmware prontos para upload (ex: `.xml`, `.cfg`, `.bin`).
- [ ] DHCP Server configurado (necessário para informar a Option 66).

## 4. PASSO A PASSO (EXECUÇÃO)

### Etapa 1: Upload dos Arquivos

Antes de ativar o serviço, suba os arquivos que serão servidos.

1.  Acesse `Diagnostics > Command Prompt`.
2.  Use a seção **Upload File** para enviar arquivos um por um.
    *   O destino padrão do TFTP é `/tftpboot`. No entanto, o **Command Prompt** salva em `/tmp` por padrão.
3.  **Método Recomendado (SCP/SFTP):**
    *   Use o WinSCP (ver `Manual de Ferramentas - WinSCP`) para conectar no pfSense via SSH (porta 22).
    *   Navegue até `/tftpboot/`. Se não existir, crie a pasta.
    *   Copie todos os arquivos de firmware/configuração para lá.

### Etapa 2: Validar Permissões (Shell)

1.  Acesse o Shell (SSH ou Console).
2.  Garanta que o usuário `root` ou `nobody` consiga ler os arquivos:
    ```bash
    chmod -R 755 /tftpboot
    chown -R root:wheel /tftpboot
    ```

### Etapa 3: Habilitar o Serviço TFTP

1.  Acesse `System > Advanced > Firewall & NAT`.
2.  Procure por **TFTP Proxy** e garanta que esteja configurado apenas se necessário NAT para fora.
3.  Para o **Servidor Interno**, acesse `Services > TFTP Server`. (Se não aparecer, verifique se o pacote está instalado ou se sua versão inclui o daemon nativo. Em versões modernas, ele é nativo).
4.  **Enable:** Marque a caixa.
5.  **Interface:** Selecione a interface onde os telefones/clientes estão (ex: `LAN` ou `VOIP_VLAN`).
6.  **TFTP Directory:** `/tftpboot` (ou o caminho onde você colocou os arquivos).

![TFTP Settings](assets/pfsense_tftp_settings.png)

7.  Clique em **Save**.

### Etapa 4: Configurar DHCP Option 66 (Boot Server)

O telefone precisa saber ONDE buscar os arquivos.

1.  Acesse `Services > DHCP Server`.
2.  Vá na interface correspondente (ex: LAN).
3.  Clique em **Advanced Options** (botão 'Display Advanced' se houver, ou role para baixo).
4.  Em **TFTP Server**, coloque o IP da interface do pfSense (ex: `192.168.1.1`).
5.  Em **Bootfile** (se necessário), coloque o nome do arquivo padrão (ex: `boot.bin` ou deixe em branco se o aparelho procurar pelo MAC).
6.  Salve.

## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)

**Problema 1: Timeout ao baixar arquivo**
*   **Causa:** Firewall bloqueando porta 69 (UDP) ou intervalo de portas altas usadas pela transferência.
*   **Solução:** Crie uma regra na Interface LAN/VLAN permitindo Protocolo UDP, Origem `Rede Local`, Destino `Endereço da Interface`, Porta `69 (TFTP)`. O helper TFTP deve cuidar do resto, mas às vezes é necessário liberar portas altas.

**Problema 2: File not found**
*   **Causa:** Permissão de arquivo linux ou Case Sensitive.
*   **Solução:** O Linux diferencia maiúsculas de minúsculas (`Config.xml` ≠ `config.xml`). Verifique o nome exato que o aparelho solicita nos logs (`Status > System Logs > DHCP/TFTP` se disponível, ou via tcpdump).

**Problema 3: Conflito com TFTP Proxy**
*   **Solução:** Se estiver usando o TFTP Server interno, desative o TFTP Proxy em `System > Advanced > Firewall & NAT` se houver conflito, ou garanta que ele está apontando para o Localhost corretamente.

## 6. DADOS TÉCNICOS

| Campo | Valor | Descrição |
| :--- | :--- | :--- |
| **Porta** | 69 UDP | Porta de Controle |
| **Diretório** | `/tftpboot` | Padrão do pfSense |
| **Protocolo** | UDP | Não tem retransmissão TCP |

## 7. VALIDAÇÃO FINAL (Definição de Pronto)
- [ ] O serviço TFTP está rodando?
- [ ] Ao rodar `tftp 192.168.1.1 get arquivo.txt` de um PC, o download ocorre?
- [ ] Os telefones IP receberam a configuração após reboot?
