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.
3.3 KiB
Screencasts / Videos da demonstracao
PT-BR: docs/pt-BR/screencast.md · EN: this page
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