Policy based Routing mit Mikrotik 750
Guten abend zusammen,
ich bräuchte hilfe bei der Einrichtung des Mikrotik 750. Ich habe mir die Anleitung http://wiki.mikrotik.com/wiki/Load_Balancing_over_Multiple_Gateways durchgelesen, kann das aber leider nicht so umsetzten. Was mein Plan ist, zwei Porte sind fürs Internet. Und jetzt soll Computer A über Internet I ins internet, Computer B über II, Coputer C auch über II, usw. . Das ist ja das besagte Policy based Routing. Wenn mir jemand einen Anstubser geben kann wäre das echt toll (auf deutsch wäre besser, muss aber nicht sein). Beide Internetanschlüsse sind von der Telekom, weiß nicht ob das eine brauchbare Information ist.
Aktuell sieht es so aus, das Internetanschluss I über Gateway 192.168.1.111 und Internetanschluss II über Gateway 192.168.1.100. Muss ich das ändern, z.B auf 192.168.1.1 und den anderen auf 192.168.1.128? Der Mikrotik ist aktuell auf 192.168.1.122 geändert.
Wäre euch echt dankbar für Tipps. z.Z arbeite ich mit der Winbox, hab aber schon gelesen das die Kommandozeile besser zum programmieren des Routers geeignet ist.
ich bräuchte hilfe bei der Einrichtung des Mikrotik 750. Ich habe mir die Anleitung http://wiki.mikrotik.com/wiki/Load_Balancing_over_Multiple_Gateways durchgelesen, kann das aber leider nicht so umsetzten. Was mein Plan ist, zwei Porte sind fürs Internet. Und jetzt soll Computer A über Internet I ins internet, Computer B über II, Coputer C auch über II, usw. . Das ist ja das besagte Policy based Routing. Wenn mir jemand einen Anstubser geben kann wäre das echt toll (auf deutsch wäre besser, muss aber nicht sein). Beide Internetanschlüsse sind von der Telekom, weiß nicht ob das eine brauchbare Information ist.
Aktuell sieht es so aus, das Internetanschluss I über Gateway 192.168.1.111 und Internetanschluss II über Gateway 192.168.1.100. Muss ich das ändern, z.B auf 192.168.1.1 und den anderen auf 192.168.1.128? Der Mikrotik ist aktuell auf 192.168.1.122 geändert.
Wäre euch echt dankbar für Tipps. z.Z arbeite ich mit der Winbox, hab aber schon gelesen das die Kommandozeile besser zum programmieren des Routers geeignet ist.
Please also mark the comments that contributed to the solution of the article
Content-ID: 180258
Url: https://administrator.de/contentid/180258
Printed on: December 9, 2024 at 04:12 o'clock
44 Comments
Latest comment
/ip route
add comment="DSL A (Sonderfall)" dst-address=0.0.0.0/0 gateway=192.168.1.111 routing-mark=dslA
add comment="DSL B (Standard)" dst-address=0.0.0.0/0 gateway=192.168.1.100
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Client 1 ueber DSL A" new-routing-mark=dslA passthrough=yes src-address=192.168.1.X
Aber wozu da PBR?
Bei dem Netzaufbau kannst du auch einfach bei Client A und den anderen jeweils einen anderen Router eintragen.
Ok, dann musst du zuerst mal zwei PPPoE-Clients anlegen
Die sollten sich auch direkt verbinden.
Dann brauchst du eine LAN-IP:
Jetzt musst du noch NAT zum Internet aktivieren:
Damit sollten schonmal alle Clients ins Internet kommen.
Jetzt machen wir das ganze noch etwas sicherer:
Und dann kommt noch Policy Based Routing:
Der Teil ist bei DSL etwas blöd.
Zuerst mal musst du bei beiden PPPoE-Client "Add Default Route" aktivieren, und dann unter IP > Routes sicherstellen, das in der Gateway-Spalte immer die selben Werte stehen (auch nach Verbindungstrennung) und die notieren.
Dann auf die Route für das zweite Interface klicken und Copy auswählen, im neuen Fenster bei Routing Mark "dslB" eingeben -> OK.
Danach für das Interface wieder "Add Default Route" deaktivieren.
Client der Verbindung zuordnen:
/int ppoe-c
# Der erste Client ist die Standardverbindung für alle alles
add add-default-route=yes comment="Leitung 1" dial-on-demand=no interface=ether1 max-mru=1492 max-mtu=1492 name=pppoe1 use-peer-dns=yes user=... password=...
# Der zweite ist der Sonderfall
add add-default-route=no comment="Leitung 2" dial-on-demand=no interface=ether1 max-mru=1492 max-mtu=1492 name=pppoe2 use-peer-dns=no user=... password=...
Die sollten sich auch direkt verbinden.
Dann brauchst du eine LAN-IP:
/ip addr
add address=192.168.1.1/24 interface=ether3 comment="LAN-IP"
Jetzt musst du noch NAT zum Internet aktivieren:
/ip firew nat
add action=masquerade chain=srcnat comment="NAT fuer DSL1" disabled=no out-interface=pppoe1
add action=masquerade chain=srcnat comment="NAT fuer DSL2" disabled=no out-interface=pppoe2
Damit sollten schonmal alle Clients ins Internet kommen.
Jetzt machen wir das ganze noch etwas sicherer:
/ip neigh disc
set ether1 dis=yes
set ether2 dis=yes
/ip firew filter
#SPI-Regeln
add action=accept chain=spi comment="Bereits vorhandene Verbindungen akzeptieren" connection-state=established disabled=no
add action=accept chain=spi comment="Related Verbindugen akzeptieren (z.B. ICMP-Meldungen)" connection-state=related disabled=no
add action=drop chain=spi comment="Mikrotik Empfehlung: Pakete mit Invalid-Mark gleich loswerden" connection-state=invalid disabled=no
add action=return chain=spi comment="Zurueck, die restlichen Regeln sind Chain-spezifisch" disabled=no
#Input filtern
add action=jump chain=input jump-target=spi
add action=accept chain=input comment="Ping immer annehmen" disabled=no icmp-options=8:0 protocol=icmp
add action=accept chain=input in-interface=ether3 comment="Alles aus dem LAN annehmen"
add action=drop chain=input comment="Alles andere verwerfen"
#Forward filtern (alles vom und ins Internet)
add action=jump chain=forward jump-target=spi
add action=accept chain=forward in-interface=ether3 comment="Alles ueberall hin vom LAN erlauben"
add action=drop chain=input comment="Alles andere verwerfen"
Und dann kommt noch Policy Based Routing:
Der Teil ist bei DSL etwas blöd.
Zuerst mal musst du bei beiden PPPoE-Client "Add Default Route" aktivieren, und dann unter IP > Routes sicherstellen, das in der Gateway-Spalte immer die selben Werte stehen (auch nach Verbindungstrennung) und die notieren.
Dann auf die Route für das zweite Interface klicken und Copy auswählen, im neuen Fenster bei Routing Mark "dslB" eingeben -> OK.
Danach für das Interface wieder "Add Default Route" deaktivieren.
Client der Verbindung zuordnen:
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Client 1 ueber DSL B" new-routing-mark=dslB passthrough=yes src-address=192.168.1.X
Dann deaktiviere den PPPoE-Client und füge diese Regel hinzu:
Dann aktivierst du den PPPoE-Client für maximal(!) 5 Sekunden und postest dann die Ausgabe von
(Achtung, kann Passwörter enthalten!)
Danach kannst du die Regel oben wieder löschen.
/system logging
add action=memory disabled=no prefix="" topics=pppoe,debug
Dann aktivierst du den PPPoE-Client für maximal(!) 5 Sekunden und postest dann die Ausgabe von
/log print
Danach kannst du die Regel oben wieder löschen.
Ok, der Mikrotik findet kein DSL.
Darum nochmal zurück zum vorigen Schritt:
Poste von dem Fenster mal einen Screenshot.
Oder mach es auf der Kommandozeile und poste die Ausgabe:
Darum nochmal zurück zum vorigen Schritt:
Klick im PPPoE-Client auf "PPPoE Scan" und guck mal ob überhaupt in der Tabelle was auftaucht.
Poste von dem Fenster mal einen Screenshot.
Oder mach es auf der Kommandozeile und poste die Ausgabe:
/int pppoe-cl scan interface=ether1 duration=5
OK, ich kann da erstmal keinen Fehler erkennen.
Lad dir aber mal eine neuere Version runter: http://download2.mikrotik.com/routeros-mipsbe-5.12.npk
Die Datei einfach auf das Winbox-Fenster ziehen und danach den Router neustarten.
Hast du VDSL?
Lad dir aber mal eine neuere Version runter: http://download2.mikrotik.com/routeros-mipsbe-5.12.npk
Die Datei einfach auf das Winbox-Fenster ziehen und danach den Router neustarten.
Hast du VDSL?
ich habe nun erfolgreich nach der Anleitung oben das Internet aufbauen können und das PBR funktioniert auch wunderbar. Danke.
Einfach so?
Wie kann ich dyndns einrichten. Am besten für 2 Interanschlüsse getrennt, also für jeden einen acc.
Kopier dir das Script 2x mit den entsprechenden Einstellungen nach System > Scripts (als Name update-dyndns1 und update-dyndns2)
:local ddnsuser "username"
:local ddnspass "passwort"
:local theinterface "pppoe1"
:local ddnshost "hostname.dyndns.org"
:local ipddns [:resolve $ddnshost];
:local iplocal [ /ip address get [/ip address find interface=$theinterface ] address ]
:if ([ :typeof $iplocal ] = nil ) do={
:log info ("DynDNS: No ip address on $theinterface .")
} else={
# IP Adresse ist 1.2.3.4/32 also muss das /32 erstmal weg
:for i from=( [:len $iplocal] - 1) to=0 do={
:if ( [:pick $iplocal $i] = "/") do={
:set iplocal [:pick $iplocal 0 $i];
}
}
:if ($ipddns != $iplocal) do={
:log info ("DynDNS: IP-DynDNS = $ipddns <> local IP = $iplocal UPDATE")
:local str "/nic/update?hostname=$ddnshost&myip=$iplocal&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser password=$ddnspass keep=no
}
}
Bei Policy wählst du "read, test" aus.
Dann musst du dafür noch einen Scheduler anlegen:
/system scheduler
add disabled=no interval=1m30s name=update-dynamic-stuff on-event="/system script run update-dyndns1\r\n/system script run update-dyndns2\r\n" start-date=jan/01/2012 start-time=00:00:00
Wenn du echten DynDNS-Support willst musst du an support@mikrotik.com schreiben, vielleicht geben die irgendwann nach
Ist es möglich VPN einzurichten bzw. auf den server weiterzuleiten (GRE protokoll und Port forwarding)
Dazu musst du zuerst mit NAT den Port weiterleiten:
/ip firewall nat
add action=dst-nat chain=dstnat comment="PPTP Negotiation -> Server" dst-port=1723 protocol=tcp to-addresses=192.168.1.X in-interface=pppoe1
add action=dst-nat chain=dstnat comment="GRE -> Server" protocol=gre to-addresses=192.168.1.X in-interface=pppoe1
Und dann in der Firewall noch frei geben:
/ip firewall filter
add action=accept chain=forward comment="PPTP-Negotiation erlauben" dst-port=1723 protocol=tcp dst-address=192.168.1.X
add action=accept chain=forward comment="GRE erlauben" protocol=gre dst-address=192.168.1.X
Eine letzte frage zu PBR: Kann man Breiche (...1.4-...1.99) erstellen oder muss man jede ip einzeln eintragen?
Ja, du kannst Bereiche angeben, als "192.168.1.100-192.168.1.199"
EDIT: Funkitoniert dyndns auch noch mit anderen Anbietern als dyndns.com?
Ja, solange die eine änhliche Technik verwenden. Du musst dir nur die entsprechenden URLs raussuchen.
ok passt das dann so
Nein, über ether1/2 läuft kein Traffic, sondern über pppoe1/2 und es heißt
in-interface
.Außerdem glaube ich nicht, dass du Schnittstellen so als Bereich angeben kannst (mach zwei Regeln).
interface=ether1-ether2, da ich ich will, das man den webserver über pppoe1 und pppoe2 erreichen kann, oder macht man das dann anders
Das ist eine ganz andere Kategorie von hässlich als PBR!
Aus dem Kopf würde ich sagen dafür musst die Connection marken und dann auf Basis der Connection Mark die Routing-Tabelle bestimmen.
das ist doch so richtig oder?
Ja, du musst nur auf die Reihenfolge der Regeln achten.
Und wenn ich meine Internetip eingebe, dann lande ich z.Z. in meinem Routermenü. Ist das so korrekt, scheint mir eher falsch zu sein.
Bei der Art von NAT in den Regeln ist das korrekt.
Die Variante wo auch das Port Forwarding von Intern funktioniert heißt Hairpin-NAT:
/ip firewall nat
add chain=dstnat dst-address-type=local dst-address=!192.168.1.3 protocol=tcp dst-port=80 action=dst-nat to-address=192.168.1.2
ok, das wäre dann
Ja
Jo hab ich eingefügt, nun kann man das Routermenü über das Internet nicht mehr erreichen, gut.
Das konnte man nie aus dem Internet erreichen.
Es war lediglich aus dem internen Netz mit der öffentlichen IP auch erreichbar (logisch, denn die gehört ja auch dem Router).
Die Reihenfolge deiner Regeln ist durcheinander.
Die Jump->SPI Regel muss in jedem Chain ganz oben sein.
Dein Forward-Chain hat auch keine abschließende Drop-Regel (gut, die Telekom filtert hinreichend, darum ist die optional), dafür hat dein Input-Chain zwei.
add action=dst-nat chain=dstnat disabled=no dst-port=80 in-interface=pppoe1 protocol=tcp to-addresses=192.168.1.2
add action=dst-nat chain=dstnat disabled=no dst-port=80 in-interface=pppoe2 protocol=tcp to-addresses=192.168.1.2
add action=dst-nat chain=dstnat disabled=no dst-address=!192.168.1.3 dst-address-type=local dst-port=80 protocol=tcp to-addresses=192.168.1.2
Das ist auch doppelt. Die 3. Regel ersetzt die beiden anderen.
Der Server unter *Meine Internetip* braucht zu lange, um eine Antwort zu senden.
Das liegt an deinen NAT-Regeln, die werden nur auf ausgehenden Traffic angewendet (und nicht auf Hairpin-Traffic).
add action=masquerade chain=srcnat comment="NAT fuer DSL1" disabled=no out-interface=pppoe1
add action=masquerade chain=srcnat comment="NAT fuer DSL2" disabled=no out-interface=pppoe2
Dort muss noch hinzugefügt werden:
add action=masquerade chain=srcnat comment="Lokal <-> Lokal NATen" disabled=no src-address=192.168.1.0/24 dst-address=192.168.1.0/24
Du könntest auch das Problem den Server von beiden IPs zu erreichen gleich damit erschlagen, wenn du stattdessen schreibst:
add action=masquerade chain=srcnat comment="-> Server NAT" disabled=no dst-address=192.168.1.0/24
Dann würde aber jeder Client von überall im Server-Log mit der IP des Routers stehen.
Ändere die Firewall-Regeln so:
Danach deaktivierst du die Mangle-Regel, dann muss der Server zumindest über die 1. IP erreichbar sein.
/ip firewall filter
add action=accept chain=spi comment="Bereits vorhandene Verbindungen akzeptieren" connection-state=established
add action=accept chain=spi comment="Related Verbindugen akzeptieren (z.B. ICMP-Meldungen)" connection-state=related
add action=drop chain=spi comment="Mikrotik Empfehlung: Pakete mit Invalid-Mark gleich loswerden" connection-state=invalid
add action=return chain=spi comment="Zurueck, die restlichen Regeln sind Chain-spezifisch"
add action=jump chain=forward jump-target=spi
add action=accept chain=forward comment="PPTP-Negotiation erlauben" dst-address=192.168.1.2 dst-port=1723 protocol=tcp
add action=accept chain=forward comment="GRE erlauben" dst-address=192.168.1.2 protocol=gre
add action=accept chain=forward comment=Website dst-address=192.168.1.2 dst-port=80 protocol=tcp
add action=accept chain=forward comment="Alles ueberall hin vom LAN erlauben" in-interface=ether3
add action=drop chain=forward comment="Alles andere verwerfen"
add action=jump chain=input jump-target=spi
add action=accept chain=input comment="Ping immer annehmen" icmp-options=8:0 protocol=icmp
add action=accept chain=input comment="Alles aus dem LAN annehmen" in-interface=ether3
add action=drop chain=input comment="Alles andere verwerfen"
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Client 1 ueber DSL B" new-routing-mark=dslB passthrough=yes src-address=192.168.1.2-192.168.1.99
/ip firewall nat
add action=masquerade chain=srcnat comment="NAT fuer DSL1" out-interface=pppoe1
add action=masquerade chain=srcnat comment="NAT fuer DSL2" out-interface=pppoe2
add action=masquerade chain=srcnat comment="-> Server NAT" dst-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-address=!192.168.1.3 dst-address-type=local dst-port=80 protocol=tcp to-addresses=192.168.1.2
add action=dst-nat chain=dstnat comment="PPTP Negotiation -> Server" dst-address=!192.168.1.3 dst-address-type=local dst-port=1723 protocol=tcp to-addresses=192.168.1.2
add action=dst-nat chain=dstnat comment="GRE -> Server" dst-address=!192.168.1.3 dst-address-type=local protocol=gre to-addresses=192.168.1.2
Danach deaktivierst du die Mangle-Regel, dann muss der Server zumindest über die 1. IP erreichbar sein.