Files
pf-linux-port/docs/pt-BR/screencast.md
T
lgcosta fe324259c0 Screencasts: seis videos silenciosos 1080p30 da demonstracao
Novo pipeline de video: scripts/screencast/render.py roda uma fase em um pty,
emula o terminal com pyte, gera frames PNG e mux com ffmpeg (H.264,
yuv420p, +faststart, sem trilha de audio). Fallback de encoder: libx264 ->
libopenh264 -> VP9.

Fases (scripts/screencast/phases/, uma sessao real contra o lab por video):
  1. implementacao no kernel - fontes OpenBSD + compat + build limpo do pf.ko
  2. ativacao - insmod, /dev/pf, pfctl -e, pfctl -s info
  3. regras basicas - tabela, anchor, keep state, block drop
  4. roteamento - route-to e reply-to (provado com tcpdump nas 2 interfaces)
  5. balanceamento - pool round-robin, pool source-hash, dup-to
  6. QOS - filas hfsc, pfctl -s queue -v, transferencia de 2 MB pela fila

Os videos ficam versionados em out/screencast/ (.gitignore ajustado para
nao ignorar *.mp4) e o indice/texto de descricao do YouTube em
docs/{en,pt-BR}/screencast.md.

Correcoes na propria demo (encontradas gravando): a acao de uma regra no pf
e pass OU block (nunca os dois); as regras de um anchor vivem em um ruleset
proprio (pfctl -a <anchor> -f); o nc do QOS precisa rodar na VM do servidor,
nao no firewall; o rotulo 'FASE x/6' vem do numero da fase, nao da posicao
na lista de gravacao.
2026-11-12 08:41:41 -03:00

3.3 KiB

Screencasts / Videos da demonstracao

PT-BR: esta pagina · EN: docs/en/screencast.md

Seis videos silenciosos, 1920x1080 @ 30fps, H.264/MP4 — prontos para subir no YouTube. Cada video e a gravacao de uma sessao real contra o lab: VMs Alpine sob libvirt, rodando o kernel 7.3.4 compilado do fonte com o pf.ko deste repositorio. Nada e simulado; a unica coisa roteirizada e o ritmo.

# Video Duracao O que mostra
1 01-implementacao-kernel.mp4 22 s A fonte do OpenBSD 8.0 organizada em module/pfsrc, a camada de compatibilidade em module/compat, e a compilacao do modulo pf.ko contra o kernel do lab
2 02-ativacao.mp4 29 s insmod pf.ko, /dev/pf aparecendo, pfctl -e, pfctl -s info com a tabela de estados
3 03-regras-basicas.mp4 54 s Um pf.conf real: tabela, anchor, quick, keep state, block drop (o ping morre), contadores por regra e pfctl -ss
4 04-roteamento.mp4 47 s route-to (o pacote sai pelo caminho forcado, provado com tcpdump nas duas interfaces) e reply-to (resposta por gateway diferente)
5 05-balanceamento.mp4 69 s Pool nat-to { ... } round-robin alternando a origem no fio, pool source-hash fixando por origem, e dup-to replicando o pacote
6 06-qos.mp4 34 s Filas do OpenBSD 8.0 (queue ... bandwidth, classes hfsc), pfctl -s queue -v, transferencia de 2 MB pela fila e os contadores da classe subindo

Como regravar

# renderiza todas as fases
./scripts/screencast/record-all.sh

# ou uma fase especifica
./scripts/screencast/record-all.sh 05-balanceamento

Os arquivos sao gravados em out/screencast/*.mp4. O renderizador (scripts/screencast/render.py) roda a fase em um pty, emula o terminal com pyte, converte cada evento em um frame PNG e mux com ffmpeg (H.264, yuv420p, +faststart, sem trilha de audio). Se o ffmpeg da maquina nao tiver libx264, ele cai para libopenh264 e depois para VP9 automaticamente.

Requisitos: ffmpeg, python3 com PIL e pyte, a fonte DejaVu Sans Mono, e o lab de VMs no ar (as fases 2 a 6 falam com o lab; a fase 1 roda no host de build).

Roteiro das fases

Os roteiros estao em scripts/screencast/phases/ — um shell por fase, com comentarios explicando cada passo. Eles usam os mesmos comandos que os gates da suite (tests/vm/*.sh), entao o que o video mostra e exatamente o que a suite verifica.

Texto de descricao (YouTube)

PF on Linux - o motor do OpenBSD PF 8.0 dentro do kernel Linux

Port completo do Packet Filter do OpenBSD 8.0 para o kernel Linux 7.3.4,
empacotado como modulo (pf.ko) e controlada pelo pfctl original do OpenBSD
sobre a ABI de ioctls do /dev/pf.

O lab e real: 4 VMs Alpine sob libvirt, kernel compilado do fonte com o
modulo, trafego real entre cliente, firewall e servidor.

Fases:
1. Implementacao no kernel - das fontes OpenBSD ao pf.ko
2. Ativacao - insmod, /dev/pf, pfctl -e, pfctl -s info
3. Regras basicas - tabelas, anchors, keep state, block drop
4. Roteamento - route-to e reply-to
5. Balanceamento - pools round-robin, source-hash e dup-to
6. QOS - filas hfsc do OpenBSD 8.0 no caminho de dados

Suite automatizada: 15 gates, todos verdes.
Codigo e documentacao: https://git.labexposed.com/lgcosta/pf-linux-port

#linux #kernel #openbsd #pf #firewall #netfilter #screencast