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 5 befasst sich mit der Einrichtung der Internetverbindung.
Die Lektüre von Teil 1, Teil 2, Teil 3 und Teil 4 wird empfohlen, da die folgende Anleitung darauf aufbaut.
Die hier genannten Befehle sind mit RouterOS bis einschließlich Version 6.40.x getestet. Ab Version 6.41 ändert sich insbesondere die Konfiguration der Bridges, sodass die Kommandos ggf. angepasst werden müssen. Einen Überblick über die Neuerungen gebe ich in einem separaten Blogposting.
Switches und Access Points
Sofern das Gerät lediglich als Switch oder Access Point arbeitet, ist die Konfiguration schnell erledigt – wir weisen es an, sich die IP-Adresse und den DNS-Server per DHCP vom eigentlichen Router zu holen. Beim Switch lautet der Befehl
/ip dhcp-client add interface=ether1 use-peer-dns=yes use-peer-ntp=no add-default-route=yes disabled=no
Beim Access Point muss indes wieder die Bridge genommen werden:
/ip dhcp-client add interface=bridge1 use-peer-dns=yes use-peer-ntp=no add-default-route=yes disabled=no
Das war’s auch schon – jetzt sollte das Gerät eine Adresse im lokalen Netz zugewiesen bekommen und eine Verbindung ins Internet haben. Testen lässt sich das beispielsweise mit
/ping www.google.com count=5
Router
Geht es indes um die Einrichtung eines Routers, müssen wir uns im Vorfeld ein paar Gedanken machen, wie die Verbindung zustande kommt und wie unser Netzwerk aufgebaut sein soll.
Möglichkeiten zur Einwahl ins Internet gibt es viele. In Deutschland am weitesten verbreitet ist sicherlich der Zugang per Kabel oder DSL. Während beim Kabelanschluss in der Regel der Router alle nötigen Informationen per DHCP vom Kabelmodem erhält, erfolgt bei DSL eine “Einwahl” mittels PPPoE.

Im Folgenden gehe ich von der Nutzung am Kabelanschluss aus, doch RouterOS lässt sich natürlich auch problemlos mit DSL nutzen. Angepasst werden müssen jedoch fast alle Einstellungen, die ether1 zum Gegenstand haben – diese Schnittstelle muss, insbesondere in der Firewall, entsprechend auf die PPPoE-Verbindung abgeändert werden. Mangels Testanschluss kann ich das derzeit leider nicht dokumentieren, liefere es aber zu gegebener Zeit nach.
Bei der Nutzung von DSL empfehle ich ein aktuelles VDSL-Modem. Die meisten Geräte beherrschen sowohl das alte ADSL-Protokoll als auch die neuere VDSL-Variante. Die Details zur nötigen Schnittstelle gibt’s in der Regel beim Provider, weit verbreitet sind in Deutschland heutzutage VDSL2-Anschlüsse nach Annex.J-Spezifikation.
Zwar gibt es nahezu keine “reinen” Modems mehr, die ohne Routing- und Firewallfunktionalität ausgeliefert werden, doch sofern ein Bridge-Modus (auch Stichwörter wie PPPoe Passthrough oder MPoA beschreiben meist das Gleiche) vorhanden ist, lässt sich die Verbindung in der Regel transparent zum Router durchreichen.
Bei vielen VDSL-Anschlüssen muss zudem händisch das VLAN-Tag 7 für die Verbindung nach draußen gesetzt werden. Die meisten Modems bieten eine entsprechende Funktion direkt mit an, die auch genutzt werden sollte, ansonsten unterstützt auch RouterOS das VLAN Tagging.
Auch bei Kabelmodems gilt es einiges zu beachten. Manche Kabelanbieter bieten beispielsweise gar kein IPv6 an, bei anderen muss man das Präfix von Anfang an in der richtigen Größe anfordern. Manche bieten IPv4 nur noch via Carrier Grade NAT (CGN) bzw. Dual-Stack Lite an, manche bieten IPv4 und IPv6 im “echten” Dual-Stack-Betrieb, teils abhängig von Tarif und Modem. Das Kabelmodem muss dabei in der Regel immer über das Kundeninterface des Providers in den so genannten Bridge-Mode gesetzt werden, was je nach Tarif erst vier Wochen nach Bereitstellung möglich ist. Vorsicht ist auch geboten bei eigenen Kabelmodems, denn nicht alle unterstützen den Bridge-Modus.
Lokales Netz definieren
Ganz gleich ob Kabel oder DSL, im Vorfeld sollten wir uns ein paar Gedanken zum eigenen Netzwerk machen. Bei der Beschreibung der Firewall hatte ich die so genannten privaten IP-Adressen schon kurz erwähnt. Jedes lokale Netzwerk benötigt einen solchen Adressbereich, um die darin befindlichen Geräte zu adressieren. Für kleine Netzwerke wird dabei in der Regel auf eine Adresse aus dem Bereich 192.168.x.y zurückgegriffen, wobei das “x” im Vorfeld definiert werden kann und das “y” für die einzelnen Geräte steht. Man spricht dabei übrigens auch von einem Netz der Größe /24.
Um eine Kollision mit den gängigsten vordefinierten Adressen, beispielsweise von Kabelmodems und vorgeschalteten Routern zu verhindern und um Probleme bei der Nutzung bei VPN zu vermeiden, empfehle ich, folgende Adressbereiche nicht zu verwenden:
- 192.168.0.y
- 192.168.1.y
- 192.168.10.y
- 192.168.100.y
- 192.168.178.y
MikroTik nutzt standardmäßig den Bereich 192.168.88.y, ich wähle gerne eine zufällige Zahl, die pro von mir verwaltetem Netzwerk eindeutig ist. Im folgenden Beispiel lautet unser Netz 192.168.64.0/24.
Zu jedem lokalen Netzwerk gehört auch ein lokaler Domainname, beispielsweise “intranet”. Der volle Name unseres Routers (wie in Teil 1 gesetzt) wäre dann gateway1.intranet.
Statische und dynamische Adressen
Innerhalb dieses Netzwerks gibt es nun zwei Arten von Adressen: die statischen Adressen, die immer demselben Endgerät zugewiesen werden, und die dynamischen Adressen, die beispielsweise von Gästen genutzt werden. Ich nutze dabei gerne folgendes Nummernschema:
- 192.168.64.1-199: statisch zugewiesene Adressen
- 192.168.64.200-239: dynamisch zugewiesene Adressen
- 192.168.64.240-253: statische Adressen für Netzkomponenten wie Router, Switches und Access Points
- 192.168.64.254: der Router selbst
Etwas verwirrend kann die Terminologie sein. Ein Client kann seine IP-Adresse statisch bzw. fest konfiguriert haben oder aber sie per DHCP beziehen. Der DHCP-Server wiederum kann die Adresse dynamisch zuweisen, oder immer dieselbe statische Adresse herausgeben.
Ich empfehle für Clients die Konfiguration per DHCP und dort die Nutzung statischer Adressen.
Ordnung in die Clients bringen
Bei Bedarf lässt sich insbesondere der Bereich mit den statischen Adressen noch weiter unterteilen. Ein Beispiel für eine Familie mit drei Personen:
- 192.168.64.1-99: kabelgebundene Endgeräte
- 192.168.64.10-29: Mama
- 192.168.64.30-49: Papa
- 192.168.64.50-69: Kind
- 192.168.64.100-199: per WLAN verbundene Endgeräte
- 192.168.64.110-129: Mama
- 192.168.64.130-149: Papa
- 192.168.64.150-169: Kind
Eine solch genaue Planung im Vorfeld erleichtert später die Zuordnung der Geräte und das Erstellen von Firewall-Regeln.
DNS-Client
Damit Adressen aus dem Internet korrekt aufgelöst werden können, benötigt RouterOS einen externen DNS-Server. Zwar bietet jeder Provider seinen eigenen Dienst an, doch nutze ich gerne unabhängige Optionen. Zum einen spare ich mir so die unsäglichen Suchseiten bei Aufruf einer ungültigen Adresse, die manche Provider als Service bieten, zum anderen ist die Konfiguration dann unabhängig vom genutzten Provider. Zudem scheinen immer wieder mal DNS-Störungen auch bei großen Anbietern aufzutreten, die man damit elegant umschifft.
Ich nutze gerne den öffentlichen DNS von Google. Wer das nicht möchte, der findet in einem Wikipedia-Artikel entsprechende Alternativen. Die Konfiguration funktioniert wie folgt:
/ip dns set allow-remote-requests=yes servers=2001:4860:4860::8888,2001:4860:4860::8844,8.8.8.8,8.8.4.4
DHCP-Client
Im nächsten Schritt geht es um die eigentliche Verbindung zum Kabelmodem. Ähnlich wie weiter oben für Switches und Access Points beschrieben, genügt es eine IP-Adresse per DHCP anzufordern. Der einzige Unterschied ist, dass ich RouterOS anweise, nicht den vom Provider gestellten DNS zu benutzten:
/ip dhcp-client add interface=ether1 use-peer-dns=no use-peer-ntp=no add-default-route=yes disabled=no
Statische IP-Adresse setzen
Per DHCP-Client erhält die Schnittstelle ether1 eine IPv4-Adresse zur Verbindung ins Internet. Nun gilt es, der Schnittstelle ether2, die zum lokalen Netzwerk zeigt, ebenfalls eine Adresse zuzuweisen, diesmal händisch. Anhand des obigen Beispiels nehmen wir die 192.168.64.254:
/ip address add address="192.168.64.254/24" interface=ether2
DHCP-Server konfigurieren
Ab diesem Zeitpunkt kommen die lokalen Clients bereits ins Netz, sofern sie wie folgt händisch konfiguriert werden:
- IP-Adresse aus dem Bereich 192.168.64.1-253
- Subnetzmaske /24 bzw. 255.255.255.0
- DNS-Server: 192.168.64.254
- Gateway: 192.168.64.254
Dieser Prozess lässt sich durch Nutzung eines lokalen DHCP-Servers wesentlich vereinfachen. Bei DHCP fragt der Client nach, mit welchen Daten er ins Netz kommt und der Router weist ihm diese zu.
Dem DHCP-Server teilen wir dafür zunächst den Adresspool mit, aus dem die Adressen dynamisch vergeben werden dürfen. Gemäß obigen Überlegungen sind dies 192.168.64.200-239 die im Pool namens “lan” verwaltet werden:
/ip pool add name="lan" ranges="192.168.64.200-192.168.64.239"
Danach konfigurieren wir die Netzwerkeinstellungen, die der DHCP-Server verteilen soll. Es handelt sich um das Netzwerk 192.168.64.0/24, als Gateway bzw. Router wird die 192.168.64.254 benutzt, ebenso wie für den DNS-Server. Die Netzmaske lautet 255.255.255.0 und “intranet” ist der Name der lokalen Domain im Beispiel:
/ip dhcp-server network add address="192.168.64.0/24" gateway="192.168.64.254" netmask="255.255.255.0" dns-server="192.168.64.254" domain="intranet"
Anschließend wird der DHCP-Server für das jeweilige Interface eingerichtet. Er trägt den Namen “lan” und hört auf der internen Schnittstelle ether2, vergibt Leases mit einer Laufzeit von jeweils einer Stunde aus dem zuvor erstellten Adresspool und soll für das Netzwerk verbindlich sein:
/ip dhcp-server add name="lan" interface=ether2 lease-time=1h address-pool=lan authoritative=yes bootp-support=none
Aktiviert wird das Ganze schlussendlich mittels
/ip dhcp-server enable lan
Einzelne Hosts eintragen
Als Tüpfelchen auf dem i können wir jetzt noch einzelne lokale Systeme sowohl in den DNS- als auch in den DHCP-Server eintragen. Somit sind die lokalen Geräte auch per Hostname erreichbar und erhalten immer dieselbe IP-Adresse. Dazu braucht es nur die MAC-Adresse der Netzwerkkarte oder WLAN-Schnittstelle, anhand derer der Client eindeutig identifiziert werden kann.
Um beispielsweise der (erfundenen und ungültigen) MAC-Adresse XX:XX:XX:XX:XX:XX den Hostnamen “arbeitsplatz.intranet” und die IP-Adresse 192.168.64.10 zuzuteilen, genügen folgende Befehle:
/ip dns static add name="arbeitsplatz.intranet" address="192.168.64.10" ttl=1h /ip dhcp-server lease add address="192.168.64.10" mac-address="XX:XX:XX:XX:XX:XX" comment="arbeitsplatz.intranet" server=lan
Sinnvoll ist es auf jeden Fall, einen DNS-Eintrag für den Router selbst anzulegen:
/ip dns static add name="gateway1.intranet" address="192.168.64.254" ttl=1h
Ausblick
Mit diesem fünften Teil meiner Serie zu RouterOS ist die Grundkonfiguration abgeschlossen. In den folgenden Teilen wird es unter anderem um IPv6 gehen sowie die Konfiguration des WLAN und das Sichern der Einstellungen.
Hallo Florian,
ich verfolge deinen Blog schon eine weile und bin immer wieder überrascht wie viel ich nebenbei noch lerne.
u.a. konnte ich dank dir ein DNS Problem sehr schnell lösen.
Allerdings hätte ich auch eine kurze Frage zum Routing zwischen mehreren (V)LANs:
Es bestehen beispielsweise zwei Netze 192.168.178…/24 sowie 10.0.0…/24 beide getrennt mit eigenem DHCP und zugriff auf WAN1.
Wie müsste ich jetzt eine Routingregel anlegen damit sämtliche Clients aus dem 192er Netz auf ein Storage im 10er Netz (10.0.0.15) zugreifen können?
(Optimalerweise soll eine feste IP z.B: 192.168.178.15 auf 10.0.0.15 geroutet werden)
Ich würde mich freuen wenn du dazu einen Blogbeitrag erstellen würdest oder mir dies kurz erläutern könntest.
Vielen Dank und mach weiter so!
Gruß und einen guten Rutsch.
Danke für die netten Worte und auch dir ein frohes neues Jahr! :-)
Spontan habe ich leider keine Anleitung dafür griffbereit, zuletzt hatte ich das vor einiger Zeit mal unter OpenWRT bzw. LEDE gemacht. Vermutlich gibt es mindestens zwei Möglichkeiten: Ein NAT in der Firewall, was aber nicht wirklich empfehlenswert ist, oder entsprechende Einträge in der Routing-Tabelle.
Vielleicht hat ja ein Mitleser des Blogs eine Konfiguration, die er teilen kann?
Ich würde noch einen ARP-Proxy in den Raum werfen.
Das ist in der Tat spannend, man kann damit die Konnektivität auf vom DHCP-Server vergebene Adressen beschränken. Hatte ich mir mal auf meine Todo gepackt, bin aber noch nicht dazu gekommen… :-)
Was mich interessieren würde – jetzt hast den Blick über den Tellerrand gewagt – was ist dein Fazit?
Kann man objektiv und emotionslos OpenWRT wirklich mit RouterOS vergleichen?
Ich habe mittlerweile alles auf RouterOS laufen, was primär daran liegt, dass mir CAPsMAN sehr gut gefällt und sich das (meines Wissens) mit OpenWRT/LEDE nicht so einfach nachbauen lässt.
Jedes System hat seine Vor- und Nachteile. Dass OpenWRT/LEDE freie Software ist, das ist natürlich ein ganz großer Bonus. Auch scheint mir IPv6 deutlich besser zu funktionieren – RouterOS beherrscht als DHCP-Server beispielsweise nur Prefix Delegation, aber nicht die Vergabe einzelner IPv6-Adressen per DHCPv6, und auch der Präfixwechsel scheint nicht ganz so einfach zu funktionieren, ebenso wie die Nutzung eines lokalen IPv6-DNS.
Die Hardwareauswahl für RouterOS ist deutlich interessanter, unter anderem gibt es Switches und Outdoor-APs, man kann praktisch sein gesamtes Netzwerk damit ausstatten. Auch die LTE Access Points sind wirklich schick und können einiges. Allerdings geht nicht alles, beispielsweise ist OpenVPN doch nur eingeschränkt nutzbar, u.a. mangels TLS static key oder UDP. Management Frame Protection für WLAN wäre auch noch interessant, das geht derzeit nur mit MikroTik-Clients. Auch Band Steering fehlt mir.
Ich habe keine Erfahrungen, wie einfach sich auch neuere Router mit alternativer Firmware flashen lassen, da wäre ich durchaus an Rückmeldungen interessiert. Es hatte sich ja mal angedeutet, dass es deutlich schwieriger werden soll aufgrund der ganzen kommenden Einschränkungen. Auch die Frage, inwieweit Hardware-NAT unterstützt wird (bei Anschlüssen von 200-400 MBit/s) wäre interessant, denn zumindest auf meinen alten Geräten gibt es hier mutmaßlich einen Engpass.
Als nächstes steht auf meinem Zettel noch OPNsense, das ich mir näher ansehen will. Ich kann mir gut vorstellen, als Gateway/Router wieder auf OpenWRT/LEDE oder OPNsense zu setzen und RouterOS bei den internen Komponenten einzusetzen.
“Wie müsste ich jetzt eine Routingregel anlegen…”
Es muss gar keine Regel angelegt werden ! Wozu auch…?! Der Mikrotik Router “kennt” beide IP Netze da sie ja direkt an ihm angeschlossen sind. Folglich kann er also auch von sich aus OHNE jegliches Regelwerk zwischen deinen beiden IP Netzen sofort routen…
Weitere Infos dazu findest du auch hier:
https://administrator.de/wissen/mikrotik-vlan-konfiguration-routeros-version-6-41-367186.html