Forum: PC Hard- und Software Routing auf Linux / OpenVPN


von Steffen (Gast)


Lesenswert?

Hallo zusammen,
ich habe folgendes Szenario, das mir gerade etwas Kopfschmerzen 
bereitet:

Ich habe im Büro (B1) einen Raspberry laufen, der als OpenVPN-Client mit 
einem Kundennetzwerk (K) verbunden ist. Der Raspberry Pi läuft als 
Proxyserver (Polipo). Über ein Proxy Auto-Config File werden bestimmte 
Anfragen aus dem Netzwerk des Büros über den Proxy in das Kundennetzwerk 
geleitet. Funktioniert soweit hervorragend.

Nun habe ich einen zweiten Büro-Standort (B2), der per VPN mit dem Büro 
(B1) verbunden ist. Ich möchte nun auch von diesem zweiten Standort (B2) 
aus über das VPN und den Proxy im Büro (B1) in das Kundennetzwerk (K) 
springen.

Das Problem ist, dass ich den Proxyserver über das VPN B1-B2 schon nicht 
erreichen kann, weil der Proxyserver sämtliche Anfragen über das VPN 
B1-K versendet und damit alle Anfragen ins Nirvana gehen.

Ändere ich die Routingkonfiguration, dass Anfragen von B2 nicht über das 
Kunden VPN versandt werden, sondern über über das VPN B1-B2, kann ich 
zwar den Raspberry erreichen, meine Proxyanfragen gehen dann aber 
natürlich auch nicht mehr über das Kunden VPN. Hier stecke ich irgendwie 
fest.

Eine direkte Verbindung zum Kundenunternehmen (B2 - K) kann ich leider 
nicht aufbauen.

Hat jemand vielleicht einen Vorschlag? Ich hoffe, das war verständlich, 
sonst zeiche ich es gerne nochmals auf.

Danke und schöne Pfingsten!
Steffen

von Jim M. (turboj)


Lesenswert?

Steffen schrieb:
> Ändere ich die Routingkonfiguration, dass Anfragen von B2 nicht über das
> Kunden VPN versandt werden, sondern über über das VPN B1-B2, kann ich
> zwar den Raspberry erreichen, meine Proxyanfragen gehen dann aber
> natürlich auch nicht mehr über das Kunden VPN.

Wieso? Überschneiden sich die Netzwerke? Das wäre blöd, dann müsste man 
anderen Nummern vergeben.

Du musst halt spezifischer mit Zieladdressen arbeiten, und nicht nur mit 
der "Default Route".

Man erinnere sich: Beim Routing gewinnt der Match mit den meisten 
übereinstimmenden Bits. Also braucht der B1 Router eine Route für B2, 
die mehr Maskenbits hat als die nach K.

von Steffen (Gast)


Lesenswert?

Nein - sie überschneiden sich nicht.

Netzwerk des Büros 1: 192.168.47.0
Netzwerk des Büros 2: 192.168.2.0
Netzwerk des Kunden:  192.168.40.0

Der Rechner, der die VPN Verbindung B1 - B2 aufbaut, erhält die interne 
IP Adresse 10.242.6.2.

Der Proxyserver, der die VPN Verbindung B1 - K aufbaut, erhält die 
interne IP Adresse 141.7.111.8.

Mit Routing habe ich bislang noch nicht zu viel gearbeitet. Ich lese 
mich ein. Hast du mir trotzdem noch einen Hinweis, wie ich konkret 
vorgehen kann?

Danke!

von Steffen (Gast)


Lesenswert?

PS. Probiert hatte ich es übrigens so:

sudo route add -host 109.242.6.2 gw 192.168.47.250

192.168.47.250 ist das Gateway von B1, über das auch die VPN Verbindung 
B1-B2 läuft.

Danach konnte ich den Proxyserver von B2 aus erreichen, aber alle http 
Anfragen über den Proxyserver gingen dann auch über das Gateway 
192.168.47.250, also über B2, anstatt wie gewünscht über K.

von Steffen (Gast)


Lesenswert?

Was mir eigentlich am meisten helfen würde:

Nur die Ports 80/443 sollen über VPN B1 - K laufen, alle restlichen 
Anfragen über das normale Gateway.

von Jim M. (turboj)


Lesenswert?

Steffen schrieb:
> Nur die Ports 80/443 sollen über VPN B1 - K laufen, alle restlichen
> Anfragen über das normale Gateway.

Is nich, müsste man manuell im Webbrowser (und in jedem anderen Programm 
das über https läuft) umstellen. Routing erfasst nur komplette IP 
Addressen.

Firewall mit iptables könnte so'n Scheiss eventuell über Policy-based 
Routing, aber da Du scheinbar schon mit ganz normalem Deine Probleme 
hast: Vergiss es lieber. Das wäre mir auch zu kompliziert.

Übrigens fällt mir auch ein dass B1 NAT machen müsste, weil K ja von den 
Netzen hinter B1 normalerweise nix weiss. B1 müsste also alle "fremden" 
Addressen maskieren (-j MASQUERADE bei iptables).

Ansonsten sieht man im Wireshark schön die Pakete ins Kundennetz 
wandern, wo niemals eine Antwort zurück kommen kann.

von TestX (Gast)


Lesenswert?

@TO
das geht alles über normales routing....bei dir ist nur der "Proxy" erst 
einmal fehl am platz (wofür auch immer du das ding verwendest).

Der OpenVPN Server MUSS die verfügbaren Routen zu den Clients leiten 
(push route). Da dies an 2 Punkten notwendig ist musst du 
unterschiedliche Client configs erstellen (OpenVPN ccd). Sobald die 
Routen auf beiden VPN Clients verfügbar sind und die Firewalls 
(hoffentlich vorhanden) den Traffic weiterleiten wars das schon.

Masquerading ist nur an den Punkten notwendig wo der Traffic aus dem 
OpenVPN Netz in das jeweils lokale Netz gehen soll.

Ich würde dir zumindest zu OPNsense als Software raten (Server+Clients) 
da die Konfiguration für Anfänger ohne Hilfe nicht umzusetzen ist.

von John Doe (Gast)


Lesenswert?

Jim M. schrieb:
> Is nich, müsste man manuell im Webbrowser (und in jedem anderen Programm
> das über https läuft) umstellen. Routing erfasst nur komplette IP
> Addressen.
>
> Firewall mit iptables könnte so'n Scheiss eventuell über Policy-based
> Routing, aber da Du scheinbar schon mit ganz normalem Deine Probleme
> hast: Vergiss es lieber. Das wäre mir auch zu kompliziert.


Also das ist ja nun nicht wirklich kompliziert. Weitere Routingtabellen 
anlegen und Pakete nach den üblichen Regeln (Sourceport, Zielport, IPs, 
wasauchimmer) markieren. Mehr ist das nicht.
Keine zehn Minuten und das läuft.

von John Doe (Gast)


Lesenswert?

TestX schrieb:
> Masquerading ist nur an den Punkten notwendig wo der Traffic aus dem
> OpenVPN Netz in das jeweils lokale Netz gehen soll.


Er hat nichts dazu geschrieben, ob er auf Kundenseite Routen einrichten 
(lassen) kann. Insofern ist nicht klar, ob er überhaupt Masquerading 
braucht.
Ein paar mehr Infos wären hilfreich.

von Markus -. (mrmccrash)


Lesenswert?

Ich sehe hier mehrere Ansatzpunkte:

- wie ist das VPN B1-B2 konfiguriert? Routen hier die Standardgateways 
automatisch in das richtige Subnetz? Kannst du von beiden Seiten aus 
durch das VPN alle anderen Adressen anpingen?
- welche Routen sind in den Raspberry tatsächlich aktiv? Es müssten 2 
Routen hinterlegt sein, eine default zum lokalen Standardgateway und 
eine 192.168.40.0/24 zu dem KundenVPN. Eventuell, je nach Konfiguration 
des OpenVPN, noch eine dritte für den Transportweg zum VPN Gateway des 
Kunden
- was macht der Proxyserver? startet der nach dem Verbinden des VPN, 
damit er alle Netzwerkadressen bzw. Interfaces kennt?
- was ist in dem OpenVPN konfiguriert, wird dort manchmal das 
Standardgateway auf die Kundenseite umgebogen? Ist es eine TUN oder TAP 
Konfiguration?

Am besten machst du dir mal eine Grafik, in der du die beteiligten 
Router und VPN einzeichnest, mit allen IP Adressen, Netzmasken und 
Interfaces. Damit kann man besser nachvollziehen, wo die Daten überhaupt 
lang müssen...

Soviel erstmal zum probieren, Ich denke, hier sind noch einige 
Stolpersteine versteckt.

_.-=: MfG:=-._

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.