Der Artikel MikroTik as a network tester, brachte mich auf diese Idee.
Ein handliches Gerät, mit dem man schnell mal testen kann, ob an einem Switchport oder einer Patchdose Internet verfügbar ist.
Testet die Netzwerkkonfiguration im LAN, ob man per DHCP eine IP erhält und über das Gateway das Internet erreichen kann.
Kann natürlich auch mit einem Notebook gemacht werden, ist dann aber wieder etwas unhandlicher.
Hardware
Einrichtung
- ETH1 als DHCP Client.
- ETH2 und WLAN sind deaktiviert.
- Der mAP wird über USB mit einer Powerbank betrieben.
- Beim einschalten des Routers werden über den internen Scheduler zwei Skripte ausgeführt.
- Skript 1, lässt einfach nur die LED 1 blinken. (optional)
- Skript 2, läuft (alle 15 Sekunden) im loop. Prüft den dhcp status, pingt eine ip und einen hostnamen an.
- Der Status der einzelnen Prüfungen wird über die LEDs signalisiert. (6 LEDs können dazu genutzt werden.)
Skripte
Skript 1 – blinkled1
# set the amount of flashes in count and the led to use :local count 3600 :local led led1 # do not edit below this line :local numb 0 :local test [ /system leds find leds~"$led" ] :while ($numb < $count) do={ :set $numb ($numb + 1) /system leds set [find where leds="$led"] type=on :delay 0.3 /system leds set [find where leds="$led"] type=off :delay 0.3 }
Skript 2 – tester
# set ip and hostname to ping :local checkip "8.8.8.8"; :local checkdns "heise.de"; # turn leds off /system leds set [find where leds="led3"] type=off; /system leds set [find where leds="led4"] type=off; /system leds set [find where leds="led5"] type=off; /system leds set [find where leds="user-led"] type=off; :delay 2s; # check dhcp if ([/ip dhcp-client find status=bound]) do={ /system leds set [find where leds="user-led"] type=on; } else={ /system leds set [find where leds="led3"] type=on; } # check ip ping :if ([/ping $checkip count=4]) do={ /system leds set [find where leds="led4"] type=on; } else={ /system leds set [find where leds="led3"] type=on; } # check dns ping :if ([/ping $checkdns count=4]) do={ /system leds set [find where leds="led5"] type=on; } else={ /system leds set [find where leds="led3"] type=on; }
mikrotik-tester.rsc
Router Config
# mar/15/2020 16:23:24 by RouterOS 6.46.3 # model = RouterBOARD mAP 2nD /interface ethernet set [ find default-name=ether1 ] name=ETH1 set [ find default-name=ether2 ] disabled=yes name=ETH2 /interface wireless set [ find default-name=wlan1 ] disabled=yes /ip dhcp-client add disabled=no interface=ETH1 /ip service set telnet disabled=yes set www disabled=yes set ftp disabled=yes set ssh disabled=yes set api disabled=yes set api-ssl disabled=yes /system clock set time-zone-name=Europe/Berlin /system identity set name=MIKROTIK-TESTER /system leds set 0 type=off set 1 interface=ETH1 type=interface-status set 2 type=off set 3 type=off set 4 type=off add leds=user-led type=off /system scheduler add interval=15s name=tester on-event="/system script run tester" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ start-time=startup add name=blinkled1 on-event="/system script run blinkled1" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ start-time=startup /system script add dont-require-permissions=no name=blinkled1 owner=admin policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ \_set the amount of flashes in count and the led to use\r\ \n:local count 3600\r\ \n:local led led1\r\ \n\r\ \n# do not edit below this line\r\ \n:local numb 0\r\ \n:local test [ /system leds find leds~\"\$led\" ]\r\ \n:while (\$numb < \$count) do={\r\ \n :set \$numb (\$numb + 1)\r\ \n /system leds set [find where leds=\"\$led\"] type=on\r\ \n :delay 0.3\r\ \n /system leds set [find where leds=\"\$led\"] type=off\r\ \n :delay 0.3\r\ \n}" add dont-require-permissions=no name=tester owner=admin policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ \_set ip and hostname to ping\r\ \n:local checkip \"8.8.8.8\";\r\ \n:local checkdns \"heise.de\";\r\ \n\r\ \n# turn leds off\r\ \n:put \"turn leds off\"\r\ \n/system leds set [find where leds=\"led3\"] type=off;\r\ \n/system leds set [find where leds=\"led4\"] type=off;\r\ \n/system leds set [find where leds=\"led5\"] type=off;\r\ \n/system leds set [find where leds=\"user-led\"] type=off;\r\ \n:delay 3s;\r\ \n\r\ \n# check dhcp\r\ \nif ([/ip dhcp-client find status=bound]) do={\r\ \n:put \"dhcp bound\";\r\ \n/system leds set [find where leds=\"user-led\"] type=on;\r\ \n} else={\r\ \n:put \"no dhcp\";\r\ \n/system leds set [find where leds=\"led3\"] type=on;\r\ \n}\r\ \n\r\ \n# check ip ping\r\ \n:if ([/ping \$checkip count=4]) do={\r\ \n/system leds set [find where leds=\"led4\"] type=on;\r\ \n:put \"ping ok\";\r\ \n} else={\r\ \n:put \"no ping ip\";\r\ \n/system leds set [find where leds=\"led3\"] type=on;\r\ \n}\r\ \n\r\ \n# check dns ping\r\ \n:if ([/ping \$checkdns count=4]) do={\r\ \n/system leds set [find where leds=\"led5\"] type=on;\r\ \n:put \"ping dns ok\";\r\ \n} else={\r\ \n:put \"no ping dns\";\r\ \n/system leds set [find where leds=\"led3\"] type=on;\r\ \n}"
Einsatz
Der mAP im Testmodus.