pfSense
Firewall/roteador completo baseado em FreeBSD e no filtro pf do OpenBSD, com interface web — da arquitetura à alta disponibilidade, com foco em ISP.
Nesta página
1. Contexto histórico e normativo
O pfSense é uma distribuição de firewall/roteador de código aberto baseada no FreeBSD e no filtro de pacotes pf, originalmente desenvolvido no OpenBSD. O pf foi criado por Daniel Hartmeier em 2001 para substituir o IPFilter, e ganhou reputação por sua sintaxe declarativa e robustez — qualidades que o pfSense herda e estende com uma interface web de gerenciamento.
O projeto pfSense nasceu em 2004 como fork do m0n0wall, e desde então evoluiu para uma plataforma completa que inclui firewall, roteamento, VPN, portal cativo, balanceamento de carga e muito mais. É mantido pela Netgate, empresa que também comercializa hardware otimizado e suporte corporativo.
Para ISPs brasileiros, o pfSense se tornou uma alternativa popular a firewalls comerciais de grandes marcas, especialmente para borda de rede, concentrador de VPNs e segmentação interna. Sua licença open source (Apache 2.0) e a flexibilidade de rodar em hardware x86 comum o tornam atraente para provedores de pequeno e médio porte.
2. Arquitetura interna — FreeBSD e pf
O pfSense herda a arquitetura do FreeBSD e do pf, que difere significativamente do Linux/netfilter:
- pf — filtro de pacotes com sintaxe declarativa, avaliação otimizada e suporte a tabelas de endereços.
- ALTQ — escalonamento de tráfego para QoS, integrado ao pf.
- CARP — protocolo de redundância para alta disponibilidade (similar ao VRRP).
- pfsync — sincronização de estado de conexões entre firewalls redundantes.
- Interface web — escrita em PHP, que gera as configurações do pf e de outros subsistemas.
Em essência, o pfSense é uma camada de gerenciamento sobre o pf, permitindo que administradores configurem regras sem conhecer a sintaxe subjacente — embora o conhecimento do pf seja valioso para troubleshooting avançado.
3. Edições — Community vs. Plus
A Netgate mantém duas edições:
- Community Edition (CE) — gratuita, open source, com todas as funcionalidades essenciais.
- pfSense Plus — versão com recursos adicionais (como boot environments com ZFS, suporte oficial, atualizações mais frequentes), voltada para hardware Netgate ou clientes que desejam suporte comercial.
Para a maioria dos ISPs pequenos e médios, a CE atende plenamente às necessidades de firewall de borda.
4. Instalação
A instalação é feita a partir de imagem ISO oficial, gravada em mídia USB ou CD, e segue um assistente simples:
- Baixar a imagem no site oficial (netgate.com/pfsense).
- Gravar a ISO em USB (usando ferramentas como balenaEtcher, Rufus ou dd).
- Dar boot no hardware alvo ou VM.
- O instalador oferece opções de particionamento (ZFS recomendado em hardware com suporte).
- Após a instalação, o console solicita a configuração das interfaces WAN e LAN.
- Todo o restante da configuração é feito pela interface web.
Requisitos mínimos práticos: processador x86_64, 2 GB de RAM, 8 GB de armazenamento e 2+ interfaces de rede. Para produção, recomenda-se hardware dedicado ou VM com reserva de recursos.
5. Configuração de interfaces WAN/LAN
Pela interface web (Interfaces → WAN e Interfaces → LAN):
- WAN — configurada via DHCP, PPPoE ou IP estático, conforme o uplink do provedor.
- LAN — IP fixo na sub-rede interna, servindo como gateway para os hosts locais.
- Interfaces adicionais (OPT1, OPT2...) — podem ser criadas para segmentar DMZ, rede de gerência, convidados, etc.
Cada interface possui seu próprio conjunto de regras de firewall, o que permite políticas distintas por segmento de rede — fundamental para a segmentação de um ISP.
6. Regras de firewall pela interface
Em Firewall → Rules, por interface. A lógica segue o pf por baixo, mas com montagem visual: Ação (Pass/Block/Reject), Protocolo, Origem, Destino, Porta.
Exemplo de regra para liberar RADIUS (UDP 1812) apenas da rede de NAS:
Action: Pass · Protocol: UDP · Source: 10.0.0.0/24 · Destination port: 1812 (RADIUS-Auth)
A ordem das regras importa: o pfSense avalia de cima para baixo, e a primeira que casar decide. Política padrão é bloquear tudo que não for explicitamente permitido.
7. NAT e Port Forward
Em Firewall → NAT:
- Port Forward — DNAT: redireciona uma porta da WAN para um serviço interno (ex.: painel de gerência).
- Outbound NAT — controle do tráfego de saída (equivalente a MASQUERADE/SNAT). O pfSense faz NAT automático por padrão na WAN.
8. Pacotes — pfBlockerNG e outros
O Package Manager (System → Package Manager) permite instalar funcionalidades adicionais:
- pfBlockerNG — bloqueio por listas de reputação, geoblocking, integração com feeds de inteligência.
- Suricata/Snort — IDS/IPS como pacote.
- OpenVPN/WireGuard — VPNs já integradas ao core.
- Squid — proxy/cache.
- HAProxy — balanceamento de carga.
O pfBlockerNG é especialmente relevante para ISPs, permitindo bloquear tráfego malicioso conhecido sem depender de soluções externas.
9. Alta disponibilidade — CARP
Para ISPs que não podem ter o firewall de borda como ponto único de falha, o pfSense oferece CARP (Common Address Redundancy Protocol) — dois firewalls compartilhando um IP virtual, com failover automático se o primário cair.
A configuração é feita em System → High Availability Sync, que sincroniza regras, NAT, DHCP e estado de conexões entre os nós. O pfsync mantém as tabelas de estado consistentes, garantindo que conexões ativas não sejam derrubadas durante o failover.
10. Monitoramento e métricas
O pfSense oferece:
- Status → Dashboard — visão geral de tráfego, CPU, memória, interfaces.
- Status → System Logs → Firewall — logs em tempo real das regras.
- SNMP — pode ser habilitado para integração com Zabbix/PRTG.
- RRD Graphs — gráficos históricos de tráfego e performance.
Para monitoramento externo, o SNMP é o método mais comum, expondo métricas de interfaces, CPU, memória e estado do CARP.
11. Backup e recuperação
O pfSense permite exportar a configuração completa em XML:
- Backup — Diagnostics → Backup/Restore, baixar o arquivo XML.
- Restauração — restaurar o XML em um hardware novo ou após reinstalação.
- Recomenda-se manter o backup em local seguro, seguindo a regra 3‑2‑1‑1‑0.
Em caso de falha total do hardware, a restauração é rápida: instalar o pfSense em novo equipamento e importar o XML.
12. Dimensionamento e performance
O pfSense pode lidar com gigabits de tráfego em hardware adequado. Para ISPs, as métricas importantes são:
- Throughput de firewall — depende da CPU, número de regras e uso de pacotes como IDS/IPS.
- VPN — criptografia consome CPU; hardware com AES-NI é essencial para alta performance.
- CARP — adiciona overhead mínimo, mas exige sincronização de estado.
Para produção, recomenda-se hardware com CPU x86_64, 4+ GB de RAM, armazenamento SSD e interfaces Intel (melhor compatibilidade com FreeBSD).
13. Comparativo — pfSense vs. iptables/nftables
| Critério | pfSense | iptables/nftables |
|---|---|---|
| Curva de aprendizado | Menor — interface visual | Maior — linha de comando |
| Integração com servidor Linux existente | Não — appliance dedicada | Sim — roda no mesmo host |
| Automação/IaC | API disponível, mas menos versionável | Arquivos de config versionáveis |
| Alta disponibilidade | CARP + pfsync integrados | Exige soluções externas (keepalived, etc.) |
| Pacotes adicionais | pfBlockerNG, Suricata, Squid, etc. | Ferramentas separadas, integração manual |
14. Troubleshooting
Usar console/serial (opção "Set interface(s) IP address") para resetar regras da LAN de emergência.
Conferir Status → System Logs → Firewall para ver qual regra está processando o pacote.
Verificar sincronização de estado (Status → CARP) e conectividade da interface de sincronização entre os nós.
Verificar se a CPU suporta AES-NI e se o hardware está adequado para a carga de criptografia.
15. Glossário
16. Referências
- Netgate — documentação oficial pfSense (docs.netgate.com).
- OpenBSD — documentação do pf (openbsd.org/faq/pf).
- Projeto pfSense — site oficial (pfsense.org).
- Páginas relacionadas: iptables, nftables.
Conteúdo técnico independente, baseado em conhecimento consolidado e estável da ferramenta. Nenhum trecho é cópia literal de fonte de terceiro.