59 lines
3.4 KiB
Plaintext
59 lines
3.4 KiB
Plaintext
# ===== 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)"
|