Files
felhom.eu/documentation/audits/night-2026-10-23/P2-D30
..

Part 2 — D30 live: clock ahead → (alarm input) → re-key → handshake

Box: test box Tester4-16fdef (nested VM 9344 on demo-hp, installed tonight from ISO 1.30.0), agent fixture 0.163.0-night.1 = felhom-agent ae69ad4 (D30). Hub: the live 0.165.0 (no alarm yet — the alarm and its clearing are pinned by hub tests, 84751cb0, not deployed). Tool: d30-box.sh (in the scratchpad; state lines print 8 characters of a PUBLIC key, never a private key).

File What
01a-run1-clock-ahead.txt, 02a-run1-clock-back.txt, 03a-run1-ep0-initiated-heal.txt Run 1: clock +2 h → a handshake stamped +2 h; clock back → the agent saw the future stamp (21:47) and, 3 min later, the stamp was in the past: ep0 started a handshake of its own (it had traffic for the box; the box accepts ep0's timestamps), the tunnel healed, the agent correctly did not re-key
04-run2-block-and-ahead.txt, 05-run2-clock-back.txt Run 2, the rehearsal's condition: ep0's handshake starts dropped on the box (iptables u32 on WireGuard message type 1, comment d30-test); clock +2 h, back
06-run2-after-rekey.txt the tunnel dead; at 22:10:09 local RE-KEYED (old 3q1B4aHW… → new HAYwc1Cx…), the hub: existed=false generation=3 sync=ok, same 10.77.0.5; the old key kept as private.key.prev
07-run2-new-key-handshake.txt 22:15:36 local the desired state carried the new key → conf applied → a handshake with the new key, tunnel ping ok; the test rule removed (rules left: 0)
08-hub-db-read.txt the hub (named columns): wg_peers holds the new key for the host since 20:10:10Z; the stored reports show handshake_future_s=6851 at 20:00:35Z (the alarm's input)

Timeline (UTC): clock back 19:55:01 → future stamp seen 19:55:09 → re-key 20:10:09 → hub took it 20:10:10 → the box switched 20:15:36 (its next desired-state fetch) → handshake 20:15:36. Outage after the clock was right: ~20 min (the rehearsal's: until 2028 or a hand reset on ep0).