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>
This commit is contained in:
2026-06-16 00:57:05 +02:00
parent 48cdcc0fa2
commit 51054938ac
3 changed files with 186 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
# ===== ap1 — WAN MAC-Clone-Test (FB CM-MAC → ether1), scheduler-frei =====
# RouterOS 7.23.x, device-mode=home. Setzt wan-cutover-test.rsc voraus (nutzt wantest-probe).
#
# FB-WAN-MAC = CM-MAC 0C:72:74:36:90:99 (DOCSIS-SW 7.3.5.3.521, vom User aus FB-UI).
# ⚠️ CM-MAC = Cable-Modem-/DOCSIS-Layer. Im echten Bridge-Modus nutzt die FB diese MAC
# selbst → MAC-Konflikt-Risiko. Public-IP kam bereits mit ether1-eigener MAC → Clone ist
# Verifikation, kein Muss.
#
# device-mode blockiert /system scheduler → Auto-Revert ist hier KEIN Scheduler, sondern fest
# in den Clone-Lauf eingebaut (linearer Ablauf, ~90 s Clone-Fenster, dann garantierter Revert —
# läuft im Hintergrund zu Ende, auch wenn die Console-Session abreißt).
#
# Ablauf (Console über altes WiFi auf 10.40.41.1):
# 1) Baseline-Cutover mit ether1-eigener MAC (wantest-run) → Public-IP geloggt
# 2) /system script run wanmac-clone → setzt CM-MAC, release/renew, 4 Proben, AUTO-REVERT
# 3) Log prüfen: IP/Schichten mit FB-MAC vs. Baseline (/log print where message~"WANTEST")
# Not-Revert jederzeit: /system script run wanmac-revert
# --- idempotent ---
/system scheduler remove [find name~"^wanmac-"]
/system script remove [find name~"^wanmac-"]
# --- Clone: orig sichern → CM-MAC → release/renew → 4 Proben → GARANTIERTER Auto-Revert ---
/system script add name=wanmac-clone policy=read,write,test,policy source={
:global FBMAC
:if (([:typeof $FBMAC] = "nothing") or ($FBMAC = "")) do={ :set FBMAC "0C:72:74:36:90:99" }
:global E1ORIG
:set E1ORIG [/interface ethernet get [find name=ether1] mac-address]
:log info ("WANTEST macclone: orig=" . $E1ORIG . " -> fb=" . $FBMAC . " (Auto-Revert in ~90s)")
/interface ethernet set [find name=ether1] mac-address=$FBMAC
:do { /ip dhcp-client release [find interface=ether1] } on-error={}
:delay 2s
:do { /ip dhcp-client renew [find interface=ether1] } on-error={}
:delay 25s
:for i from=1 to=4 do={ /system script run wantest-probe ; :delay 15s }
# --- garantierter Auto-Revert im selben Lauf (kein Scheduler nötig) ---
/interface ethernet reset-mac-address [find name=ether1]
:do { /ip dhcp-client release [find interface=ether1] } on-error={}
:delay 2s
:do { /ip dhcp-client renew [find interface=ether1] } on-error={}
:delay 15s
/system script run wantest-probe
:log info ("WANTEST macclone done -> revert auf factory-MAC (orig war " . $E1ORIG . ")")
}
# --- Not-Revert: sofort Werks-MAC zurück (falls man früher raus will) ---
/system script add name=wanmac-revert policy=read,write,test,policy source={
/interface ethernet reset-mac-address [find name=ether1]
:do { /ip dhcp-client release [find interface=ether1] } on-error={}
:delay 2s
:do { /ip dhcp-client renew [find interface=ether1] } on-error={}
:delay 10s
/system script run wantest-probe
:log info "WANTEST macclone manual-revert -> factory-MAC"
}
:log info "WANTEST macclone-test installiert (clone mit eingebautem Auto-Revert + manual-revert)"