fix(dns): retire tailscale-router references; netinfra pair is prod [#728]
Founder ruling 2026-09-02: tailscale-router retired, subnet routing now pfv-netinfra-01/02 (both advertise 192.168.0.0/22 + exit routes, verified). Drop dead tsrouter alias from the chokepoint script; setup/verify now use the primary as production source; refresh verify record list (tsys-nsm is also a dead name; add tsys-wazuh CNAME + tsys-siem). archive/KNELServerBuild copies left as read-only history by design.
This commit is contained in:
@@ -11,12 +11,14 @@
|
|||||||
# script. Mirrors the pattern of tests/remote.sh.
|
# script. Mirrors the pattern of tests/remote.sh.
|
||||||
#
|
#
|
||||||
# HOSTS (override IPs via env if needed):
|
# HOSTS (override IPs via env if needed):
|
||||||
# tsrouter tailscale-router.knel.net (PRODUCTION — READ-ONLY here)
|
|
||||||
# netinfra01 pfv-netinfra-01.knel.net (Technitium primary target)
|
# netinfra01 pfv-netinfra-01.knel.net (Technitium primary target)
|
||||||
# netinfra02 pfv-netinfra-02.knel.net (Technitium secondary target)
|
# netinfra02 pfv-netinfra-02.knel.net (Technitium secondary target)
|
||||||
# netboot pfv-netboot.knel.net (reference / validation client)
|
# netboot pfv-netboot.knel.net (reference / validation client)
|
||||||
# sandbox sectestbed-sandbox.knel.net (validation client)
|
# sandbox sectestbed-sandbox.knel.net (validation client)
|
||||||
#
|
#
|
||||||
|
# NOTE: the former tsrouter alias (tailscale-router.knel.net) was removed
|
||||||
|
# 2026-09-02 — that host is retired; subnet routing is now the netinfra pair.
|
||||||
|
#
|
||||||
# All hosts are accessed as $VM_USER (default: localuser) over SSH with key auth
|
# All hosts are accessed as $VM_USER (default: localuser) over SSH with key auth
|
||||||
# and passwordless sudo.
|
# and passwordless sudo.
|
||||||
#
|
#
|
||||||
@@ -27,15 +29,13 @@
|
|||||||
# remote-dns.sh <host-alias>-copy <local> <remote-dest> copy a file to host
|
# remote-dns.sh <host-alias>-copy <local> <remote-dest> copy a file to host
|
||||||
#
|
#
|
||||||
# e.g.
|
# e.g.
|
||||||
# remote-dns.sh tsrouter 'hostname; whoami'
|
|
||||||
# remote-dns.sh netinfra01-root 'systemctl status dnsServer'
|
# remote-dns.sh netinfra01-root 'systemctl status dnsServer'
|
||||||
# remote-dns.sh tsrouter-file ./probe.sh
|
# remote-dns.sh netboot-file ./probe.sh
|
||||||
#
|
#
|
||||||
set -uo pipefail
|
set -uo pipefail
|
||||||
|
|
||||||
VM_USER="${VM_USER:-localuser}"
|
VM_USER="${VM_USER:-localuser}"
|
||||||
# Hostname -> FQDN map. Override individual IPs via env if a host moves.
|
# Hostname -> FQDN map. Override individual IPs via env if a host moves.
|
||||||
TSROUTER_HOST="${TSROUTER_HOST:-tailscale-router.knel.net}"
|
|
||||||
NETINFRA01_HOST="${NETINFRA01_HOST:-pfv-netinfra-01.knel.net}"
|
NETINFRA01_HOST="${NETINFRA01_HOST:-pfv-netinfra-01.knel.net}"
|
||||||
NETINFRA02_HOST="${NETINFRA02_HOST:-pfv-netinfra-02.knel.net}"
|
NETINFRA02_HOST="${NETINFRA02_HOST:-pfv-netinfra-02.knel.net}"
|
||||||
NETBOOT_HOST="${NETBOOT_HOST:-pfv-netboot.knel.net}"
|
NETBOOT_HOST="${NETBOOT_HOST:-pfv-netboot.knel.net}"
|
||||||
@@ -47,7 +47,6 @@ die() { echo "remote-dns.sh: $*" >&2; exit 1; }
|
|||||||
|
|
||||||
host_fqdn() {
|
host_fqdn() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
tsrouter) printf '%s' "$TSROUTER_HOST" ;;
|
|
||||||
netinfra01) printf '%s' "$NETINFRA01_HOST" ;;
|
netinfra01) printf '%s' "$NETINFRA01_HOST" ;;
|
||||||
netinfra02) printf '%s' "$NETINFRA02_HOST" ;;
|
netinfra02) printf '%s' "$NETINFRA02_HOST" ;;
|
||||||
netboot) printf '%s' "$NETBOOT_HOST" ;;
|
netboot) printf '%s' "$NETBOOT_HOST" ;;
|
||||||
@@ -79,7 +78,7 @@ case "$spec" in
|
|||||||
*-copy) mode="copy"; alias="${spec%-copy}" ;;
|
*-copy) mode="copy"; alias="${spec%-copy}" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
fqdn="$(host_fqdn "$alias")" || die "unknown host alias '$alias' (try: tsrouter|netinfra01|netinfra02|netboot|sandbox)"
|
fqdn="$(host_fqdn "$alias")" || die "unknown host alias '$alias' (try: netinfra01|netinfra02|netboot|sandbox)"
|
||||||
|
|
||||||
case "$mode" in
|
case "$mode" in
|
||||||
run) _run "$fqdn" "$*" ;;
|
run) _run "$fqdn" "$*" ;;
|
||||||
|
|||||||
@@ -2,12 +2,16 @@
|
|||||||
#
|
#
|
||||||
# setup.sh — Technitium DNS Cluster Setup
|
# setup.sh — Technitium DNS Cluster Setup
|
||||||
#
|
#
|
||||||
# Replicates the production Technitium DNS Server config from tailscale-router
|
# BOOTSTRAP (historical): originally exported the production config from the
|
||||||
# to the pfv-netinfra-01/02 pair, then configures 01 as primary and 02 as
|
# retired tailscale-router host to the pfv-netinfra-01/02 pair. Since
|
||||||
# secondary with automatic zone transfers (AXFR).
|
# 2026-09-02 (router retired) the export source is pfv-netinfra-01 itself,
|
||||||
|
# the live primary and SoR for knel.net zones.
|
||||||
#
|
#
|
||||||
# PRODUCTION SAFETY: tailscale-router is accessed READ-ONLY. No file on it is
|
# Configures 01 as primary and 02 as secondary with automatic zone
|
||||||
# modified. The only operation is a docker cp (read) to export the config.
|
# transfers (AXFR).
|
||||||
|
#
|
||||||
|
# PRODUCTION SAFETY: the export source is accessed READ-ONLY. No file on it
|
||||||
|
# is modified. The only operation is a docker cp (read) to export the config.
|
||||||
#
|
#
|
||||||
# ARCHITECTURE AFTER SETUP:
|
# ARCHITECTURE AFTER SETUP:
|
||||||
#
|
#
|
||||||
@@ -19,8 +23,6 @@
|
|||||||
# Pi-hole (:53) → Technitium (:5300 inside container)
|
# Pi-hole (:53) → Technitium (:5300 inside container)
|
||||||
# All zones are Secondary; AXFR from 01 on changes
|
# All zones are Secondary; AXFR from 01 on changes
|
||||||
#
|
#
|
||||||
# tailscale-router — PRODUCTION (untouched, read-only source of truth)
|
|
||||||
#
|
|
||||||
# CLUSTERING MECHANISM:
|
# CLUSTERING MECHANISM:
|
||||||
# Technitium primary/secondary via DNS zone transfers (AXFR/IXFR + NOTIFY).
|
# Technitium primary/secondary via DNS zone transfers (AXFR/IXFR + NOTIFY).
|
||||||
# 01 serves all zones as Primary. 02 fetches them as Secondary from
|
# 01 serves all zones as Primary. 02 fetches them as Secondary from
|
||||||
@@ -33,7 +35,7 @@
|
|||||||
# all three servers.
|
# all three servers.
|
||||||
#
|
#
|
||||||
# USAGE:
|
# USAGE:
|
||||||
# ./setup.sh export # Step 1: read-only export from tailscale-router
|
# ./setup.sh export # Step 1: read-only export from primary (netinfra-01)
|
||||||
# ./setup.sh deploy01 # Step 2: deploy config to netinfra-01 (primary)
|
# ./setup.sh deploy01 # Step 2: deploy config to netinfra-01 (primary)
|
||||||
# ./setup.sh deploy02 # Step 3: deploy config to netinfra-02 (secondary)
|
# ./setup.sh deploy02 # Step 3: deploy config to netinfra-02 (secondary)
|
||||||
# ./setup.sh cluster # Step 4: configure clustering (01 primary, 02 secondary)
|
# ./setup.sh cluster # Step 4: configure clustering (01 primary, 02 secondary)
|
||||||
@@ -46,7 +48,7 @@ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
REMOTE="$HERE/remote-dns.sh"
|
REMOTE="$HERE/remote-dns.sh"
|
||||||
|
|
||||||
# Host aliases (defined in remote-dns.sh)
|
# Host aliases (defined in remote-dns.sh)
|
||||||
PROD="tsrouter" # tailscale-router (READ-ONLY)
|
PROD="$PRIMARY" # export source: primary (was tailscale-router, retired 2026-09-02)
|
||||||
PRIMARY="netinfra01" # pfv-netinfra-01
|
PRIMARY="netinfra01" # pfv-netinfra-01
|
||||||
SECONDARY="netinfra02" # pfv-netinfra-02
|
SECONDARY="netinfra02" # pfv-netinfra-02
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ REMOTE="$HERE/remote-dns.sh"
|
|||||||
|
|
||||||
PRIMARY="netinfra01"
|
PRIMARY="netinfra01"
|
||||||
SECONDARY="netinfra02"
|
SECONDARY="netinfra02"
|
||||||
PROD="tsrouter"
|
# The retired tailscale-router was the old PROD comparison target; the
|
||||||
|
# primary itself is production since 2026-09-02.
|
||||||
|
PROD="$PRIMARY"
|
||||||
|
|
||||||
PRIMARY_IP="${PRIMARY_IP:-192.168.3.252}"
|
PRIMARY_IP="${PRIMARY_IP:-192.168.3.252}"
|
||||||
SECONDARY_IP="${SECONDARY_IP:-192.168.3.253}"
|
SECONDARY_IP="${SECONDARY_IP:-192.168.3.253}"
|
||||||
@@ -89,7 +91,7 @@ fi
|
|||||||
section "4. knel.net zone resolves identically on primary and secondary"
|
section "4. knel.net zone resolves identically on primary and secondary"
|
||||||
|
|
||||||
# Query a known record on both servers directly via Technitium's port
|
# Query a known record on both servers directly via Technitium's port
|
||||||
for name in pfv-netinfra-01 pfv-netinfra-02 tailscale-router tsys-cloudron tsys-nsm; do
|
for name in pfv-netinfra-01 pfv-netinfra-02 tsys-cloudron tsys-siem tsys-wazuh; do
|
||||||
fqdn="${name}.knel.net"
|
fqdn="${name}.knel.net"
|
||||||
# Query via dig against each Technitium instance (through Pi-hole on :53)
|
# Query via dig against each Technitium instance (through Pi-hole on :53)
|
||||||
pri_ans=$(run "$PRIMARY" "dig +short +time=3 +tries=1 @127.0.0.1 -p 53 $fqdn A 2>/dev/null | head -1" 2>/dev/null || true)
|
pri_ans=$(run "$PRIMARY" "dig +short +time=3 +tries=1 @127.0.0.1 -p 53 $fqdn A 2>/dev/null | head -1" 2>/dev/null || true)
|
||||||
|
|||||||
Reference in New Issue
Block a user