# ===== 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)"