box/host
claude-hdb edf8309f99 fix(expose): accept established flows back from boxnet — the input drop was eating the door's replies
Reproduced the drill's E failure on a live stack (Incus 6.0.4, container
box, same setup-host/box-firewall): tcpdump on boxnet shows the SYN
leaving masqueraded as the gateway and the box answering SYN/ACK
instantly — which then dies at the host's input hook. The inet-box input
chain dropped ALL boxnet input except DNS/DHCP, stateless: the reply to
the very connection the door opened. UFW hosts never had this hole
(before.rules accepts RELATED,ESTABLISHED); the nft fallback now matches
that semantics with a ct state established,related accept ahead of the
drop. Boxes still cannot INITIATE toward the host — a box-originated SYN
is a NEW flow, which is what the drop is for.

Also rebuild the chains on every run (add chain + flush + re-add) instead
of skip-if-present: the existence guard pinned every host to the rule set
of the release that first ran there, so an upgraded rule never landed.

Verified end-to-end on the repro stack: curl 127.0.0.1:18091 → HTTP 200;
box→host initiation still times out; DNS carve-out intact; non-exposed
port still dropped; --remove kills the door; re-expose returns 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 23:13:25 +00:00
..
box-firewall.service feat!: rename the host stack too, default to blank, drill the templates, add wipe 2026-07-14 14:36:39 +00:00
box-firewall.sh fix(expose): accept established flows back from boxnet — the input drop was eating the door's replies 2026-07-14 23:13:25 +00:00
migrate-host.sh fix: run 17's four real findings — migrate retire, expose proxy, wait_box, grok PATH 2026-07-14 19:56:17 +00:00
setup-host.sh feat!: rename the host stack too, default to blank, drill the templates, add wipe 2026-07-14 14:36:39 +00:00
teardown-host.sh chore: finish the debrand — env vars, install dir, docs are 'box', not 'claudebox' 2026-07-14 17:44:24 +00:00