Leser dieses Blogs wissen, dass ich ein bekennender Freund von OpenWRT bin. Doch ein Blick über den Tellerrand schadet ja nicht – und so habe ich mich die letzten Wochen auf Empfehlung zweier Freunde hin näher mit RouterOS von MikroTik befasst und eine Basiskonfiguration aufgesetzt, die ich in der folgenden Serie näher vorstellen möchte.
Teil 1 befasst sich mit der Installation aktueller Firmware, dem Zurücksetzen der Einstellungen und einigen Basiskonfigurationen.
Ich muss ganz klar dazu sagen, dass RouterOS für mich noch unbekanntes Terrain und die letzte Beschäftigung mit Netzwerken schon einige Jahre her ist. Für Hinweise zu groben Patzern, Ungenauigkeiten und schlicht falschen Annahmen bin ich daher mehr als dankbar.
Was ist RouterOS?
RouterOS ist der Name eines Netzwerkbetriebssystems des lettischen Herstellers MikroTik, das meines Wissens auf Linux basiert. Zum Einsatz kommt es sowohl auf MikroTik-eigener Hardware, es ist aber auch als Standalone-Version für eigene Server oder virtuelle Maschinen verfügbar.
Der Funktionsumfang ist dabei durchaus üppig – zusätzlich zu Routing und Firewall sind unter anderem auch DHCP, DNS, Proxy, Dateifreigabe, BGP, OSPF, MPLS, VPN, Layer7-Filtering, WLAN-Controller und viele andere Features enthalten, die sich – entsprechendes Wissen vorausgesetzt – sowohl über die Kommandozeile, eine Weboberfläche als auch eine eigene grafische Administrationsoberfläche namens WinBox konfigurieren lassen. RouterOS wird in mehreren Lizenz-Leveln angeboten, die sich meines Wissens nur in der Zahl gleichzeitiger Verbindungen beispielsweise zum VPN-Server unterscheiden, nicht jedoch im Funktionsumfang selbst.

Die Funktionsvielfalt lässt schon erahnen, dass das Ganze trotz grafischer Konfiguration nicht für den Heimanwender gedacht ist, sondern sich an erfahrene Nutzer richtet, die wissen was sie tun. Ob ich mich dazu zählen darf, das wird sich noch zeigen… ;-)
Basissetup
Zwischenzeitlich habe ich mir selbst verschiedene Geräte angeschafft, um mein Netzwerkwissen wieder etwas aufzufrischen und im Zuge dessen eine Basiskonfiguration erarbeitet, die ich auf alle Geräte ausrolle. Momentan handelt es sich um ein Skript, das ich einfach per Copy & Paste auf die Geräte bringe. Wenngleich auch wesentlich professionellere Möglichkeiten zur Konfiguration bestehen, für meine Zwecke reicht das vorerst aus – meine lokale Version habe ich noch um Abfragen und Variablen erweitert, um das Ganze etwas flexibler zu gestalten, das lasse ich für diesen Beitrag zur Vereinfachung jedoch vorerst weg.
Updates einspielen
Zu Anfang installiere ich alle vorhandenen Updates, um mit einem aktuellen System zu arbeiten. Der Updateprozess ist dabei zweigeteilt: Zunächst wird RouterOS aktualisiert und nach einem Neustart kann das Update des Bootloaders eingespielt werden. Der zwischenzeitliche Reboot ist wichtig, ansonsten sperrt man sich u.U. aus dem Gerät aus.
RouterOS wird in mehreren Versionen geliefert – neben der Legacy-Version gibt es einen Bugfix-only-Zweig ohne neue Funktionen, dann die aktuelle stabile Version sowie den Entwicklungszweig mit Release Candidates. Für meine Systeme wähle ich die aktuelle stabile Version aus:
/system package update set channel=current
Sofern RouterOS schon Zugriff aufs Internet hat, lassen sich die Updates automatisch abfragen und herunterladen:
/system package update check-for-updates /system package update download
Auf Systemen, die noch keinen Netzzugang haben genügt es, die jeweilige NPK-Datei vom Hersteller herunterzuladen und beispielsweise via WinBox ins Hauptverzeichnis zu kopieren. In allen Fällen wird das Update mittels Reboot durchgeführt:
/system reboot
Nach dem Neustart ist die aktuelle Version sowohl in der WinBox-Titelzeile als auch in der Konsole sichtbar. In einem zweiten Schritt kann jetzt der Bootloader aktualisiert werden. Dazu genügt ein
/system routerboard upgrade
wiederum gefolgt von einem Neustart mittels
/system reboot
Anschließend hat man ein aktuelles System.
IPv6 aktivieren
Um alle erforderlichen Neustarts am Stück zu ereldigen, installiere ich zu diesem Zeitpunkt gleich das IPv6-Paket, denn auch dieses benötigt einen Reboot. Der Befehl dazu lautet
/system package enable ipv6
gefolgt von einem erneuten
/system reboot
Konfiguration zurücksetzen
RouterOS wird je nach Gerät mit einer Standardkonfiguration ausgeliefert, die einen möglichst einfachen Betrieb ermöglichen soll. Es kann sich durchaus lohnen, diese als Grundlage zu verwenden – in meinem Szenario möchte ich allerdings einen definierten Ausgangszustand verwenden und setze daher die gesamte Konfiguration auf Null zurück. Das geht einfach mit
/system reset-configuration no-defaults=yes skip-backup=yes keep-users=no
gefolgt von einem – richtig geraten! – anschließenden Neustart, der hier automatisch erfolgt. Wichtig: Sämtliche IP-Verbindungen werden dadurch entfernt, d.h. ein Zugriff ist erst einmal nur noch über MAC möglich, beispielsweise per WinBox oder Telnet. (Danke an Sebastian für den Hinweis.)
Ein Tipp am Rande: Wer die Standardkonfiguration für sein Gerät betrachten möchte, um sich ein paar hilfreiche Einstellungen anzusehen, erhält diese einfach per
/system default-configuration print
SSH absichern
Als nächstes soll die SSH-Verbindung abgesichert werden. Um ausschließlich starke Kryptographie zuzulassen und einen Schlüssel von 4096 Bit zu nutzen muss folgendes Kommando eingegeben werden:
/ip ssh set strong-crypto=yes /ip ssh set host-key-size=4096
Zusätzlich erzeuge ich grundsätzlich auf all meinen Systemen, auch auf Linux-Servern, immer einen frischen Satz SSH-Hostkeys. Das hat sich in der Vergangenheit bereits bewährt, ich denke da nur an einen Bug in Provider-Linux-Images, die auf allen Systemen zu identischen Hostkeys geführt haben. Einen neuen Key erzeugt man unter RouterOS mittels
/ip ssh regenerate-host-key
Da wir aber gleichzeitig auch die Schlüsselgröße und Einstellungen der Kryptographie geändert haben, benötigt das System noch einen zusätzlichen Reboot, der aufgrund der Schlüsselerzeugung etwas länger als gewohnt dauern kann:
/system reboot
Wer bin ich?
Der Hostname des Systems lautet standardmäßig “MikroTik”, was spätestens bei mehreren RouterOS-Geräten im Netz für Verwirrung sorgt. Über ein
/system identity set name="gateway1"
lässt sich der Name entsprechend setzen – natürlich auch auf etwas Kreativeres als “gateway1”, ich bevorzuge beispielsweise Comicfiguren.
Benutzer einrichten
Bevor es weitergeht, sollte der eigene Benutzer einen etwas kreativeren Namen als das standardmäßige “admin” bekommen – und ein Passwort will natürlich auch gesetzt werden, um Eindringlinge abzuhalten. Den bestehenden Nutzer benennt man einfach mittels
/user set admin comment="Max Mustermann" name="maxmuster"
um. Nach einem erneuten Login lässt sich das Passwort mittels
/password
setzen, wobei bei der Abfrage des Altpassworts einfach die Enter-Taste genutzt wird.
Uhrzeit und Zeitzone setzen
Damit die Logdateien den richtigen Zeitstempel haben, konfiguriere ich sodann die Zeitzone und setze zwei NTP-Server, von denen sich RouterOS die aktuelle Uhrzeit holen kann:
/system clock set time-zone-name=Europe/Berlin /system ntp client set server-dns-names="pool.ntp.org,time.google.com" enabled=yes
Spätestens seit dem Zurücksetzen der Einstellungen hat RouterOS allerdings keinen Zugang zum Internet mehr, sodass die Uhrzeit aktuell noch nicht bezogen werden kann – der Einrichtung des Netzwerks widmen wir uns dann im nächsten Teil des Artikels.
Geht das also über Router-Software wie RouterOS hinaus oder ist das “nur” eine Alternative?
Es gibt Hardware, die mit vorinstalliertem RouterOS geliefert wird und es gibt eine Version zur Installation auf dem eigenen Server oder in der VM. Man kann wohl auch OpenWRT innerhalb von RouterOS installieren, das habe ich mir aber selbst noch nicht angesehen. ;-)
Arg, da habe ich beim Umformulieren meines ersten Test-Entwurfes einen Fehler gemacht. Richtig wäre:
Geht das also über Router-Software wie OpenWRT hinaus oder ist das „nur“ eine Alternative?
Es kann meiner Meinung nach mehr als OpenWRT. Vielleicht lassen sich die Funktionen bei OpenWRT nachrüsten, das hab ich aber noch nicht probiert.
Ok, dann lass ich die Finger davon. :-)
;-)
Ein Nachtrag zum Update des Bootloaders: Das ist bei weitem nicht regelmäßig nötig, denn neue Versionen kommen nicht so oft wie die des Betriebssystems.
Es empfiehlt sich daher, zunächst mittels
/system routerboard print
nachzusehen, ob current-firmware und upgrade-firmware unterschiedlich sind. Ansonsten kann das Update einfach übersprungen werden.
Moin
Vielleicht kann mir hier jemand helfen unter DHCP Server – — LEASES hat man ja eine schöne Tabelle mit den Ips der Rechner/Wlan Geräte usw. im Netzwerk und hier werden auch jeweils die “Aktiven Host Name” angezeigt.
Nur leider in manchen Fällen nicht! Z.B. meine nvidia Shield, der esxi HOST und die Sophos Firewall. Windows und Debian Client bzw. auch Handys wie Huawei Iphone Samsung sprich Android und IOS werden ohne Probleme die Hostname erkannt.
Wisst Ihr da ne Lösung kann ich mit hilfe eines Scriptes oder wie auch immer eine Lösung finden ?
MfG
K
Nur eine Vermutung, aber senden diese Geräte einen DHCP-Hostnamen mit? Der wird meines Wissens nämlich nicht aus dem DNS “gezogen”, sondern es wird angezeigt, welchen Namen der DHCP-Client übermittelt. Schickt er keinen mit, dann würde das erklären, warum das Feld leer ist.
Du schreibst:
> ein Zugriff ist erst einmal nur noch über MAC möglich, beispielsweise per WinBox oder Telnet
Meinem (Laien-)Wissen nach ist Telnet nur möglich, wenn eine IP-Verbindung besteht. Geht das wirklich auch über MAC? Wenn ja: wie?
Die WinBox bietet auch einen Telnet-Zugriff per MAC an. :-)
Ja, gut als Mac User bin ich bei WinBox raus – und nehme mit dem Webinterface Vorlieb. Schade dass es da keinen anderen Weg gibt.
WinBox läuft via WINE auch auf dem Mac :-)