IP Redirect Problem
-
Guten Tag,
ich habe ein etwas kniffliges Problem, was ich versuche seit einiger Zeit zu lösen. Habe mittlerweile verschiedene Optionen ausprobiert, keine hat wirklich zum Erfolg geführt. Ich werde es mal versuchen zu erklären:
Es gibt zwei FWs, die eine ist eine Linux-FW (iptables) und die andere eine pfSense 2.2.4 (wird bald geupdatet). An der Linux-FW läuft auch OpenVPN, dies wiederum stellt eine Verbindung zu einem Standort her. Nun möchte ich die alte Linux-FW Schritt für Schritt außer Betrieb nehmen und habe vielen Clients als Standard-GW die Pfsense verpasst. Soweit so gut. Nun sollen die Clients aber weiterhin über die alte Linux-FW über das OpenVPN einen Server per SSH erreichen. Das funktioniert auch soweit, aber nur einige Sekunden und danach gibt es einen Timeout.
Bisher konnte ich herausfinden das dies an den Redirects liegt. Ich habe diese testweise mal an und mal ausgeschalten. Es besteht aber weiterhin das Problem.
Hier mal schematisch der Aufbau:
Internet : : : .-----+-----. | Gateway | ---------------------- '-----+-----' | | | WAN|1.2.3.2/29 WAN|1.2.3.3/29 | | .-----+-----. .-------+-------. | pfSense | Linux-FW | '-----+-----' '-------+-------' | | LAN | 10.0.0.1/24 LAN | 10.0.0.2/24 | | .-----+------. | | LAN-Switch |----------------------- '-----+------' | ...-----+------... (Clients/Servers)
Statt jetzt auf jedem Client und Server eine statische Route anzulegen, dachte ich es würde ausreichen wenn die pfSense-FW die Anfragen weiter sendet. Mit Tcpdump kann man schön beobachten wie die Pfsense antwortet beim Verbindungsaufbau und die Verbindung dann "übergibt", danach sagt diese dann einfach "Du kannst doch direkt mir der Linux-FW kommunizieren" und trennt dann die Verbindung.
Jetzt die Frage: Wie bekommt man das gelöst? Wie also kann ich es schaffen das die Pfsense die Anfragen an die Linux-FW weiterleitet und die Verbindung dauerhaft bestehen bleibt?
Wie gesagt… mit IP Redirect habe ich schon rumgespielt.Mit aktivierten Redirects dachte ich das es funktionieren müsste, macht es aber nicht.
Wäre euch dankbar für eure Hilfe.
Gruß
-
Eine solche Konstellation macht immer wieder dieselben Problem. Das funktioniert nur vernünftig, wenn die beiden Router in Serie liegen, so dass der erste aus Client-Sicher als Gateway verwendet wird, oder wenn auf dem einen, der Standard-Gateway ist, ein Proxy für den gewünschten Dienst läuft.
Beides ist wohl keine Option für dich.Warum betreibst du nicht die OpenVPN auf der pfSense. Die ist da sehr gut integriert.
Lösen kannst du es natürlich auch, indem du auf jedem Client eine Route für das OpenVPN Ziel zur Linux-FW setzt. Das ist aber vermutlich aufgrund des Aufwands auch keine Option.
-
Lösen kannst du es natürlich auch, indem du auf jedem Client eine Route für das OpenVPN Ziel zur Linux-FW setzt.
Eventuell sind deine Clients ja per DHCP angebunden, dann könnte man ggf. die Route via DHCP pushen, aber prinzipiell ist es schon eine unschöne Konstellation. Wie hast du das bisher gelöst in deinem Versuch? Hattest du auf der pfSense eine Route für das entfernte Netz sowie das Transfernetz auf die Linux FW eingerichtet? Das hatte bei mir zumindest in der Vergangenheit schonmal (größtenteils) funktioniert auch wenns nicht schön war.
Ansonsten sehe ich das ähnlich wie virago und würde da eher den Tunnel baldigst auf die pfSense migrieren, das sollte da keinen Streß machen und die meisten Probleme vermeiden.
Gruß
-
Den Tunnel werde ich als nächstes migrieren, dass war schon von Anfang an geplant. Die pfSense kam viel später als die Linux-FW. Ich wollte halt nicht alles auf einen Schwung rüber werfen, da ich ebenfalls noch ein altes Subnetz bereinigen musste das aus lauter festen IPs bestand.
Die Clients sind auch per DHCP angebunden, aber ich werde das lieber mit der sauberen Variante durchziehen und das OpenVPN rüber ziehen.
@JeGr: Ja ich hatte für das entfernte Netz eine Route auf der pfsense eingetragen und soweit funktioniert es auch… Pings gehen durch... aber wie gesagt mit unschönen Nebeneffekten. Dahingegen Filetransfer von einem entfernten Dateiserver funktionierte einwandfrei.
-
Funktioniert es nicht ggf. auch so:
Auf der pfsense einen zweiten Gateway (10.0.0.2) konfgurieren.
Allen Clients als Default GW die pfsense (10.0.0.1) geben.Auf der pfsense im Regelwerk eine Firewallregel platzieren, welche den Traffic zum OpenVPN Netz erlaubt. Dort nicht das Default Gateway konfigurieren sondern den neuen Gateway (10.0.0.2).
Hier bin ich nun unsicher ob man das irgendwie hinbekommt, da das LAN ja an der Linux FW "directly" connected ist, somit der Traffic nicht zurück zur pfsense kommt.
Somit wäre es asynchrones Routing und der Firewall würde die Pakete blockieren. Um ds zu verhindern könnte man folgendes in pfsense aktivieren:System –> Advanced --> Firewall&NAT:
Bypass firewall rules for traffic on the same interface
This option only applies if one or more static routes have been defined. If it is enabled, traffic that enters and leaves through the same interface will not be checked by the firewall. This may be desirable in some situations where multiple subnets are connected to the same interface.Insofern würde Traffic, welcher von den Clients am LAN Interface eingeht nicht gefiltert werden sondern nach meinem Verständnis lediglich geroutet (Evtl. greift dann aber das Routing über das Regelwerk nicht mehr und du musst neben dem neuen Gateway auch eine neue statische Route mit GW 10.0.0.2 zum OpenVPN Netz anlegen).
Antwortpakete aus dem OpenVPN kommen dann von der Linux Firewall direkt zu den Clients und nicht mehr über pfsense. Erfordert vermutlich aber auch, dass die iptables deaktiviert werden auf dem LAN Interface, sonst kommt das SYN von der pfsense und das SYN-ACK soll direkt zum Client.Vermutlich solltest du dir lieber die Zeit nehmen und das OpenVPN migrieren anstatt kuriose Routing Konstrukte auszuprovieren, die wir hier vorschlagen ;-)
---- edit ----
PS:
Es würde natürlich klappen, wenn alle Clients zur pfsense Routen.
Dort erstellst du eine NAT Regel, welche eine Source-NAT auf 10.0.0.1 macht, wenn die Destination das VPN Netz ist. Gateway ist dann trotzdem 10.0.0.2 - definiert über die Firewall-Regel mit anderem Gateway statt dem "Default (*)".
Antwortpakete aus dem VPN werden dann korrekt an die NAT Adresse 10.0.0.1 zurück geroutet und von dort dann zurück an die Clients.
Eigentlich ziemlich simple, wenn ich es so überlege.Viele Grüße
Grüße
-
Heureka,
ich habe noch einen Fehler in meiner Konfiguration gefunden und nochmal eine Outbound-Regel konfiguriert. Ich hatte die Linux-FW auf der pfsense als Gateway eingetragen und hatte aber noch zusätzlich eine Route dorthin. Führte scheinbar zu einigen Problemen.
Die Outbound sieht jetzt so aus:
LAN lokales Subnetz * Subnetz OpenVPN * LAN Address * NO
…jetzt funktioniert die SSH-Verbindung zum entfernten Server, so wie sie es soll.
Danke.