fix(nft): terminate deception-TCP tproxy rule with accept (+ tproxy routing) #157
No reviewers
Labels
No labels
bug
deploy
documentation
duplicate
enhancement
good first issue
help wanted
invalid
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
femboy/blackwall!157
Loading…
Reference in a new issue
No description provided.
Delete branch "sp-fix-tproxy-accept"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The prerouting deception-TCP → tproxy rule set the tproxy verdict but no terminal verdict, so the packet kept evaluating the chain and the tproxy socket assignment could be lost. Canonical nftables tproxy is
meta mark set <m>; tproxy to :<port>; accept.render.rs: reorder tomark set → tproxy → acceptand add the terminatingStatement::Accept. This sits after the C2c stateless-tcpqueuerule (rule 7, a terminal verdict), so stateless-tcp ports are queued and never reach this rule — no interaction with C2c. Snapshot regenerated (ruleset_json_snapshotpasses).apply.rs: setnet.ipv{4,6}.conf.all.src_valid_mark=0inensure_tproxy_route— the kernel's documented value that allows the mark-based asymmetric return path through reverse-path filtering ("transparent proxying").smoke-deception.sh: disable veth RX/TX checksum offload in the routed-prefix smoke so userspace-built replies carry correct checksums.Interactive-tier tproxy correctness fix (the likely cause of the
deception-nftgate trouble). No product-behavior change to the stateless/XDP tiers.Gate:
blackwall-nft21 tests pass (incl. snapshot), fmt + clippy--deny warningsclean.