johannesschwenzer
Goto Top

HTTP Portforwarding double NAT Mikrotik

Hi,

Kurz zum Setup:
ISP --> Fritzbox --> Mikrotik Router --> HTTP Server
Fritzbox und Mikrotik router sind als Router Kaskade eingerichtet (die Fritzbox kann leider kein Bridge Modus mehr).

Leider habe ich 2 Probleme bezüglich des port forwardings von HTTP Ports:

1. Der Zugriff auf einen Server über die HTTP/HTTPS Ports funktioniert von außen nicht.
Dazu erstmal eine kurze Skizze wie es aussehen soll
pw


Jetzt müssen 2 Ports bzw.3 mit HTTPS weitergeleitet werden, dazu ein Bild aus der Einrichtungsanleitung:
memo

ich habe also 3 Portweiterleitungen jeweils über TCP Port: 2705, 80 und 443 von der Fritzbox auf den WAN Port des Mikrotik eingerichtet.
Von da wie folgt zum Server weitergeroutet (Server IP 192.168.178.5):
Firewall Regeln
fw1
*Die Firewall Regeln davor (#0-2) sind für 3 andere Ports auf einem FTP Server, funktionieren und blocken keine anderen Ports.

NATRegeln
nat1
*Die NAT Regeln davor (#0-2) sind für die 3 oben genannten anderen Ports auf dem FTP Server.

Hier noch ein genauerer screenshot einer NAT Regel
nat2

nat3


Eigentlich sollte das alles so stimmen aber von außerhalb des Netzwerks war kein Zugriff möglich über htttp://abc.ddnss.xy
(das sollte ja standardmäßig Port 80 nehmen).
Ich vermute irgendein HTTP Problem aufgrund des doppelten NAT.
Was mich zu meinem 2. Problem bringt:

Ein anderer Server bei dem die Portweiterleitung über Port 8080 funktioniert, ist von einigen Netzen außerhalb nicht erreichbar wegen eines Timeouts, während es von anderen Netzen (meinem beispielsweise) erreichbar ist. Das scheint mir irgendeine Sicherheitseinstellung zu sein die kein HTTP hinter einem doppelten NAT akzeptiert.
Sobald alles mit der Portweiterleitung funktioniert, werde ich sowieso alles auf HTTPS umstellen aber erstmal muss ich verstehen warum die Portweiterleitung bei meinem Mikrotik Router nicht so funktioniert wie ich mir das vorstelle.

Grüße Johannes

Content-ID: 1476742707

Url: https://administrator.de/forum/http-portforwarding-double-nat-mikrotik-1476742707.html

Ausgedruckt am: 15.04.2025 um 20:04 Uhr

JohannesSchwenzer
JohannesSchwenzer 06.11.2021 um 13:54:12 Uhr
Goto Top
*das letzte Bild ganz unten hat sich da irgendwie reingeschlichen und ist nicht Teil des Originalposts (ich kanns auch nirgendwo finden und deshalb nicht löschen)
aqui
aqui 06.11.2021 um 14:37:49 Uhr
Goto Top
Das hast du schon mit hochgeladen... face-wink Alle Bilder die nicht mit einem Klick auf "+" im Text verlinkt sind werden kommentarlos immer ans Ende des Post gehängt.
Vergleiche also mal die URL Adressen der Bilder dann wirst du es sehen face-wink
JohannesSchwenzer
JohannesSchwenzer 06.11.2021 um 15:09:23 Uhr
Goto Top
Dieses Problem wäre gelöst =)
JohannesSchwenzer
JohannesSchwenzer 08.11.2021 um 17:08:49 Uhr
Goto Top
Dieses Problem wäre gelöst =)

Also das Problem des Rogue Bildes unter dem Post.
Das eigentliche Problem ist mir nach wie vor ein Rätsel.
Was ich ergänzen kann:

Ist der Server direkt an der Fritzbox kann ich ihn über einen anderen WAN Port der an einer anderen Fritzbox hängt über den Mikrotik mit den gleichen Portweiterleitungen erreichen (nur das dst-nat interface ist dann anders). Also an falschen Port Weiterleitungen scheint es nicht zu liegen. Gibt es irgendetwas anderes zu beachten bei HTTP forwarding mit doppeltem NAT?
149569
149569 08.11.2021 aktualisiert um 17:30:41 Uhr
Goto Top
Das Doppel NAT ist überhaupt kein Problem, aber in deinem Fall auch völlig überflüssig und kontraproduktiv weil es das ganze noch langsamer macht, denn du müsstest nur das Masquerading am Mikrotik auf dessen Port zur Fritzbox deaktivieren und auf der Fritzbox eine statische Route für das Netz hinter dem Mikrotik setzen die so aussieht

ZIELNETZ: 192.168.188.0
MASKE: 255.255.255.0
GATEWAY: 192.168.178.5

Wobei bei diesem Beispiel das Fritzbox Netz 192.168.178.0/24 wäre, die IP des Mikrotik in diesem Netz die 192.168.178.5 und das Netz hinter dem Mikrotik das 192.168.188.0/24.

Ist das erledigt brauchst du auch keine DSTNAT-Regeln am Mikrotik mehr da nun geroutet statt geNATed wird!!
Es lässt sich also dann direkt die ZielIP , bspw. 192.168.188.10 eines Servers hinter dem Mikrotik in der Fritzbox Portfreigabe angeben.

Schon ist ein Schuh draus geworden und du hast sogar noch an Geschwindigkeit gewonnen da der Mikrotk nun auch kein Masquerading mehr machen muss, was je nach Geschwindigkeit reichlich CPU kostet.

Es gilt immer der Grundsatz "ROUTE where you can NAT only where you must!"
JohannesSchwenzer
JohannesSchwenzer 08.11.2021 um 17:32:32 Uhr
Goto Top
Ich hab nochmal eine Skizze angefertigt:

funktioniert
pw2

funktioniert nicht
pw

Warum?
JohannesSchwenzer
JohannesSchwenzer 08.11.2021 um 17:35:25 Uhr
Goto Top
Danke @149569 ! Ich schau es mir gleich mal an. Hatte gerade die Skizzen gemacht evor ich deinen beitrag gesehen habe.
JohannesSchwenzer
JohannesSchwenzer 08.11.2021 aktualisiert um 20:18:08 Uhr
Goto Top
du müsstest nur das Masquerading am Mikrotik auf dessen Port zur Fritzbox deaktivieren und auf der Fritzbox eine > statische Route für das Netz hinter dem Mikrotik setzen die so aussieht
ZIELNETZ: 192.168.188.0
MASKE: 255.255.255.0
GATEWAY: 192.168.178.5

Das ist so eingestellt (mit angepassten IP Adressen). Src Nat masquerading habe ich erstmal gänzlich deaktiviert.

Es lässt sich also dann direkt die ZielIP , bspw. 192.168.188.10 eines Servers hinter dem Mikrotik in der Fritzbox Portfreigabe angeben.

Das hat leider nicht funktioniert. Wenn ich das masquerading ausschalte, sehe ich bei "ungenutzte Verbindungen" auf der Fritzbox den entsprechenden Server (ich hätte ihn aber auch bei port forwarding hinzufügen können) . Ich habe mal einen Test mit dem FTP Port und einer Passivport Range gemacht, weil das am schnellsten ging aber ich bin nicht durchgekommen. Brauche ich noch eine Allow All Regel in den Firewall Einstellungen des Mikrotik? Ich habe die vorigen dst-NAT Regeln für den FTP port deaktiviert und die Firewall Regel beibehalten.
Was mir beim zurückstellen, der Einstellungen auf die Doppel NAT Variante aufgefallen ist, ist das der Mikrotik erstmal neu gestartet werden musste bevor ich wieder zum FTP Server durchgekommen bin. Gibt es da irgendwie eine Möglichkeit, das sich der Router da selbst updated? Ich habe bestimmt 10 Minuen gewartet.

Grüße
149569
149569 08.11.2021 aktualisiert um 22:20:56 Uhr
Goto Top
Zitat von @JohannesSchwenzer:
Es lässt sich also dann direkt die ZielIP , bspw. 192.168.188.10 eines Servers hinter dem Mikrotik in der Fritzbox Portfreigabe angeben.

Das hat leider nicht funktioniert.
Sicher funktioniert das das sind absolute Routing-Basics min Jung, würde ich dir hier nicht erzählen wenn es nicht so wäre, ist doch ehrlich gesagt pippifax für Anfänger Routing erste Stunde!

Wenn ich das masquerading ausschalte, sehe ich bei "ungenutzte Verbindungen" auf der Fritzbox den entsprechenden Server (ich hätte ihn aber auch bei port forwarding hinzufügen können) .
Also korrekt.

Ich habe mal einen Test mit dem FTP Port und einer Passivport Range gemacht, weil das am schnellsten ging aber ich bin nicht durchgekommen. Brauche ich noch eine Allow All Regel in den Firewall Einstellungen des Mikrotik?
Wenn du die Forward-Chain per Default am Ende dropst, natürlich !

Ich habe die vorigen dst-NAT Regeln für den FTP port deaktiviert und die Firewall Regel beibehalten.
Die Forward Regel muss Traffic natürlich den Traffic sowohl für den Control Port als auch den Passive Range zum Ziel durchlassen, genau so wie an der Fritte die Weiterleitung für beide korrekt ans Ziel eingerichtet werden muss, dann kommt das direkt zum fliegen, du hast da wohl noch Fehler in deinen Regeln, die wir uns hier leider zusammenreimen müssen weil sie uns nicht im Klartext vorliegen. Ein Konsolen Export via export hide-sensitive sagt mehr als tausend Worte oder nichts sagende Bildchen auf denen man die wirklich wichtigen Details nicht alle erkennen kann!
Bei Zweifeln immer erst mal die Forward-Chain auf Durchzug schalten und erst hinterher einschränken!
Auch testet man erst mal ein Protokoll mit einem Port, keep it simple lautet die Devise bei Tests.

Was mir beim zurückstellen, der Einstellungen auf die Doppel NAT Variante aufgefallen ist, ist das der Mikrotik erstmal neu gestartet werden musste bevor ich wieder zum FTP Server durchgekommen bin.
Nee das ist nicht nötig, das kommt von deinen missglückten Versuchen 🙃

Gibt es da irgendwie eine Möglichkeit, das sich der Router da selbst updated? Ich habe bestimmt 10 Minuen gewartet.
In der Firewall die Connection States löschen reicht bei sowas völlig.
JohannesSchwenzer
JohannesSchwenzer 09.11.2021 um 14:52:01 Uhr
Goto Top
Sicher funktioniert das das sind absolute Routing-Basics min Jung, würde ich dir hier nicht erzählen wenn es nicht so wäre, ist doch ehrlich gesagt pippifax für Anfänger Routing erste Stunde!

Jo, da haste Recht. Ich kann leider erst heute Abend nochmal neu testen.

Brauche ich noch eine Allow All Regel in den Firewall Einstellungen des Mikrotik?
Wenn du die Forward-Chain per Default am Ende dropst, natürlich !
[...]
Ein Konsolen Export via export hide-sensitive sagt mehr als tausend Worte oder nichts sagende Bildchen auf denen man die wirklich wichtigen Details nicht alle erkennen kann!

Ich dachte mir das der export output als code vieleicht einfacher zu handhaben ist. Jetzt isses natürlich nicht mehr so übersichtlich weil die Farben fehlen aber ich denke das ist besser als nen screenshot.
Momentan ist es so: Portweiterleitung von der Fritzbox auf den Mikrotik (ether1) und dann über dst-nat zum jeweiligen Ziel. Zusätzlich noch eine Firewall accept Regel pro Port und Destination.
Wie würde es sich ändern wenn die Portweiterleitung in der Fritzbox direkt auf den Server führt?
Server IP: 192.168.178.2 FB: 192.168.176.1 ether1: 192.168.176.254 Ports: 21, 49500-49600 TCP

/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add name=dhcp_pool0 ranges=192.168.89.2-192.168.89.254
add name=dhcp_pool10 ranges=192.168.178.15-192.168.178.195
/ip dhcp-server
add address-pool=dhcp_pool10 interface="PM Bridge" name=dhcp1  
/interface bridge port
add bridge="Connection Bridge" comment=Connection interface=ether14  
add bridge="PM Bridge" comment="PM Netzwerk" interface=ether3  
add bridge="PM Bridge" interface=ether4  
add bridge="PM Bridge" interface=ether5  
add bridge="PM Bridge" interface=ether6  
add bridge="PM Bridge" interface=ether8  
add bridge="PM Bridge" interface=ether7  
/interface bridge vlan
add tagged=*16,ether6 vlan-ids=1
/interface list member
add interface=ether1 list=WAN
add interface="Connection Bridge" list=LAN  
add list=LAN
/ip address
add address=192.168.88.1/24 comment=defconf interface=ether15 network=\
    192.168.88.0
add address=192.168.89.1/24 interface="Connection Bridge" network=192.168.89.0  
add address=192.168.176.254/24 comment="Fritzbox 1" interface=ether1 network=\  
    192.168.176.0
add address=192.168.179.254/24 comment="Fritzbox 2" interface=ether2 network=\  
    192.168.179.0
add address=192.168.178.0/24 comment="Netzwerk 1" interface="PM Bridge" \  
    network=192.168.178.0
/ip dhcp-server network
add address=192.168.3.0/24 dns-server=192.168.178.2 gateway=192.168.3.0
add address=192.168.4.0/24 dns-server=192.168.178.2 gateway=192.168.4.0
add address=192.168.178.0/24 dns-server=192.168.178.2 gateway=192.168.178.0
/ip dns
set servers=192.168.178.1

/ip firewall filter
add action=accept chain=forward comment="Server 1" dst-address=192.168.178.2 \  
    dst-port=21 protocol=tcp
add action=accept chain=forward dst-address=192.168.178.2 dst-port=49500-49600 \
    protocol=tcp
add action=accept chain=forward dst-address=192.168.178.2 dst-port=587 \
    protocol=tcp
add action=accept chain=forward comment="Server 3" dst-address=192.168.178.5 \  
    dst-port=2705 protocol=tcp
add action=accept chain=forward dst-address=192.168.178.5 dst-port=80 protocol=\
    tcp
add action=accept chain=forward dst-address=192.168.178.5 dst-port=443 \
    protocol=tcp
add action=accept chain=forward comment="Server 4 " dst-address=192.168.178.3 \  
    dst-port=8080 protocol=tcp
add action=accept chain=forward disabled=yes dst-address=192.168.178.19 \
    dst-port=3389 protocol=tcp
add action=accept chain=forward dst-address=192.168.178.31 dst-port=3389 \
    protocol=tcp
add action=accept chain=forward dst-address=192.168.178.19 dst-port=3390 \
    protocol=tcp
add action=accept chain=forward dst-address=192.168.176.5 dst-port=2705 \
    protocol=tcp
add action=accept chain=forward dst-address=192.168.176.5 dst-port=80 protocol=\
    tcp
add action=accept chain=forward dst-address=192.168.176.5 dst-port=443 \
    protocol=tcp

/ip firewall nat
add action=dst-nat chain=dstnat comment="FTP Server1" dst-port=21 in-interface=\  
    ether1 protocol=tcp to-addresses=192.168.178.2 to-ports=21
add action=dst-nat chain=dstnat dst-port=49500-49600 in-interface=ether1 \
    protocol=tcp to-addresses=192.168.178.2 to-ports=49500-49600
add action=dst-nat chain=dstnat comment="SSL Server1" dst-port=587 \  
    in-interface=ether1 protocol=tcp to-addresses=192.168.178.2 to-ports=587
add action=dst-nat chain=dstnat comment="Server 3" dst-port=2705 in-interface=\  
    ether1 protocol=tcp to-addresses=192.168.178.5 to-ports=2705
add action=dst-nat chain=dstnat dst-port=80 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.178.5 to-ports=80
add action=dst-nat chain=dstnat dst-port=443 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.178.5 to-ports=443
add action=dst-nat chain=dstnat comment="Server 4" dst-port=8080 in-interface=\  
    ether1 protocol=tcp to-addresses=192.168.178.3 to-ports=8080
add action=dst-nat chain=dstnat disabled=yes dst-port=3389 in-interface=ether1 \
    protocol=tcp to-addresses=192.168.178.19 to-ports=3389
add action=dst-nat chain=dstnat dst-port=3389 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.178.31 to-ports=3389
add action=dst-nat chain=dstnat dst-port=3390 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.178.19 to-ports=3390
add action=dst-nat chain=dstnat dst-port=3390 in-interface=ether2 protocol=tcp \
    to-addresses=192.168.178.19 to-ports=3390
add action=dst-nat chain=dstnat dst-port=2705 in-interface=ether2 protocol=tcp \
    to-addresses=192.168.176.5 to-ports=2705
add action=dst-nat chain=dstnat dst-port=80 in-interface=ether2 protocol=tcp \
    to-addresses=192.168.176.5 to-ports=80
add action=dst-nat chain=dstnat dst-port=443 in-interface=ether2 protocol=tcp \
    to-addresses=192.168.176.5 to-ports=443
add action=masquerade chain=srcnat comment=masquerade
/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.176.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \  
    target-scope=10
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.179.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \  
    target-scope=10
/system clock
set time-zone-name=Europe/Berlin
/system ntp client
set enabled=yes
/system ntp client servers
add address=0.de.pool.ntp.org



In der Firewall die Connection States löschen reicht bei sowas völlig.

Aus dem Mikrotik Wiki:
Myth about the reboot

Very often people say that problem disappeared after the reboot. In most cases it actually is not true. Reboot does many things, for example, clears DNS cache, clears different dynamic entries and so on. If the reboot helped in your case, you should think what on your device is configured and what of it is cleared by the reboot. Then you can try to trace the real reason.

Reicht dafür reset-counters (id) ?

Danke auf jeden Fall und ich hoffe die export files auszulesen ist nicht zu mühselig. Buggy code von Anderen durchzulesen und zu fixen ist ja oft nervig ...
149569
149569 09.11.2021, aktualisiert am 10.11.2021 um 07:22:41 Uhr
Goto Top
Zitat von @JohannesSchwenzer:
Wie würde es sich ändern wenn die Portweiterleitung in der Fritzbox direkt auf den Server führt?

Da waren doch quer beet diverse Fehler drin. Die ganzen NAT-Regeln entfallen wenn du routest statt NATest. Musst dann aber alle genutzten Subnetze hinter dem Mikrotik auf der Fritzbox als statische Routen anlegen wie oben beschrieben, also für 192.168.178.0/24, 192.168.88.0/24,192.168.89.0/24. Außerdem hast du ja quasi zwei WAN-Ports am Mikrotik, d.h. du musst eingehende Verbindungen zu den Stationen entsprechend markieren damit sie auch über das selbe GW über das sie hineingekommen sind auch wieder zurück fließen, was man mit MANGLE Rules,Connection-Marks Routing-Tags und Default Routes mit Routing-Mark Angabe macht, guckst du

/ip pool
add name=dhcp_pool0 ranges=192.168.89.2-192.168.89.254
add name=dhcp_pool10 ranges=192.168.178.15-192.168.178.195
/ip dhcp-server
add address-pool=dhcp_pool10 interface="PM Bridge" name=dhcp1  
/interface bridge port
add bridge="Connection Bridge" comment=Connection interface=ether14  
add bridge="PM Bridge" comment="PM Netzwerk" interface=ether3  
add bridge="PM Bridge" interface=ether4  
add bridge="PM Bridge" interface=ether5  
add bridge="PM Bridge" interface=ether6  
add bridge="PM Bridge" interface=ether8  
add bridge="PM Bridge" interface=ether7  
/interface list member
add interface=ether1 list=WAN
add interface="Connection Bridge" list=LAN  
add list=LAN
/ip address
add address=192.168.88.1/24 comment=defconf interface=ether15 network=192.168.88.0
add address=192.168.89.1/24 interface="Connection Bridge" network=192.168.89.0  
add address=192.168.176.254/24 comment="Fritzbox 1" interface=ether1 network=192.168.176.0  
add address=192.168.179.254/24 comment="Fritzbox 2" interface=ether2 network=192.168.179.0  
add address=192.168.178.1/24 comment="Netzwerk 1" interface="PM Bridge" network=192.168.178.0  
/ip dhcp-server network
add address=192.168.3.0/24 dns-server=192.168.178.2 gateway=192.168.3.1
add address=192.168.4.0/24 dns-server=192.168.178.2 gateway=192.168.4.1
add address=192.168.178.0/24 dns-server=192.168.178.2 gateway=192.168.178.1
/ip dns
set servers=192.168.176.1
/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=new in-interface=ether1 new-connection-mark=ISP1 passthrough=yes
add action=mark-routing chain=prerouting new-routing-mark=ISP1 passthrough=no connection-mark=ISP1
add action=mark-connection chain=prerouting connection-state=new in-interface=ether2 new-connection-mark=ISP2 passthrough=yes
add action=mark-routing chain=prerouting new-routing-mark=ISP2 passthrough=no connection-mark=ISP2

/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.176.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \  
    target-scope=10
add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.179.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \  
    target-scope=10
add distance=1 gateway=192.168.176.1 routing-mark=ISP1
add distance=1 gateway=192.168.179.1 routing-mark=ISP2

/system clock
set time-zone-name=Europe/Berlin
/system ntp client
set enabled=yes
/system ntp client servers
add address=0.de.pool.ntp.org

Zum Thema Firewall und wie man diese in einem Mikrotik richtig aufsetzt solltest du dir erst noch mal folgende Seiten durchlesen, das ist ein Thema für sich, und da werde ich hier keine Einführung geben:
https://help.mikrotik.com/docs/display/ROS/Basic+Concepts
https://help.mikrotik.com/docs/display/ROS/Building+Your+First+Firewall
https://help.mikrotik.com/docs/display/ROS/Building+Advanced+Firewall


ACHTUNG: Wenn du den Zugriff aus mit einem Client aus dem Netz testest in dem auch der Server steht dann kannst du in die Hairpin-NAT Falle geraten!
https://help.mikrotik.com/docs/display/ROS/NAT#NAT-HairpinNAT
Das musst du dann für solche Fälle über eine DSTTNAT Regel gerade biegen.

Du siehst, ein Mikrotik ist nichts für Weicheier face-smile.
aqui
aqui 09.11.2021 um 16:59:41 Uhr
Goto Top
Die ganzen NAT-Regeln entfallen wenn du routest statt NATest.
Wird auch im hiesigen Mikrotik Tutorial und Routing_Tutorial immer und immer wieder gesagt !!! Gerade letzteres erklärt es auch noch explizit mit einem Paket Walkthrough...
JohannesSchwenzer
JohannesSchwenzer 09.11.2021 aktualisiert um 17:33:10 Uhr
Goto Top
Ok, danke euch, soweit alles klar. Denke es wird ne Weile dauern bis ich mir alles durchgelesen habe. Das Problem mit dem NAT Hairpin hatte ich auch. Da es aber ne Menge Ports und Anschlüsse zwischen Servern, Fritzen und dem Mikrotik gibt, konnte ich immer erstmal Ausweichrouten legen mit denen erstmal alles, alles erreicht bis ich die einzelnen Probleme behoben habe und das Netz eleganter ist.

Die ganzen NAT-Regeln entfallen wenn du routest statt NATest.
Klar. In der obigen config wird noch geNATet.

Du siehst, ein Mikrotik ist nichts für Weicheier face-smile .
Haha, naja ich hab's mir ja ausgesucht.

Aber eine Frage habe ich noch:
Wie lösche ich die Connection States in der Firewall?
reset-counters (id) bzw. per click auf das Counter GUI ?
149569
149569 09.11.2021 aktualisiert um 17:40:41 Uhr
Goto Top
Zitat von @JohannesSchwenzer:
Wie lösche ich die Connection States in der Firewall?
Entweder über die GUI unter /ip firewall auf dem Tab Connections die Verbindungen markieren und auf das rote Minus klicken oder über das Terminal alle auf einen Rutsch ins Jenseits befördern.
/ip firewall connection remove [find]
oder wenn du tippfaul bist die Kurzversion
/ip f co r [f]
JohannesSchwenzer
JohannesSchwenzer 09.11.2021 um 23:45:12 Uhr
Goto Top
/ip address
add address=192.168.178.0/24 comment="Netzwerk 1" interface="PM Bridge" network=192.168.178.0
/ip dhcp-server network
add address=192.168.3.0/24 dns-server=192.168.178.2 gateway=192.168.3.1
add address=192.168.4.0/24 dns-server=192.168.178.2 gateway=192.168.4.1
add address=192.168.178.0/24 dns-server=192.168.178.2 gateway=192.168.178.1

wenn ich da das gateway auf 192.168.178.1 anstatt .0 setze, muss ich auch die IP Adresse auf 192.168.178.1/24 des Bridge Interface setzen, oder?
149569
149569 10.11.2021 aktualisiert um 07:24:37 Uhr
Goto Top
Zitat von @JohannesSchwenzer:

wenn ich da das gateway auf 192.168.178.1 anstatt .0 setze, muss ich auch die IP Adresse auf 192.168.178.1/24 des Bridge Interface setzen, oder?

Ja natürlich du kannst ja keine Netzadresse als IP für ein Interface oder GW verwenden, hatte ich übersehen, ist korrigiert.
aqui
aqui 17.11.2021 um 10:21:11 Uhr
Goto Top
Wenn's das denn nun war bitte den Thread hier dann auch als erledigt schliessen !!
Wie kann ich einen Beitrag als gelöst markieren?
JohannesSchwenzer
JohannesSchwenzer 20.11.2021 um 19:33:46 Uhr
Goto Top
Hallo,
ich hatte leider erst vor ein paar Tagen Gelegenheit wieder zu testen.

Problem 1:
add action=mark-routing chain=prerouting new-routing-mark=ISP1 passthrough=no connection-mark=ISP1
input does not match any value of new-routing-mark

Ich glaube das liegt am Router OS7 (version: 7.0.4 (stable) ).
Ich denke dazu muss erst eine neue routing table erstellt werden. Die commands sollten dann sein:

/routing/table/add name=ISP1_fib fib
/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=new in-interface=ether1 new-connection-mark=ISP1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP_fib passthrough=yes


Soweit sollte jetzt alles, was am ether1 Interface ankommt das connection mark ISP1 haben und alles was das connection mark ISP1 hat, sollte das routing mark ISP_fib bekommen. Müssen die einzelnen packages noch ein package mark bekommen? Ich glaube erstmal nicht, da wir ja ein in-interface für die connection mark spezifiert haben.
So weit sollte das jetzt für OS 7.0.x umgestellt sein. Der nächste Schritt wäre also eine Route dafür zu spezifizieren:

/ip/route> add distance=1 gateway=192.168.176.1 routing-mark=ISP_fib
expected end of command (line 1 column 38)
Das geht leider nicht weil routing-mark keine valide Option mehr ist.
Ich könnte die routing table ändern, für bestimmte destinations.
add distance=1 dst-address=0.0.0.0/0 gateway=192.168.176.1 routing-table=ISP_fib


Problem 2:
Ich versteh den Packet Flow nicht. Ich denke es ist so:

TCP Packet für server1:21 kommt an ether1 an --> Router identifiziert es als IPv4 Traffic (oder?) -->
Regeln der prerouting chain werden angewandt, in diesem Fall mit connection mark und routing mark versehen
--> Routing Entscheidung wird gefällt (schicks an server1 an adresse/interface die im fib steht (oder?)
--> Forward chain Regeln greifen, im obigen Fall dürfen die TCP ports 21, 49500-49600 accepted werden
--> Packet kommt an Server1 an

Muss noch irgendwo anders der Port explizit spezifiert werden? Was ändert sich wenn in der Fritzbox die Portweiterleitung direkt auf den Server zeigt? Dieser hat ja eine IP hinter dem Mikrotik und die Fritze schickt es gemäß ihrer statischen Route sowieso ans ether1 Interface des Mikrotik.
aqui
aqui 21.11.2021 aktualisiert um 15:46:11 Uhr
Goto Top
Muss noch irgendwo anders der Port explizit spezifiert werden?
Ja, natürlich, denn Port Forwarding kann ja technsich rein nur über den Port des eigehenden Traffics funktionieren !
Hier mal am Beispiel von WireGuard mit UDP 51820 am eth1 Port:
mikrotik-portforwarding
Ebenso ist die Reihenfolge der Port FW Regel im Regelwerk entscheidend.
JohannesSchwenzer
JohannesSchwenzer 22.11.2021 um 00:34:38 Uhr
Goto Top
Zitat von @aqui:

Die ganzen NAT-Regeln entfallen wenn du routest statt NATest.
Wird auch im hiesigen Mikrotik Tutorial und Routing_Tutorial immer und immer wieder gesagt !!! Gerade letzteres erklärt es auch noch explizit mit einem Paket Walkthrough...

Ich denke die NAT Regeln entfallen?
aqui
aqui 22.11.2021 um 10:33:32 Uhr
Goto Top
Wenn du kein NAT machst am Mikroitk, dann natürlich ja !
Dann entfällt aber auch das Port Forwarding komplett !!
Logisch, denn da wo kein NAT ist braucht man natürlich auch kein Port Forwarding !
JohannesSchwenzer
JohannesSchwenzer 22.11.2021 um 12:57:56 Uhr
Goto Top
Die Idee ist die Fritzbox das Routing übernehmen zu lassen.

Setup vorher:
FB--> Mikrotik mit source NAT masquerading und dst-nat Regeln Die Portweiterleitung in der FB führt ans WAN des Mikrotik und eine statische route ins Servernetz zeigt ebenfalls zum WAN Port des Mikrotik

Setup wie es sein soll:

FB --> Mikrotik ohne NAT masquerading. Die Portweiterleitung in der FB führt direkt zum Server hinter dem Mikrotik. Die statische Route ins Servernetz zeigt immer noch zum WAN Port des Mikrotik.

Die Frage ist was am Mikrotik zusätzlich dafür eingestellt werden muss. Die NAT Regeln habe ich deaktiviert. Die Firewallregeln habe ich beibehalten. Wie ich die bisherigen Antworten verstanden habe, sollte das ausreichen. Ich komme aber nicht zum Server durch. Die config ist oben beschrieben. Ob da jetzt mehrere Gateways sind, kann erstmal vernachlässigt werden, weil ich den zweiten WAN Port zum testen erstmal deaktivieren kann. Zusammengefasst soll die Fritzbox TCP Packete an den Server im Mikrotik Netz leiten ohne das doppelt geNATted wird.
aqui
aqui 22.11.2021 um 14:13:40 Uhr
Goto Top
Die Idee ist die Fritzbox das Routing übernehmen zu lassen.
OK, dann mit einem Transfer Netz vom MT und klassischem Routing ohne NAT, richtig ?
Sollte dann so aussehen, oder ?
l3sw.
Die Portweiterleitung in der FB führt direkt zum Server hinter dem Mikrotik.
OK, das sollte klappen aber pass auf das bei älteren FritzBoxen das Port Forwarding auf IP Adresse die NICHT im lokalen LAN der FB liegt nicht funktioniert bzw. nicht supportet ist. Das klappt erst in aktuelleren Firmware Versionen. Siehe hier.
Die Frage ist was am Mikrotik zusätzlich dafür eingestellt werden muss.
Gar nichts !
Solange die statische Route in der FB auf die Koppelport IP des MT zeigtist alles richtig. Der MT selber sollte natürlich analog dazu auch eine Default Route 0.0.0.0/0 auf die IP der Fritzbox haben...logisch.
Die NAT Regeln habe ich deaktiviert.
Das ist richtig so !
Die Firewallregeln habe ich beibehalten.
Da sist ein Kardinalsfehler, denn die sind nur mit dem aktiven NAT gültig. Ohne NAT musst du sie zwingend entfernen. Das Beste ist dann immer den MT ohne die Default Konfig zu resetten das er als nackter Router agiert wie es auch hier im MT_VLAN_Tutorial genau beschrieben ist.
JohannesSchwenzer
JohannesSchwenzer 22.11.2021 um 15:08:15 Uhr
Goto Top
Die Firewallregeln habe ich beibehalten.
Das ist ein Kardinalsfehler, denn die sind nur mit dem aktiven NAT gültig. Ohne NAT musst du sie zwingend entfernen. Das Beste ist dann immer den MT ohne die Default Konfig zu resetten das er als nackter Router agiert wie es auch hier im MT_VLAN_Tutorial genau beschrieben ist.

Oh nein, der Router ist schon in Benutzung und funktioniert so weit auch in etwa so wie er soll. Ein kompletter reset wäre sehr aufwändig (aber machbar) . Ich hatte es so verstanden das die CCR Reihe eine simple IP only default config hat ( default configurations mikrotik ).
Hier steht was der Router macht wenn er mit default config eingerichtet wird. Soweit ich das sehe, setzt er nur eine IP auf ether15 und eine dhcp range.

[admin@MikroTik] > /system default-configuration print
            script: #| Welcome to RouterOS!
                    #|    1) Set a strong router password in the System > Users >
                    #|    2) Upgrade the software in the System > Packages menu
                    #|    3) Enable firewall on untrusted networks
                    #| --------------------------------------------------------->
                    #| LAN:
                    #|     IP on ether15:    192.168.88.1/24;
                    
                    :global defconfMode;
                    :log info "Starting defconf script";  
                    #----------------------------------------------------------->
                    # Apply configuration.
                    # these commands are executed after installation or configur>
                    #----------------------------------------------------------->
                    :if ($action = "apply") do={  
                      # wait for interfaces
                      :local count 0;
                      :while ([/interface ethernet find] = "") do={  
                        :if ($count = 30) do={
                          :log warning "DefConf: Unable to find ethernet interfa>  
                          /quit;
                        }
                        :delay 1s; :set count ($count +1); 
                         :local o [find name="default-dhcp" ranges=192.168.88.10-192.168.88.254]  
                         :if ([:len $o] != 0) do={ remove $o }
                       }
                       :local o [/ip dhcp-client find comment="defconf"]  
                       :if ([:len $o] != 0) do={ /ip dhcp-client remove $o }
                     /ip dns {
                       set allow-remote-requests=no
                       :local o [static find comment="defconf"]  
                       :if ([:len $o] != 0) do={ static remove $o }
                     }
                     /ip address {
                       :local o [find comment="defconf"]  
                       :if ([:len $o] != 0) do={ remove $o }
                     }
                     :foreach iface in=[/interface ethernet find] do={
                       /interface ethernet set $iface name=[get $iface default-name]
                     }
                     /interface bridge port remove [find comment="defconf"]  
                     /interface bridge remove [find comment="defconf"]  
                     /interface bonding remove [find comment="defconf"]  
                     /interface wireless cap set enabled=no interfaces="" caps-man-addresses=""  
                      /caps-man manager set enabled=no
                      /caps-man manager interface remove [find comment="defconf"]  
                      /caps-man manager interface set [ find default=yes ] forbid=no
                      /caps-man provisioning remove [find comment="defconf"]  
                      /caps-man configuration remove [find comment="defconf"]  
                    }
                    :log info Defconf_script_finished;
                    :set defconfMode;

Reiht es vielleicht die connection states in der firewall zu löschen?
aqui
aqui 22.11.2021 aktualisiert um 16:54:34 Uhr
Goto Top
Musst ja kein Reset machen. Es reicht doch wenn man schlicht alle FW Regeln löscht die den WAN Port betreffen. face-wink
Soweit ich das sehe…
Nein, er installiert dann auch immer NAT mit einem kompletten Firewall Ruleset auf eth1 als WAN Port welcher dann im DHCP Client Mode arbeitet.
Siehe auch hier:
MikroTik S2S IPSec Tunnel - kein Ping der Gegenstelle möglich
JohannesSchwenzer
JohannesSchwenzer 02.12.2021 um 16:36:00 Uhr
Goto Top
Hallo,

ich habe die Firewall und NATregeln geloggt und @149569 hatte Recht, das es daran liegt, dass das Gateway für ein- und ausgehenden Traffic bei meiner Konfiguration nicht zwingend dasselbe sein muss. (Beide Routen haben die gleiche cost/distance). Ich dachte ich hätte das als Fehlerquelle ausgeschlossen, weil es auch nicht funktioniert hat als ich ein Gateway disabled habe und das Firewall log hat auch nicht von Anfang an gesagt, das es den Traffic jetzt an Gateway 2 geschickt hat. Irgendwann stands aber doch in den LOGs und dann konnte ich das Problem umgehen indem ich die distance einer Route erhöht habe.
Ich denke so wie @aqui und @149569 das aufgezeigt haben, können neuere Fritzboxen warscheinlich auch auf Ziele routen die nicht in ihrem eigenen Netz sind aber ich habe gegen doppeltes NAT eigentlich gar nichts einzuwenden, weil ich auf Mikrotik Ebene noch einige weitere Einstellungen und Traffic Priorisierung vornehmen möchte. Klar das geht auch ohne NAT am Mikrotik aber mit NAT weiß ich wie. Und Prozessorleistung muss ich bei dem CCR erstmal nicht einsparen.
Um das Problem zu lösen muss jedoch noch das command von @149569

/ip/route> add distance=1 gateway=192.168.176.1 routing-mark=ISP_fib
#wirft in RouterOS7 diese Fehlermeldung: 
expected end of command (line 1 column 38)

auf RouterOS7 angepasst werden. Weiß jemand wie das geht? (In der Routing Tabelle die den namen des routing-mark hat muss eine neue Route angelegt werden)
Falls da jemand schon Erfahrung hat, wäre es nice wenn mir jemand weiterhilft, ansonsten teste ich das weiter und berichte sobald ich Erfolg habe.

Grüße
JohannesSchwenzer
JohannesSchwenzer 02.12.2021 um 17:37:09 Uhr
Goto Top
Ok kurzes update dazu das command ist nicht mehr routing-mark sondern routing-table
aqui
aqui 03.12.2021 um 11:12:14 Uhr
Goto Top
auf RouterOS7 angepasst werden.
Mit einer Beta Firmware sollte man niemals in einem Produktivnetz arbeiten ! face-wink
149569
149569 03.12.2021 aktualisiert um 11:29:18 Uhr
Goto Top
Zitat von @aqui:
auf RouterOS7 angepasst werden.
Mit einer Beta Firmware sollte man niemals in einem Produktivnetz arbeiten ! face-wink
Da müsstest du mal Mikrotik selbst verkloppen. Laut deren Aussage im Mikrotik Forum arbeitet anscheinend schon über 90% der eigenen Infrastruktur auf der RouterOS v7.1(Testing channel) face-big-smile.
JohannesSchwenzer
JohannesSchwenzer 03.12.2021 um 14:51:18 Uhr
Goto Top
Irgendwie reden auch viele davon das 7.04 noch beta ist (Im Mikrotik Forum sollte ich das Problem unter Router OS v7 Beta posten), aber das Gerät wurde zum einen damit ausgeliefert und zum anderen sagt mir eine Versionsabfrage: 7.04 (stable). Vielleicht sind wir damit Quantumrouting ein Stück näher wenn es gleichzeitig Beta und Stable ist...

Nochmal ein kurzes Update, was ich gemacht habe und was kurzzeitig funktioniert hat:

/routing table add name=HTTP_table fib
/ip/firewall/mangle
add action=mark-connection chain=forward connection-mark=no-mark disabled=no dst-address=192.168.178.3 in-interface=ether1 log=yes log-prefix="MARK HTTP" new-connection-mark=http \  
    passthrough=yes
add action=mark-routing chain=prerouting connection-mark=http disabled=no log=yes log-prefix="Routing Mark" new-routing-mark=HTTP_table passthrough=no  
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.176.1@main routing-table=HTTP_table
 

Nach ca 30 Minuten allerdings, sind die TCP Packete nicht mehr korrekt durchgekommen. Die Verbindung wurde zwar acknowledged und ACK Packete verschickt aber die Verbindung ist nicht mehr Zustande gekommen.
Ich schau mal weiter woran es liegen kann und poste dann hoffentlich bald eine funktionierende config.

Von Mikrotik hätte ich mir gewünscht das sie, so wie z.B. bei Programmiersprachen ne kurze Warning einbauen die sowas sagt wie: Wir wissen das in der Documentation, auf die wir in unserem Manual das wir dir mit dem Gerät geschickt haben verweisen, steht, dass der Befehl "routing-mark" heißt aber das ist seit Version 7 deprecated, bitte benutze routing-table oder see the actual documentation hier.
aqui
aqui 03.12.2021 um 15:10:41 Uhr
Goto Top
Da müsstest du mal Mikrotik selbst verkloppen.
Als gestandener Netzwerk Admin Hase hat man da ja so seine "Erfahrungen"... 😉
149569
149569 03.12.2021 aktualisiert um 16:47:58 Uhr
Goto Top
Zitat von @aqui:

Da müsstest du mal Mikrotik selbst verkloppen.
Als gestandener Netzwerk Admin Hase hat man da ja so seine "Erfahrungen"... 😉
face-smile, jepp, mit 1 Bar Reifendruck und 200 auf der Autobahn kann gut gehen tut es aber selten über längere Zeit , ebenso wenn mal der unvorhergesehene Fall Eintritt und sich ein Sonntagsfahrer auf die linke Spur verirrt, oder ein Hase face-wink.