feat(dns): PiHole answers an explicit LAN name list, not a zone wildcard #157
Open
gitea-admin
wants to merge 1 commits from
feat/pihole-explicit-lan-names into main
pull from: feat/pihole-explicit-lan-names
merge into: Home-Network:main
Home-Network:main
Home-Network:feat/dns-via-cloudflare-tunnel
Home-Network:feature/cloudflare-tunnel-config
Home-Network:chore/rotate-cloudflared-tunnel
Home-Network:fix/cloudflared-creds-permission
Home-Network:feat/cloudflare-tunnel
Home-Network:feat/parallel-l0-checks
Home-Network:feat/gate-toolbox-container
Home-Network:fix/keycloak-servicemonitor-owner
Home-Network:feat/runner-capacity-2
Home-Network:chore/renovate-config-cleanup
Home-Network:fix/keycloak-operator-crds
Home-Network:feat/devcontainer-velero-cli
Home-Network:feat/gitea-28
Home-Network:feat/l0-externaldns-annotation-prefix
Home-Network:fix/public-dns-wan-a-record
Home-Network:feat/pm-agent-pr-mentions
Home-Network:docs/source-comment-audit
Home-Network:chore/pm-agent-digest-99
Home-Network:fix/pm-agent-triage-exit
Home-Network:chore/pm-agent-go-live
Home-Network:chore/pm-agent-runner-digest
Home-Network:feature/pm-agent-credentials
Home-Network:feat/pm-agent-registry-pull-secret
Home-Network:feat/pin-pihole-jackett-plex
Home-Network:fix/renovate-hold-auth-and-self
Home-Network:feat/renovate-track-keycloak-operator
Home-Network:fix/renovate-run-hygiene
Home-Network:fix/renovate-auth
Home-Network:fix/renovate-first-run
Home-Network:feat/keycloak-passkey-reconcile
Home-Network:fix/gitea-admit-buildkit
Home-Network:feat/image-pipeline
Home-Network:fix/renovate-config-filename
Home-Network:fix/vpn-ingress-l2-lease-collision
Home-Network:fix/renovate-cron-window
Home-Network:fix/renovate-invalid-config
Home-Network:fix/pihole-local-ttl
Home-Network:fix/unattended-upgrades-debian-sentinel
Home-Network:fix/ha-check-catastrophic-regex
Home-Network:feat/automated-upgrades
Home-Network:fix/coredns-ha
Home-Network:feat/keycloak-passkeys
Home-Network:fix/oauth2-proxy-oidc-startup-race
Home-Network:feat/graceful-cluster-shutdown
Home-Network:plex/volume-expamsion
Home-Network:fix/bulk-nfs-truenas
Home-Network:fix/peers-configmap-content-hash
Home-Network:vpn/add-keith-phone
Home-Network:fix/new-peer-ignores-template-comments
Home-Network:fix/vpn-ingress-ip-forward
Home-Network:feature/add-private-key-for-wireguard
Home-Network:fix/vpn-server-key-in-sops
Home-Network:docs/pm-agent-registry-pull-prereq
Home-Network:fix/vpn-runbook-ansible-command
Home-Network:feat/pm-agent-issue-to-pr
Home-Network:docs/agents-work-in-their-own-workspace
Home-Network:feat/vpn-remote-access-wireguard
Home-Network:feat/cilium-roll-out-on-config-change
Home-Network:docs/oauth2-sidecar-scrape-verified
Home-Network:fix/plex-resolver-independent-advertise
Home-Network:fix/plex-unblock-app-tier
Home-Network:feat/hubble-flow-export-plex
Home-Network:fix/oauth2-sidecar-metrics-scrape-netpol
Home-Network:feat/plex-vip-hostname-and-lan-networks
Home-Network:fix/plex-advertise-plexdirect
Home-Network:docs/pihole-ha-verified
Home-Network:feat/pihole-multi-replica
Home-Network:feat/pihole-declare-state
Home-Network:feat/plex-remote-access-l4
Home-Network:fix/cilium-cgroup-hostroot
Home-Network:fix/node-keycloak-hosts-pin
Home-Network:feat/public-dns-wan-target
Home-Network:fix/plex-quicksync-verification
Home-Network:sync-39-onto-main
Home-Network:fix/admin-approval-override
Home-Network:feat/quicksync-via-device-plugin
Home-Network:bugfix/arr-to-plex
Home-Network:feat/oauth2-proxy-api-route-per-app
Home-Network:feat/intel-gpu-device-plugin
Home-Network:feat/oauth2-proxy-auth-failure-visible
Home-Network:fix/render-selftest-runs-in-gate
Home-Network:feat/plex-quicksync
Home-Network:feat/sd-hardware-capability
Home-Network:fix/jackett-oauth2-proxy-session
Home-Network:feat/node-health-render-device
Home-Network:fix/oauth2-proxy-cookie-collision-fleet
Home-Network:fix/flux-deploy-notification-inhibited
Home-Network:feat/flux-deploy-notifications
Home-Network:feat/conformance-job-template
Home-Network:feat/conformance-trigger-kubeconfig
Home-Network:feat/conformance-runner-image
Home-Network:fix/crafty-oauth2-proxy-signin
Home-Network:chore/decisions-log-conflict-free
Home-Network:fix/crafty-bedrock-19132
Home-Network:fix/gitea-settings-comment-names-impossible-secret
Home-Network:feat/ci-is-the-approver
Home-Network:fix/kyverno-policy-was-never-applied
Home-Network:docs/handoff-2026-09-29
Home-Network:fix/secret-name-and-require-gitea-settings
Home-Network:feat/conformance-trigger-admission-boundary
Home-Network:fix/cluster-available-would-fake-a-green
Home-Network:feat/gitea-settings-drift-check
Home-Network:fix/gitea-admins-could-override-the-gate
Home-Network:docs/close-out-ci-hardening
Home-Network:docs/ci-reality-vs-phase-0
Home-Network:docs/runbooks-pr-flow
Home-Network:fix/dind-native-sidecar
Home-Network:fix/gate-push-trigger-matches-feat-prefix
Home-Network:feat/plex-claim-token-013124
Home-Network:fix/conformance-context-is-fail-open
Home-Network:docs/ci-delivery-flow-for-agents
Home-Network:feat/plex-claim-sops-secret
Home-Network:feat/prod-hardening
Home-Network:prod/deliver-fixes
Home-Network:docs/memattr-6-12-backport
Home-Network:migration/dns-apex-inversion
Home-Network:feat/prod-memattr-and-nodes
Home-Network:docs/node2-memory-refine
Home-Network:feat/prod-node-2
Home-Network:feat/r-state-03-proven
Home-Network:feat/ledger-section-parsing
Home-Network:feat/conformance-run-ledger
Home-Network:chore/cilium-split-merge2
Home-Network:feat/cilium-own-kustomization
Home-Network:docs/poststart-incident
Home-Network:fix/poststart-exit-status
Home-Network:fix/strict-postbuild-substitutions
Home-Network:docs/phase-7-open-prod-node-1
Home-Network:rescued/fix/act-runner-dind-readiness
Home-Network:rescued/fix/node-dns-resilient-upstream
Home-Network:docs/reconcile-with-reality
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Public names are proxied CNAMEs to the Cloudflare Tunnel since #156 and work from the LAN, so Pi-hole's zone wildcard goes away. It now answers an explicit list; everything else is forwarded and resolves to Cloudflare from the LAN as from anywhere.
.${BASE_DOMAIN})${GATEWAY_VIP}controller: noneHTTPRoute; no public record and the tunnel 404s them${GATEWAY_VIP}${GATEWAY_VIP}Not listed, so Cloudflare from the LAN: the apex, grafana, crafty, seerr.
Rollout / LAN DNS blip. The env change rolls the StatefulSet (RollingUpdate, one pod at a time, pihole-1 then pihole-0; 2 replicas). No total outage expected: one replica answers throughout. Each replacement can lose a few UDP queries for ~1-2 s (clients retry), and for ~30-60 s the two pods answer differently for the unlisted names (both answers work). Estimate from the last measured rollout; not observed for this change.
Consequences to accept
wan.now also requires restoring the wildcard (recorded inrunbooks/cloudflare-tunnel.md).Flagged, not changed: the
piholecontainer has no readiness probe; only theoauth2-proxysidecar does, so Ready says nothing about DNS.New L0 check
pihole-lan-names(whole-repo scope): no zone-wide entry; every disowned route, every tunnel-404 host and gitea/nextcloud covered, L4 names on their own VIPs. 10 mutants against the real files each failed the check.Also corrects docs that still described public names as CNAME to
wan., and the cloudflared entrypoint comment (the pinned image's Entrypoint iscloudflared, Cmdversion).Gate: local toolbox rc 3. Stages that did not run:
gitea-settings(needs the CI token); L2/L3conformancescaffold-skipped (no cluster). spec-immutability, decisions-log, lint, l0, render-golden, l1 passed; approval-policy reports N/A offline.Needs
/approve-overridefrom the operator:conformance/tests/l0-static/pihole-lan-names/{check.sh,chainsaw-test.yaml}are sensitive paths, soapproval-policywill be red in CI until then.Not verified: behaviour against a live Pi-hole with the new list. After reconcile,
dig @192.168.2.23one name per row and confirm grafana returns Cloudflare. Details:decisions/2026-11-09-pihole-explicit-lan-names.md.🤖 Generated with Claude Code
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.