# # -- testovano na RouterOS v 6.43.2 # :local FirstCheckIP "8.8.8.8"; # IP testovana pres hlavni WAN :local SecondCheckIP "8.8.4.4"; # IP testovana pres zalozni WAN :local FirstGateway "192.168.88.1"; # <------ zde IP nahradit za branu hlavni WAN 1 :local SecondGateway "192.168.99.1"; # <------ zde IP nahradit za branu zalozni WAN 2 :local GatewayCheckInterval "00:00:15"; # toto je interval kontrol zmeny brany # # Predpokladem pro fungovani bezprostredne po spusteni tohoto skriptu je: # 1) primarni a sekundarni WAN jsou dostupne # 2) pokud je nejaka WAN pres DHCP, je "Add Default Route" = no # 3) neni definovana jina primarni routa na 0.0.0.0/0 # # Pred opakovanym spustenim tohoto skritpu je potreba # 1) smazat vsechny vytvorene routy na 0.0.0.0/0 a First/SecondCheckIP # 2) smazat se scheduleru spousteni "route_check" # 3) smazat skript "route_check" # -- pokud to pred oprakovanym spustenim neudelat, skript nekde # zhavaruje na duplicity a provede se jen jeho cast # /ip route add dst-address=$FirstCheckIP gateway=$FirstGateway scope=10; /ip route add dst-address=$SecondCheckIP gateway=$SecondGateway scope=10; /ip route add distance=1 gateway=$FirstCheckIP check-gateway=ping; /ip route add distance=10 gateway=$SecondCheckIP check-gateway=ping; /system script add name=route_check source=" :global MainWanRouteStatus; \r\n\ :local CurrentStatus 0; \r\n\ \r\n\ :set CurrentStatus [/ip route get [/ip route find gateway=\"$FirstCheckIP\"] active]; \r\n\ \r\n\ :if ([:len \$MainWanRouteStatus] < 3) do { :set MainWanRouteStatus \$CurrentStatus; } \r\n\ \r\n\ :if ( \$MainWanRouteStatus != \$CurrentStatus) do { \r\n\ :log warning \"Route changed, clear active connections\"; \r\n\ /ip firewall connection {remove [find]} \r\n\ :set MainWanRouteStatus \$CurrentStatus; \r\n\ } \r\n\ "; :delay 3; # nutne, bez delay nekdy nevytvori zaznam v scheduleru kvuli prozatimni absenci skriptu /system scheduler add interval=$GatewayCheckInterval name=route_check on-event=route_check policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=jan/01/1970 start-time=00:00:00 :log warning "Setup finished"