MikroTik als Netzwerktester

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.

 

Schreibe einen Kommentar