Files
bf-infra/routeros/wan-cutover-test.rsc
Christoph Emsenhuber 51054938ac AP4.1 🧪 Offline-WAN-Cutover-Test für ap1 — scheduler-frei, Disk-Log
Toolkit, um den FB-Bridge/Passthrough-Cutover (Liwest) autonom auf ap1 zu
testen, während Claude/MikroMCP offline ist (Test-Client auf install-wifi,
LAN4-Umstecken kappt den Live-Pfad).

- wan-cutover-test.rsc: wantest-probe (schichtweise Diagnose: ether1-IP,
  default-gw, WAN-Reach via :resolve@1.1.1.1, DoH end-to-end) + wantest-run
  (blockierender Loop, Hintergrund-fähig). Persistentes Disk-Logging nach
  wan-test.0.txt.
- wan-macclone-test.rsc: CM-MAC-Clone (0C:72:74:36:90:99) mit eingebautem
  Auto-Revert (~90s), scheduler-frei.
- wan-cutover-runbook.md: Solo-Runbook für den User (Console altes WiFi →
  10.40.41.1).

Scheduler-frei, weil device-mode=home auf ap1 /system scheduler und /tool
fetch blockiert. Reachability via :resolve statt ping ([/ping] gibt in
7.23 nil; ICMP hier geblockt). Public-IP 86.56.201.104 bereits bewiesen
(kein Liwest-MAC-Lock).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 00:57:05 +02:00

59 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ===== ap1 — Offline-fähiger WAN-Cutover-Test (scheduler-frei) =====
# RouterOS 7.23.x, device-mode=home. Schichtweise Diagnose für FB-Bridge/Passthrough-Cutover.
#
# ⚠️ device-mode blockiert /system scheduler (scheduler=false) UND /tool fetch (fetch=false).
# Daher: KEINE Scheduler — Autonomie via blockierendem Loop-Script (läuft im Hintergrund
# weiter, auch wenn die Console-Session abreißt). Raw-Internet-Test via :resolve gegen feste
# IP (ICMP/fetch sind hier unbrauchbar/geblockt).
#
# Apply: per REST/MikroMCP ODER /import wan-cutover-test.rsc
# Lesen: /log print where message~"WANTEST" bzw. Datei wan-test.0.txt (persistent)
# Einzel: /system script run wantest-probe
# Lauf: /system script run wantest-run (24 Proben @15s = ~6 min; Hintergrund-fähig)
# vorher optional: :global WTN 40 (mehr Iterationen)
# Stop: /system script job print → /system script job remove [find script=wantest-run]
# --- idempotent: alte Versionen entfernen ---
/system scheduler remove [find name~"^wantest-"]
/system script remove [find name~"^wantest-"]
/system logging remove [find action="wantest"]
/system logging action remove [find name="wantest"]
# --- persistentes Logging auf Disk (überlebt Offline-Fenster + Reboot) ---
# topics=script greift NUR auf script-generierte :log-Zeilen → genau unsere WANTEST-Zeilen
/system logging action add name=wantest target=disk disk-file-name=wan-test disk-lines-per-file=2000
/system logging add topics=script action=wantest
# --- Probe: eine schichtweise Messung, jede Zeile mit Timestamp + WANTEST-Prefix ---
/system script add name=wantest-probe policy=read,write,test,policy source={
:local ts ([/system clock get date] . " " . [/system clock get time])
:local e1stat "?"
:do { :set e1stat [/ip dhcp-client get [find interface=ether1] status] } on-error={}
:local e1addr "-"
:do { :set e1addr [/ip dhcp-client get [find interface=ether1] address] } on-error={}
:local e1mac [/interface ethernet get [find name=ether1] mac-address]
:log info ("WANTEST [" . $ts . "] ether1 status=" . $e1stat . " addr=" . $e1addr . " mac=" . $e1mac)
:local gw "-"
:do { :set gw [/ip route get [find dst-address="0.0.0.0/0" active=yes] gateway] } on-error={}
:log info ("WANTEST route default-gw=" . $gw)
# WAN-Routing+NAT: Router -> public 1.1.1.1 (UDP/53). UNABHÄNGIG von ap1-DNS-Config.
# (ICMP/HTTPS sind hier geblockt -> :resolve gegen feste IP ist das robuste Signal.)
:do { :local w [:resolve "google.com" server=1.1.1.1] ; :log info ("WANTEST wan-reach via-1.1.1.1 ok google.com=" . $w) } on-error={ :log info "WANTEST wan-reach via-1.1.1.1 FAIL (Routing/NAT?)" }
# DoH end-to-end: ap1-Resolver = was die Clients als DNS bekommen
:do { :local d [:resolve "google.com"] ; :log info ("WANTEST dns-doh ok google.com=" . $d) } on-error={ :log info "WANTEST dns-doh FAIL (DoH/Bootstrap?)" }
}
# --- Run: blockierender Loop, probt N×@15s. Hintergrund-fähig (überlebt Session-Abbruch). ---
/system script add name=wantest-run policy=read,write,test,policy source={
:global WTN
:if (([:typeof $WTN] = "nothing") or ($WTN = "")) do={ :set WTN 24 }
:log info ("WANTEST run start (" . $WTN . "x @15s, ~" . ($WTN * 15 / 60) . " min)")
:for i from=1 to=$WTN do={
/system script run wantest-probe
:delay 15s
}
:log info "WANTEST run done"
}
:log info "WANTEST cutover-test installiert (probe + run, scheduler-frei, disk-logging)"