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.
This commit is contained in:
1 parent
90c51f43fc
commit
fe324259c0
20 files changed
+958
-2
No files matched your search
@@ -0,0 +1,70 @@
|
||||
# Screencasts / Videos da demonstracao
|
||||
|
||||
> PT-BR: [docs/pt-BR/screencast.md](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
|
||||
|
||||
```sh
|
||||
# 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
|
||||
```
|
||||
Reference in new issue
Block a user