Skip to content

Gateway IP move: 192.168.2.42 → .45 (DHCP collision fix) - #44

Draft
baron-3dl wants to merge 2 commits into
mainfrom
worktree-gateway-ip-move
Draft

Gateway IP move: 192.168.2.42 → .45 (DHCP collision fix)#44
baron-3dl wants to merge 2 commits into
mainfrom
worktree-gateway-ip-move

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Incident

ai.3dl.one went down: the gateway VM and rd-node were both unreserved DHCP clients, and rd-node grabbed the gateway's 192.168.2.42, won ARP, and swallowed all ingress. The gateway VM, caddy, and k3s were healthy the whole time.

Fix applied (live, this branch records it)

  • UniFi controller: pinned rd-node → 192.168.2.42 and gateway → 192.168.2.45 as fixed-IP reservations (root cause: neither was reserved). rd-node keeps .42 because it's referenced in many downstream configs.
  • Azure DNS (3dl.one): ai and dev-ai A records .42 → .45.
  • Gateway VM: forced DHCP re-lease onto .45; repointed caddy binds .42 → .45; restarted caddy.
  • k3s (enterprise-ai): hostAliases + workspace-isolation NetworkPolicy .42 → .45 on chat, control-plane, ws-baron/claire/student; rolled the pods.
  • gateway.stealth.baron.local followed automatically (USG MAC-keyed hosts hook).

Verified

  • ai.3dl.one.45, serves HTTP 302 (portal), valid cert.
  • Issuer https://ai.3dl.one/realms/enterprise-ai → 200 over .45, byte-identical issuer string.
  • Chat pod resolves ai.3dl.one.45.

Follow-up (NOT in this PR — needs a design-aware pass)

  • The VM Caddyfile had drifted ahead of the repo (dedicated ai.3dl.one cert block); this PR syncs the repo to the live file.
  • The OIDC issuer migrated from the tailscale-funnel name to https://ai.3dl.one. design.md (Funnel-on-443 narrative), deploy/README.md, and the k8s gateway.tailcb6ef9.ts.net hostAliases still describe the old path and should be reconciled.

🤖 Generated with Claude Code

alice and others added 2 commits August 13, 2026 15:10
The gateway VM shared 192.168.2.42 with rd-node via DHCP; rd-node won ARP
and swallowed all ingress traffic, taking the public site down. Reserve the
gateway at a dedicated IP instead. Updates the five hard-coded .42 refs: the
Caddyfile LAN-TLS bind, the OIDC-issuer hostAliases on control-plane/chat/
workspace, and the workspace egress NetworkPolicy /32.

Router-side (DHCP reservation, :443 NAT, internal DNS) is done out-of-band;
deploy this only after the VM actually holds .45.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The VM's /etc/caddy/Caddyfile had drifted ahead of the repo: it carries a
dedicated `https://ai.3dl.one:443` origin block with its own LE cert
(/etc/caddy/certs/ai.3dl.one.*) that the repo copy never had, and the OIDC
issuer has migrated from the tailscale-funnel name to `https://ai.3dl.one`.
This records the live config as-is (now bound to .45). Design docs (design.md
Funnel narrative, deploy/README) and the k8s ts.net hostAliases still describe
the old issuer and need a separate reconciliation pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant