From 743d83d5e940ceb715747521f49f28ee17d9f078 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 15 Sep 2026 21:12:12 +0000 Subject: [PATCH] =?UTF-8?q?el=20kernel=20gen=C3=A9rico=20enciende=20`nf=5F?= =?UTF-8?q?tables`=20=E2=80=94=20y=20rust=20entra=20a=20la=20cola=20de=20l?= =?UTF-8?q?a=20granja?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dos cosas a moler, las dos en el worker (que tiene 6 cores, 16 G y 94 G libres), encoladas por ENLACE a la receta canónica y no por copia: `takana hash` da el MISMO b3 por el enlace que por el fichero real, así que la cola no puede divergir de lo canónico — que es justo el defecto que el propio `farm-worker-loop.sh` documenta de las colas viejas («su copia aparcada era la versión ANTERIOR y seguía leyéndose como deuda abierta»). · `linux-generic` (b3:63fdd57c…, antes 23f1cc43…): `NETFILTER_ADVANCED`, `NF_TABLES`, `NF_TABLES_INET`, `NFT_CT`, `NFT_LIMIT`, `NFT_COUNTER`, `NFT_LOG`, `NFT_REJECT{,_INET}` y `NETFILTER_SYNPROXY`/`NFT_SYNPROXY`. Es lo que pide el cortafuegos de tawasuyu (SDD-ENTRADA): la tabla `inet`, el estado de conexión y el `limit rate` POR ELEMENTO de set, que es el ban por IP dentro del kernel y el reemplazo de fail2ban. SYNPROXY va ahora porque encenderlo después cuesta otro kernel y otro reinicio de producción. · `rust` (b3:aa5d81e8…): el escalón 2 del SDD 31, que estaba en `never`. El worker ya tiene `llvm21` sellado con el MISMO hash que el hub (95956a16…), así que arranca desde ahí y no lo reconstruye. Los dos hashes coinciden hub↔worker, comprobado antes de sembrar: el worker va a sellar exactamente lo que sellaría acá. Co-Authored-By: Claude Opus 5 (1M context) --- recipes/incoming/linux-generic.toml | 1 + recipes/incoming/rust.toml | 1 + recipes/linux-generic.toml | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 120000 recipes/incoming/linux-generic.toml create mode 120000 recipes/incoming/rust.toml diff --git a/recipes/incoming/linux-generic.toml b/recipes/incoming/linux-generic.toml new file mode 120000 index 00000000..83e950eb --- /dev/null +++ b/recipes/incoming/linux-generic.toml @@ -0,0 +1 @@ +../linux-generic.toml \ No newline at end of file diff --git a/recipes/incoming/rust.toml b/recipes/incoming/rust.toml new file mode 120000 index 00000000..f3d3510b --- /dev/null +++ b/recipes/incoming/rust.toml @@ -0,0 +1 @@ +../rust.toml \ No newline at end of file diff --git a/recipes/linux-generic.toml b/recipes/linux-generic.toml index b57bb075..a42594a7 100644 --- a/recipes/linux-generic.toml +++ b/recipes/linux-generic.toml @@ -19,6 +19,23 @@ # NVK (Vulkan). La mesa del otro agente es IRIS-ONLY ⇒ hay que construir una mesa con nouveau/NVK # para que mirada renderice en NVIDIA. Eso es del frente del otro agente. El kernel sólo aporta # el /dev/dri/cardN con KMS. +# ⚠️ NETFILTER: `nf_tables` VA EXPLÍCITO, y se descubrió porque FALTABA (2026-09-15). En la caja de +# producción, con `nftables` instalado y sellado: +# +# $ nft list ruleset +# netlink: Error: cache initialization failed: Invalid argument +# +# El `.config` sellado lo decía: `CONFIG_NETFILTER=y`, `CONFIG_NF_CONNTRACK=y` y +# **`# CONFIG_NF_TABLES is not set`** — porque `make defconfig` deja `NETFILTER_ADVANCED` apagado y +# NF_TABLES cuelga de ella. O sea: una caja de producción **sin cortafuegos de ninguna clase**, con +# el userland completo y el kernel diciendo que no. Es la lección de esta misma familia de recetas: +# *la receta dice lo que se CAMBIÓ; sólo el `.config` sellado dice lo que QUEDÓ.* +# +# Lo que se enciende es exactamente lo que pide el cortafuegos de tawasuyu (`shared/cortafuegos`, +# SDD-ENTRADA): tabla `inet` (`NF_TABLES_INET`), estado de conexión (`NFT_CT`), y el `limit rate` +# por elemento de set (`NFT_LIMIT`) que es lo que implementa el ban por IP **dentro del kernel**, sin +# daemon — el reemplazo de fail2ban. `NFT_SYNPROXY` va porque ese SDD lo tiene planeado detrás de un +# flag y encenderlo después costaría otro kernel y otro reinicio de producción. # Compilador: CC=gcc/HOSTCC=gcc — gueto-GCC (zig cc choca con el kbuild x86), igual que linux.toml/metal. name = "linux-generic" @@ -52,6 +69,9 @@ scripts/config -d MODULE_SIG -d MODULE_SIG_ALL -d DEBUG_INFO_BTF -d DEBUG_INFO - -e OVERLAY_FS_REDIRECT_DIR -e OVERLAY_FS_INDEX -e OVERLAY_FS_XINO_AUTO -e OVERLAY_FS_METACOPY \ -e SECURITY -e SECURITY_LANDLOCK -e AUDIT -e IO_URING -e BPF_SYSCALL \ -e MEMCG -e PSI -d PSI_DEFAULT_DISABLED \ + -e NETFILTER_ADVANCED -e NF_TABLES -e NF_TABLES_INET -e NF_CONNTRACK -e NF_CONNTRACK_MARK \ + -e NFT_CT -e NFT_LIMIT -e NFT_COUNTER -e NFT_LOG -e NFT_REJECT -e NFT_REJECT_INET \ + -e NETFILTER_SYNPROXY -e NFT_SYNPROXY \ -e VIRTIO -e VIRTIO_PCI -e VIRTIO_BLK -e VIRTIO_NET -e DRM_VIRTIO_GPU \ -e PCI -e PCIEPORTBUS -e ACPI -e FW_LOADER \ -e EXT4_FS -e SQUASHFS -e SQUASHFS_XZ -e SQUASHFS_ZSTD -e SQUASHFS_LZ4 \