mirror of
https://github.com/lgcosta/pf-linux-port.git
synced 2026-11-12 20:15:36 -03:00
- pins OpenBSD 8.0 tarballs (sha256) and Linux 7.3.4 as the port targets
- scripts/fetch-sources.sh (C3SL primary, cdn fallback), scripts/vendorize.sh
- scripts/{kernel-config,build-kernel}.sh for the VM-lab kernel
2.7 KiB
2.7 KiB
PF no Linux
Port do PF (packet filter) do OpenBSD para o Linux 7.3.4 como módulos
out-of-tree — o engine PF real (pf.c, pf_norm.c, pf_table.c, pf_lb.c, …
portados dos fontes do OpenBSD 8.0) controlado pelo pfctl real do OpenBSD via
a ABI ioctl de /dev/pf.
Status: implementação em andamento — veja o plano de implementação e o design doc.
O que você obtém (planejado)
| Área | Recurso |
|---|---|
| Filtragem | regras, anchors, quick, match/block(drop/return/return-rst)/pass, keep state, syncookies |
| Estado/Tables | firewall stateful, tables pfr (radix + hash, pfctl -t) |
| NAT | nat-to (pools de portas, sticky-port, static-port), rdr-to, binat-to |
| Scrub | remontagmento de fragmentos, drop por overlap, min-ttl/max-mss/df/no-df, set reassemble |
| QoS (sucessor do ALTQ) | queue/queue on com os agendadores ifq do OpenBSD 8.0: default (priq), HFSC, FQ-CoDel, anexados via qdisc pfq; estatísticas pfctl -s queue -v |
| Divert | divert-to / tag divert + canal userspace pdivert (netlink; Linux não tem AF_DIVERT) |
| Roteamento | route-to (pools rr/hash-source/hash-state, fail-to), reply-to, dup-to |
| Logging | pflogd via canal netlink pflog (pcap DLT_PFLOG) |
| Controle | /dev/pf (0600), ABI ioctl do OpenBSD 8.0, pfctl compilado para Linux (binário único) |
Fora de escopo: failover pfsync/CARP, IPsec/pfkey, ftp-proxy, instâncias PF
por netns, agendadores exclusivos do ALTQ clássico (cbq/wfq/red — removidos do
OpenBSD antes da 8.0).
Início rápido (após M1+)
./scripts/fetch-sources.sh # fontes OpenBSD 8.0 (mirror C3SL, com checksum)
./scripts/apply-patches.sh ../linux-7.3.4 # patch(es) de core (exports)
make module tools # pf.ko, pfq.ko, pfctl, pdivert, pflogd
sudo insmod module/pf.ko module/pfq.ko
sudo pfctl -f /etc/pf.conf && sudo pfctl -e
Lab de validação em VMs (Alpine via libvirt): docs/pt-BR/vm-lab.md.
Documentation in English: README.md and docs/en/.
Estrutura
module/— fontes de kernel (PF portado + camada de compat + qdisc pfq)tools/— builds Linux de pfctl/pdivert/pflogdpatches/kernel/— patches documentados no core do Linux (apenas exports)scripts/— automação de fetch/build/patch/VMtests/— suíte em VM (tests/vm/NN-*.sh, helpers scapy)docs/en/+docs/pt-BR/— documentação completa bilínguedocs/superpowers/— design + plano de implementação
Licença
O código portado do OpenBSD mantém as licenças e avisos originais (ISC). Código novo do lado Linux: ISC.