Skip to content

fix(lan): point split-horizon DNS at a second tower address to dodge the router's WiFi filter#480

Merged
etrobert merged 3 commits into
mainfrom
lan-ipv6-split-horizon
Jul 9, 2026
Merged

fix(lan): point split-horizon DNS at a second tower address to dodge the router's WiFi filter#480
etrobert merged 3 commits into
mainfrom
lan-ipv6-split-horizon

Conversation

@etrobert-bot

@etrobert-bot etrobert-bot commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Problem

Web services on tower are unreachable from WiFi clients on the home LAN: the Vodafone Station drops traffic from its WLAN to the port-forward target IP (tower, .10) on the forwarded ports (80/443). A full firmware audit (via its /api/v1) found no setting to lift this — no DMZ/exposed host, no NAT-loopback toggle, and the per-rule AllInterfaces flag is silently normalized back to true even when force-written through the API.

Key discovery

The filter is keyed to the forward's target IP, not the port: the identical services on a second tower IPv4 address pass the WLAN bridge fine. Verified live from aaron (WiFi): .10:443 times out, .11:443 answers HTTP 200.

Change

  • tower: add 192.168.0.11/24 as address2 on the enp11s0-static profile.
  • pi (lan-dns): point all eight split-horizon host-records at .11.
  • CLAUDE.md: document the filter's real semantics, the .11 mechanism, and why AAAA-based split horizon is a dead end on this LAN.

The port forwards keep targeting .10, so the external path is unchanged. Wired clients simply use .11 like everyone else.

Why not IPv6 (first attempt, abandoned)

An AAAA-based approach worked at the packet level (the Station doesn't filter IPv6 on-link) but fails at the client: the Station advertises SLAAC prefixes with no default route and there is no external IPv6 — and without a v6 default route, macOS/iOS getaddrinfo filters AAAA answers out entirely (confirmed: dig returned the AAAA, getaddrinfo returned only the A). Plain requests kept timing out.

Verification

  • nix build .#nixosConfigurations.tower.config.system.build.toplevel succeeds; generated keyfile renders address2=192.168.0.11/24.
  • nix eval .#nixosConfigurations.pi.config.services.dnsmasq.settings.host-record shows all eight names → .11.
  • Mechanism verified live end-to-end before this PR: from aaron (WiFi), nc to .11:80/443 OPEN and curl --resolve test.etiennerobert.com:443:192.168.0.11 → 200; same from pi (wired).

After merge + rebuild of both hosts: sudo systemctl restart NetworkManager-ensure-profiles && nmcli connection up enp11s0-static on tower (the ensure-profiles oneshot doesn't re-run on switch), then plain curl -sI https://test.etiennerobert.com/ from a WiFi client must answer instantly.

🤖 Generated with Claude Code

…the router's WiFi filter

The Vodafone Station drops traffic from WiFi clients to the port-forward
target IP (tower, .10) on the forwarded ports (80/443), making every web
service unreachable from WiFi. A firmware audit found no setting to lift
the filter — but it is keyed to the forward's target IP, not the port:
the same services on a second tower address pass fine (verified live
from aaron, HTTP 200).

- add 192.168.0.11 as a second address on tower's enp11s0 profile
- point pi's split-horizon host-records at .11 instead of .10

The port forwards keep targeting .10, so the external path is unchanged.

An AAAA/IPv6 approach was tried first and abandoned: the Station
advertises no IPv6 default route (and no external v6 exists), and
without one macOS/iOS getaddrinfo filters out AAAA answers entirely.
Documented in CLAUDE.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@etrobert-bot etrobert-bot force-pushed the lan-ipv6-split-horizon branch from 84bc9af to 2038085 Compare July 9, 2026 13:39
@etrobert-bot etrobert-bot changed the title fix(lan): publish AAAA records so WiFi clients reach tower over IPv6 fix(lan): point split-horizon DNS at a second tower address to dodge the router's WiFi filter Jul 9, 2026
@etrobert etrobert enabled auto-merge (squash) July 9, 2026 13:56
@etrobert etrobert disabled auto-merge July 9, 2026 13:58
@etrobert etrobert merged commit 6d257ca into main Jul 9, 2026
16 checks passed
@etrobert etrobert deleted the lan-ipv6-split-horizon branch July 9, 2026 14:02
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.

2 participants