Files
bf-infra/routeros/wan-cutover-test.rsc

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