Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

11.10.2013, 13:34

OpenVPN: routing/bridging funktioniert nicht so richtig

Hallo zusammen,

folgendes plagt mich aktuell:

Ich habe einen Gentoo-Server mit 2 Netzwerkkarten, darauf läuft u.a. kvm mit einem virtualisierten Windows.
Die Netzwerkanbindung der Virtualisierung ist per bridge (br0 <> eth0) gelöst. Das funktioniert soweit prima, ich kann von allen Rechnern im lokalen Netz auf den Gentooserver (192.168.1.1) und den Windows Server (192.168.1.2) zugreifen und umgekehrt.

Jetzt wird es (für mich) aber knifflig: Ich will OpenVPN :)
Bisher hatte ich den OpenVPN-Server unter Windows konfiguriert, was mir auch gereicht hat, um über den Tunnel per rdesktop auf die Windows-Mühle zuzugreifen. Jetzt möchte ich allerdings OpenVPN auf dem Linux-Server laufen lassen und Zugriff auf das gesamte Netz.

eth1 habe ich mit einer IP aus dem selben Netz konfiguriert (192.168.1.3) und lasse OpenVPN darauf lauschen.
Der OpenVPN-Server legt ein tun-Device mit der IP 10.8.0.1 an und vergibt Adressen ab 10.8.0.50. Im Großen und Ganzen ist er mittels der Beispiel-Konfiguration von openvpn eingerichtet.

Was ich auch anstelle, ich schaffe es, lediglich auf den Linuxserver zuzugreifen, ein Zugriff auf andere Rechner im gleichen Netz funktioniert nicht.

Ich vermute ja, daß ich meinem Pinguin noch sagen muss, daß ich die Pakete routen will, aber ich komme partout nicht drauf, wie ich das machen soll :)


Andererseits habe ich mir auch schon überlegt, ob ich OpenVPN nicht per bridge ans Netz hänge, dazu würde ich das dann verwendete tap-Device der eh schon vorhandenen br0 zuordnen. Ein schneller Veruch damit hat aber leider auch nicht funktioniert.

Was würdet Ihr sagen, was ist best practice? Wie macht Ihr sowas?

Danke schon mal,

42m

2

11.10.2013, 14:26

Wenn ich es richtig verstehe ist eth0 bei Dir mit dem LAN verbunden. Wohin geht eth1? Prinzipiell sollte man nicht das selbe Subnetz auf mehren Karten im selben Rechner einstellen. Das schafft nur Probleme.

OpenVPN für den Zugriff von außen sollte immer soweit wie möglich am Internet dran sein, am besten auf dem Gerät das mit dem Internet verbunden ist. Wenn es eine Fritzbox ist, da kriegt man OpenVPN auch drauf.

Die Default-Routen aller Rechner im Netz sollten über den Rechner mit OpenVPN Server durchlaufen. Dann werden auf dem Server die "Rückantwort-Pakete" in den Tunnel geroutet, "nicht VPN"-Pakete jedoch ins Internet. Wenn der OpenVPN-Server nicht auf der Default-Route liegt, müsste man auf jedem Rechner, auf den zugegriffen werden soll, explizit eine VPN-Route konfigurieren, sonst laufen die Antworten ins Internet und Du bekommst keine Verbindung zustande.

In dem Zusammenhang beschäftigt man sich normalerweise auch mit IP-Tables, weil man ja einen Router aufbaut und bestimmen möchte wer was wohin routen darf. Ist aber nicht zwingend notwendig.

Aber jetzt zu Deiner eigentlichen Frage: Die Antwort ist:

entweder

Quellcode

1
echo 1 > /proc/sys/net/ipv4/ip_forward


oder beim Booten:
$ fgrep forward /etc/sysctl.conf

Quellcode

1
2
# Disables packet forwarding
net.ipv4.ip_forward = 0
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

3

11.10.2013, 14:59

Wenn ich es richtig verstehe ist eth0 bei Dir mit dem LAN verbunden. Wohin geht eth1? Prinzipiell sollte man nicht das selbe Subnetz auf mehren Karten im selben Rechner einstellen. Das schafft nur Probleme.
Richtig. eth0 ist mit dem LAN verbunden. Allerdings hat eth0 nicht direkt eine IP sondern steckt mit vnet0 zusammen in br0. Diese Bridge hat eine lokale IP (192.168.1.1).
Das ist notwendig, weil über vnet0 ein virtualisierter Windowsserver ans Netz angebunden wird.

eth1 ist (zur Zeit für meine Tests) ebenfalls mit einer lokalen IP (192.168.1.3) versorgt.
OpenVPN für den Zugriff von außen sollte immer soweit wie möglich am Internet dran sein, am besten auf dem Gerät das mit dem Internet verbunden ist. Wenn es eine Fritzbox ist, da kriegt man OpenVPN auch drauf.
Es ist ein Funkwerk-Router. Der kann von Haus aus IpSec, aber das gefällt mir nun gar nicht, u.a. weil die Clients für Windows Geld kosten - jedenfalls die, die halbwegs funktionieren. Außerdem habe ich den Drang, das selbst zu machen :)
Der Router reicht die OpenVPN-Pakete direkt an den Server durch, das funktioniert auch.
Die Default-Routen aller Rechner im Netz sollten über den Rechner mit OpenVPN Server durchlaufen. Dann werden auf dem Server die "Rückantwort-Pakete" in den Tunnel geroutet, "nicht VPN"-Pakete jedoch ins Internet. Wenn der OpenVPN-Server nicht auf der Default-Route liegt, müsste man auf jedem Rechner, auf den zugegriffen werden soll, explizit eine VPN-Route konfigurieren, sonst laufen die Antworten ins Internet und Du bekommst keine Verbindung zustande.
Ahhh, dann wird es das wohl sein. Die Default-Route ist nämlich die zum Router ...
Wie müsste so eine VPN-Route denn aussehen? Im lokalen Netz sind die Rechner untereinader ja erreichbar, eine Route die Pakete nach 192.168.1.0 über das jeweilige NIC schickt ist demnach ja vorhanden. Sonst wären ja auch die beiden Server nicht erreichbar.

Bevor ich jetzt anfange, die Infrastruktur umzubauen würde ich gerne versuchen, es doch noch so zum laufen zu bekommen ;-)
In dem Zusammenhang beschäftigt man sich normalerweise auch mit IP-Tables, weil man ja einen Router aufbaut und bestimmen möchte wer was wohin routen darf. Ist aber nicht zwingend notwendig.
Naja, das Routing mit iptables habe ich nicht wirklich hinbekommen. Ich denke, ich muss auf meinem Server erreichen, daß Pakete aus dem Netz 10.8.0.0 nach 192.168.1.0 geroutet werden und umgekehrt.
Aber jetzt zu Deiner eigentlichen Frage: Die Antwort ist:
echo 1 > /proc/sys/net/ipv4/ip_forward
oder beim Booten:
$ fgrep forward /etc/sysctl.conf
Ist gegeben. Muss ja, da ich das schon für die Bridge brauche :D


42m

4

11.10.2013, 20:31

Andererseits habe ich mir auch schon überlegt, ob ich OpenVPN nicht per bridge ans Netz hänge, dazu würde ich das dann verwendete tap-Device der eh schon vorhandenen br0 zuordnen. Ein schneller Veruch damit hat aber leider auch nicht funktioniert.
Mein OpenVPN läuft mit "tun" Devices.Mit "tap" habe ich keine Erfahrung.Aber unabhängig davon, kannst Du nicht OpenVPN auf der Bridge, also auf der 192.168.1.1 lauschen lassen? Dann brauchst Du eth1 mit IP aus dem selben Subnetz nicht (Bin sehr skeptisch was das angeht).
Wie müsste so eine VPN-Route denn aussehen?
Da Dein OpenVPN Netzwerk auf 10.8.0.0/8 konfiguriert ist, musst Du die Pakete an diese Adressen auf Deinen VPN-Server routen. Zumindes geht es so mit "tun"-Devices.
Auf den Clients muss also sowas wie

Quellcode

1
route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.1.3
eintragen.
Du hast Glück, dass einzelne Systeme (Dein Laptop) die Verbindung über OpenVPN nutzen. Müsstest Du ganze Netzwerk-Segmente über VPN in Dein privates Netzwerk-Segment routen, wäre es noch etwas komplizierter.
Falls Du die Route auf Deinem Router unterbringen kannst, so kann es klappen dass dieser das Umleiten übernimmt und Du musst nichts auf den Servern tun.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

5

12.10.2013, 17:09

Mein OpenVPN läuft mit "tun" Devices.Mit "tap" habe ich keine Erfahrung.Aber unabhängig davon, kannst Du nicht OpenVPN auf der Bridge, also auf der 192.168.1.1 lauschen lassen? Dann brauchst Du eth1 mit IP aus dem selben Subnetz nicht (Bin sehr skeptisch was das angeht).
Wäre mir auch lieber, aber da habe ich dann das Problem, daß die Bridge aus irgendeinem Grund die Grätsche macht, sobald ich OPenVPN auf 1.1 lauschen lasse.
Zur Zeit kann/will ich es nicht testen, da der Server 70 Kilometer entfernt steht und wenn ich da jetzt was abschieße ärgere ich mich das ganze Wochenende. Dann komme ich auch per SSH nicht mehr drauf ... Das teste ich am Montag noch mal.


route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.1.3

eintragen.
Du hast Glück, dass einzelne Systeme (Dein Laptop) die Verbindung über OpenVPN nutzen. Müsstest Du ganze Netzwerk-Segmente über VPN in Dein privates Netzwerk-Segment routen, wäre es noch etwas komplizierter.
Falls Du die Route auf Deinem Router unterbringen kannst, so kann es klappen dass dieser das Umleiten übernimmt und Du musst nichts auf den Servern tun.
Hm, ja, das werde ich mal versuchen. Und parallel dazu werde ich die Zeit nutzen und mich intensiv in die Materie einlesen. Ich habe da echt Nachholbedarf, fürchte ich :)

Danke schon mal, ich teste und berichte dann, wie es läuft. Bis dahin lasse ich das hier mal noch offen :)

42m