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:
58
routeros/wan-cutover-test.rsc
Normal file
58
routeros/wan-cutover-test.rsc
Normal file
@@ -0,0 +1,58 @@
|
||||
# ===== 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)"
|
||||
Reference in New Issue
Block a user