IP NAT oder Routing
Moin Leute,
mal eine kurze Frage an euch;
Folgendes Szenario - Kleine RZ Infrastruktur mit Mikrotik Router + Switch und jede (Proxmox) VM in einem VLAN.
Derzeit ist es so, dass sich bei uns alles via VPN abspielt, selten aber doch benötige eine VM aber doch mal eine externe IP..
Wie würdet ihr das umsetzen?
Habe 3x /27 Netze am Mikrotik via Transfernetz aufliegen..
Würdet ihr - Da ja sowieso jede VM schon eine VLAN-IP im eigenen Subnet hat - die IP durchNATen oder Routen?
Vorteil vom NATen wäre natürlich die flexibilität und die Einsparung von v4 Adressen...
Was sagen die Profis hierzu?
VG in die Runde
mal eine kurze Frage an euch;
Folgendes Szenario - Kleine RZ Infrastruktur mit Mikrotik Router + Switch und jede (Proxmox) VM in einem VLAN.
Derzeit ist es so, dass sich bei uns alles via VPN abspielt, selten aber doch benötige eine VM aber doch mal eine externe IP..
Wie würdet ihr das umsetzen?
Habe 3x /27 Netze am Mikrotik via Transfernetz aufliegen..
Würdet ihr - Da ja sowieso jede VM schon eine VLAN-IP im eigenen Subnet hat - die IP durchNATen oder Routen?
Vorteil vom NATen wäre natürlich die flexibilität und die Einsparung von v4 Adressen...
Was sagen die Profis hierzu?
VG in die Runde
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5056909474
Url: https://administrator.de/contentid/5056909474
Ausgedruckt am: 19.11.2024 um 02:11 Uhr
28 Kommentare
Neuester Kommentar
Ich sage mal so: Wenn du es jetzt ordentlich mit Routing machst, fällt es dir auch leichter, das mit IPv6 umzusetzen. NAT ist eigentlich in erster Linie Pfusch für solche Zwecke, der mit IPv6 zum Glück nicht mehr so einfach geht.
Im Prinzip:
Die VM bekommt zusätzlich zur internen IP-Adresse eine externe IPv4 zugewiesen mit /32-Maske.
Dann legst du auf dem Router eine Route an: Öffentliche IPv4/32 -> interne IPv4.
Damit sparst du IP-Adressen wie bei NAT ohne die Nachteile von NAT. Und mit IPv6 könntest du exakt genauso verfahren
Im Prinzip:
Die VM bekommt zusätzlich zur internen IP-Adresse eine externe IPv4 zugewiesen mit /32-Maske.
Dann legst du auf dem Router eine Route an: Öffentliche IPv4/32 -> interne IPv4.
Damit sparst du IP-Adressen wie bei NAT ohne die Nachteile von NAT. Und mit IPv6 könntest du exakt genauso verfahren
Der Server braucht nur ein einziges Gateway, in deinem Fall das aus dem internen/privaten Netz der Server.
Darüber kann er den Traffic aller IP-Adressen, die der Server hat, abwerfen
Beispiel:
IP1: 10.4.4.4 /24
IP2: 203.0.113.25 /32
GW: 10.4.4.1
EDIT: Der Server muss auch nicht wissen, ob eine IP öffentlich ist oder nicht.
Für ausgehende Verbindungen nutzt der Server standardmäßig die IP-Adresse, die im selben Subnetz wie das Gateway liegt (also in dem Fall IP1). Verbindungen, die auf IP2 eingehen, werden aber natürlich unabhängig davon auch über IP2 beantwortet.
Darüber kann er den Traffic aller IP-Adressen, die der Server hat, abwerfen
Beispiel:
IP1: 10.4.4.4 /24
IP2: 203.0.113.25 /32
GW: 10.4.4.1
EDIT: Der Server muss auch nicht wissen, ob eine IP öffentlich ist oder nicht.
Für ausgehende Verbindungen nutzt der Server standardmäßig die IP-Adresse, die im selben Subnetz wie das Gateway liegt (also in dem Fall IP1). Verbindungen, die auf IP2 eingehen, werden aber natürlich unabhängig davon auch über IP2 beantwortet.
Mir fällt gerade ein: Du solltest bei dem Setup auf dem Router für das an euch geroutete Netz eine /27-Nullroute anlegen.
Hintergrund ist, dass dein Router sonst Pakete bekommt, nicht weiß wohin damit und diese mangels Alternative über das Defaultgateway wieder rausschickt. Solche Loops sind unschön und belasten die Router unnötig.
Deshalb sollte man dann immer Nullrouten für alle Präfixe anlegen, die man bekommt. Die spezifischeren /32-Routen übersteuern die Nullroute problemlos, aber Traffic an "ungeroutete" Adressen wird von deinem Router dann verworfen.
Hintergrund ist, dass dein Router sonst Pakete bekommt, nicht weiß wohin damit und diese mangels Alternative über das Defaultgateway wieder rausschickt. Solche Loops sind unschön und belasten die Router unnötig.
Deshalb sollte man dann immer Nullrouten für alle Präfixe anlegen, die man bekommt. Die spezifischeren /32-Routen übersteuern die Nullroute problemlos, aber Traffic an "ungeroutete" Adressen wird von deinem Router dann verworfen.
eine /27-Nullroute anlegen.
Bei Mikrotik dann also ne Route vom type blackhole,unreachable oder prohibit anlegen./ip route add dst-address=x.x.x.x/27 type=unreachable
/ip route add dst-address=x.x.x.x/32 gateway=10.4.4.20
Natürlich die Firewall nicht vergessen. Die Forward-Chain muss den Traffic von extern nach intern durchlassen.
Bspw. mit
/ip firewall filter add chain=forward in-interface=ether1 dst-address=x.x.x.x/32 action=accept
Bei Linux kann man die zu verwendende Source-Adresse bei Routen mitgeben.
Du würdest dann die Default-Route anlegen mit
Je nach Distro kann/muss das in entsprechenden Config-Dateien abgelegt werden.
Bei Windows wird es sicherlich mit netsh etwas identisches geben, da bin ich aber mittlerweile zu lange raus.
Du würdest dann die Default-Route anlegen mit
ip route add default via 10.4.4.1 src 4.3.2.1
Je nach Distro kann/muss das in entsprechenden Config-Dateien abgelegt werden.
Bei Windows wird es sicherlich mit netsh etwas identisches geben, da bin ich aber mittlerweile zu lange raus.
Habe das hier mal getestet und eine zweite IP unter windows mit X.X.X.X MASK 255.255.255.255 auf dem LAN Interface hinterlegt.
Dann eine Zielroute auf dem Router zu dieser IP über die andere Adresse angelegt. Die Pakete kamen brav wieder von der angesprochenen IP zurück. Würde ja sonst auch zum break der TCP-Connection kommen wenn die Pakete plötzlich von einer anderen als der DST Adresse zurück kommen würden ... Das ist also der Default in Windows, da braucht man nichts ändern.
Wurstel
Dann eine Zielroute auf dem Router zu dieser IP über die andere Adresse angelegt. Die Pakete kamen brav wieder von der angesprochenen IP zurück. Würde ja sonst auch zum break der TCP-Connection kommen wenn die Pakete plötzlich von einer anderen als der DST Adresse zurück kommen würden ... Das ist also der Default in Windows, da braucht man nichts ändern.
Wurstel
Zitat von @tommy98:
Klappt bei mir allerdings nicht - Ich gehe immer mit der Mikrotik-Router IP raus, auf dem Router selbst ist NAT eingerichtet (srcnat/masquerade mit meinem WAN als out-interface)
Wieso? Genau das willst du doch nicht, du willst ja routen nicht NATenDas sollte damit aber nichts zutun haben, oder?
Das NAT muss natürlich für die Public IPvom SRCNAT ausgenommen werden!
Z.B. mit folgender Regel die vor der allgemeinen masquerade Regel stehen muss
/ip firewall nat add chain=srcnat src-address=x.x.x.x out-interface=wan action=accept place-before=1
Wenn ich testweise NAT ausschalte, komme ich von meiner Windows-VM nicht mehr raus.
Du darfst nicht die feste IP NATen sondern nur den Traffic der internen privaten Adresse.Hast du keine zusätzlichen Settings im Windows gemacht, außer die /32 IP aufgeschalten?
Wäre ja vielleicht mal sinnvoll deine Config als Export im Klartext zu posten damit wir hier nicht im Regen stehen und die Glaskugel polieren müssen.
@5175293307:
Das Problem ist, dass neue, ausgehende Verbindungen vom Windows-System mit der lokalen RFC1918-IP initiiert werden, die dann vom Router geNATet werden - aber dadurch natürlich nicht mit der IP kommen, die als /32 auf dem Windows-Server konfiguriert und geroutet ist.
Speziell bei Mailservern ist das natürlich schlecht.
Am Router kannst du das aber auch nicht richtig NATen, da der Router die IP ja überhaupt nicht gebunden hat.
Windows wählt, was an sich ja vollkommen richtig ist, als Quelladresse für neue ausgehende Verbindungen die IP als Quelle, die sich "am nächsten" am Gateway befindet. Und das ist nunmal die RFC1918-Adresse.
Unter Linux wird das identisch gehandhabt, dort lässt sich das aber wie gesagt beim Anlegen der Default-Route schlicht übersteuern. Einen solchen Parameter habe ich bei Windows nicht gefunden
So eine richtig gute Lösung dafür habe ich leider noch nicht gefunden...
Das Problem ist, dass neue, ausgehende Verbindungen vom Windows-System mit der lokalen RFC1918-IP initiiert werden, die dann vom Router geNATet werden - aber dadurch natürlich nicht mit der IP kommen, die als /32 auf dem Windows-Server konfiguriert und geroutet ist.
Speziell bei Mailservern ist das natürlich schlecht.
Am Router kannst du das aber auch nicht richtig NATen, da der Router die IP ja überhaupt nicht gebunden hat.
Windows wählt, was an sich ja vollkommen richtig ist, als Quelladresse für neue ausgehende Verbindungen die IP als Quelle, die sich "am nächsten" am Gateway befindet. Und das ist nunmal die RFC1918-Adresse.
Unter Linux wird das identisch gehandhabt, dort lässt sich das aber wie gesagt beim Anlegen der Default-Route schlicht übersteuern. Einen solchen Parameter habe ich bei Windows nicht gefunden
So eine richtig gute Lösung dafür habe ich leider noch nicht gefunden...
Achso das meint er, wenn er mit der öffentlichen IP raus will, klar. Dann wird er unter Windows wohl oder übel seine DefaultGW Adresse anpassen müssen.
Also eine der Public IPs aus dem Pool am Router binden und im Server statt dessen als Default GW eintragen.
Ist zwar blöd das man damit IPs verschwendet aber wat willste machen bei dem Winblows Theater, am besten gleich auf Linux umsatteln...
Also eine der Public IPs aus dem Pool am Router binden und im Server statt dessen als Default GW eintragen.
Ist zwar blöd das man damit IPs verschwendet aber wat willste machen bei dem Winblows Theater, am besten gleich auf Linux umsatteln...
das funktioniert allerdings auch nicht unter Linux
Klappt hier im Test einwandfrei ... Wireshark bestätigt mir das.via 10.0.0.1 via 1.2.3.1
wat soll'n das?