Redirect web during network failure
Z Wiki UnArt Slavičín
Nová verze
Instalace
# Seznam vsech rozhrani, na ktere chceme aplikovat presmerovani
:global interfaces [:toarray "\"bridge1\""]
# Adresa brany - pri vypadku pingu na ni aktivujeme presmerovani
:global remote "192.168.128.1"
# Libovolna adresa routeru, na kterou budeme presmerovavat DNS pozadavky
:global local "192.168.128.10"
# Nastavime DNS proxy
/ip dns set allow-remote-requests=yes
/ip dns static
# Pridame pravidlo pro presmerovani vsech pozadavku sam na sebe
add name=".*" address=$local disabled=yes
# Pravidlo presuneme uplne nejvyse
move [find name=".*"] 0
# Pridame profil pro hotspot
/ip hotspot profile add dns-name="" hotspot-address=0.0.0.0 html-directory=malfunction
http-cookie-lifetime=3d http-proxy=0.0.0.0:0 login-by=cookie,http-chap name=malfunction
rate-limit="" smtp-server=0.0.0.0 split-user-domain=no use-radius=no
# Pro kazde rozhrani vytvorime vlastni hotspot
:foreach i in=$interfaces do={
/ip hotspot add disabled=yes idle-timeout=5m interface=$i keepalive-timeout=none profile=malfunction
}
/system script
# Pridame skript pro aktivaci presmerovani
add name=malfunction-on policy=ftp,reboot,read,write,test,winbox,password,sniff,api source=\
"/ip dns cache flush\r\
\n\r\
\n/ip hotspot\r\
\n:foreach server in=[find profile=\"malfunction\"] do={\r\
\nenable \$server\r\
\n}\r\
\n\r\
\n/ip dns static enable 0"
# Pridame skript pro deaktivaci presmerovani
add name=malfunction-off policy=ftp,reboot,read,write,test,winbox,password,sniff,api source=\
"/ip hotspot\r\
\n:foreach server in=[find profile=\"malfunction\"] do={\r\
\ndisable \$server\r\
\n}\r\
\n\r\
\n/ip dns cache flush\r\
\n/ip dns static disable 0"
# Nakonec pridame pingatko na adresu brany
/tool netwatch add comment=malfunction disabled=no down-script="/system script\r\
\nrun [find name=\"malfunction-on\"]" host=$remote interval=15s timeout=1s up-script="/system script\r\
\nrun [find name=\"malfunction-off\"]
Odinstalace
# Smazeme pingatko na adresu brany /tool netwatch remove [/tool netwatch find comment="malfunction"] # Zrusime DNS proxy /ip dns set allow-remote-requests=no # Smazeme pravidlo pro presmerovani vsech pozadavku sam na sebe /ip dns static remove [/ip dns static find name=".*"] # Smazeme hotspoty /ip hotspot remove [find profile=malfunction] # Smazeme profil pro hotspot /ip hotspot profile remove [find name=malfunction] /system script # Smazeme skript pro aktivaci presmerovani remove malfunction-on # Smazeme skript pro deaktivaci presmerovani remove malfunction-off
Stará verze
#Skript na přesměrování webu při výpadku spoje dál do sítě
# pro MikroTik 2.9.X
# Autor: Roman Ševčík
# Poznámka (Tomáš Dulík): Skript pingá na adresu zadanou v proměnné "ip"
# Pokud je brána nedostupná, aktivuje:
# 1. pravidlo v tabulce NAT, které má v komentáři označení "redirectDNS"
# Toto pravidlo zde není uvedeno, námět pro vylepšení: pokud pravidlo nenajde,
# skript by si jej mohl sám vytvořit
# 2. V modulu "Hotspot" aktivuje položku "malfunction". Hotspot obsahuje jednoduchý
# web server, který lze využít pro zobrazení stránky o výpadku. Romane,
# hoď sem ještě návod, jak v Hotspotu vytvořit "malfunction"
:local time-on
:local time-gw
#:local end
# IP adresa dalšího bodu sítě, ke kterému je toto AP připojeno (uvádějte v uvozovkach)
:local ip "10.143.18.1"
#
# pocet pingu
:local count 5
#
#
#Cas po který budu zobrazovat hlasku o nedostupnosti
:set time-on 1m
#
#Cas za jak dlouho se bude testovat dostupnost brany
:set time-gw 1m
#
#Při použití skriptu po spuštìní doporuèuju nechat nìjaký èas Routeru na nabìhnutí - upravte dle vlastní vùle
:delay 10s
#------------------------------------------------------
#
:while true do {
:if ([/ping $ip count=$count] = 0) \ do {
/ip hotspot enable malfunction
/ip firewall nat enable [find comment=redirectDNS]
:delay $time-on
} \
else {
/ip hotspot disable malfunction
/ip firewall nat disable [find comment=redirectDNS]
:delay $time-gw
}
}