VM Traffic nur über VPN

Lhurian

Newbie
Registriert
Aug. 2017
Beiträge
7
Guten Abend/Nacht.

Da ich einfach nichts passendes finde, wende ich mich nun an euch. Ich möchte das der gesamte Traffic einer VM ausschließlich über ein VPN läuft. Sollte das VPN mal nicht erreichbar sein, soll gar nichts mehr gehen. Also nicht die "normale" Internetverbindung dann nutzen. Dies sollte am besten in der VM nicht umgehbar sein oder noch cooler gar nicht in der VM sichtbar sein. Der Host soll davon unbeeinflusst bleiben. Lässt sich sowas irgendwie über die Netzwerk Adapter realisieren? Weiß jemand wie man das angehen könnte?

Host System ist Windows 7 und ich nutze aktuell Virtualbox dafür.


Ergänzung: Traffic soll per VPN über einen privaten (Linux) Server gehen.
 
Zuletzt bearbeitet:
Du suchst einen VPN-Anbieter mit einem Kill-switch. Jeder halbwegs seriöse VPN Anbieter hat das in seiner Software drinnen.

Auf der anderen Seite verstehe ich ncht, was das bringen soll ohne DNS-Leak Schutz, IP-Leak Schutz, WebRTC-Leak Schutz und was ich alles nicht aufgezählt habe.
 
Zuletzt bearbeitet:
Naja, Windows eignet sich nicht sonderlich gut als Router. Wenn du die VPN-Verbindung nicht innerhalb der VM realisieren willst, muss dies auf dem Host oder einem separaten Gerät im Netzwerk geschehen. Im letzteren Fall hättest du zB einen PI im LAN, der als VPN-Gateway dient und bei der VM als Standard-Gateway eingetragen wird (bridged LAN in der VM vorausgesetzt). Allerdings ist das natürlich relativ leicht zu umgehen, da man lediglich das Gateway ändern müsste, um ungeVPNt ins www zu gehen.

Der Host - Windows - wiederum ist wie gesagt nicht gut als Router geeignet. Der Grund: Windows routet ausschließlich nach der Ziel-IP. Man kann also lediglich zB die IP von computerbase.de explizit über ein VPN leiten, das gilt dann aber für Host und VM. In deinem Falle müsste man aber unterschiedlich routen, je nachdem ob der Traffic nu von der VM kommt oder eben vom Hostsystem selbst. Dieses Routing-Prinzip nennt man "Policy Based Routing" und Windows .. .. .. kann das schlicht und ergreifend nicht. Microsoft sagt dazu offiziell, dass selbst Windows Server das nicht kann bzw. können soll, da ein Server ein Server ist und ein Router ein Router. (Erweitertes) Routing im Server ist von MS unerwünscht. Linux dagegen ist wie an vielen Stellen deutlich offener. Dort könnte man mit wenigen Handgriffen ein Routing aufbauen, dass explizit sämtlichen Traffic von der IP der VM über ein anderes Gateway schickt als den Traffic vom Host.

Wie dem auch sei, egal welche Lösung man wählt, du wirst nicht mit 100% Sicherheit die VM anders behandeln können als den Host. Windows als Router ist wie gesagt äußerst schwierig, ein externes Gerät (zB PI) wiederum wäre innerhalb der VM einfach zu umgehen. Da du die VM aber nicht einfach in ein anderes Netzwerk hängen kannst wie den Host, wird das zum Problem. Bei 2 separaten PCs wiederum könnte man zB mit VLANs arbeiten und zwei parallele Netzwerke aufbauen, eines das im Router via VPN geroutet wird und das andere wie Provider. Auch ein 08/15 WLAN-Router könnte mit geeigneter Firmware (zB OpenWRT) ein separates Netzwerk im Netzwerk aufbauen. Host und VM kannst du aber eben nicht so ohne weiteres voneinander trennen. Evtl mit einer zweiten Netzwerkschnittstelle und exklusiver Zuweisung zur VM.
 
@ghostwriter2
Hatte vergessen zu schreiben, dass der Traffic über über einen privaten (Linux) Server laufen soll. Also kein VPN-Anbieter wo ich das miete.

Von dem ganzen Leak Schutz höre ich zum ersten Mal, mit Ausnahme von WebRTC. Sehen die beim WebRTC nicht lediglich die IP die ich im Heimnetzwerk habe? Bin mal auf eine Website gestoßen, die sowas angezeigt hat und das war nur die IP aus dem Heimnetzwerk, lässt das dennoch Rückschlüsse zu? Welche Möglichkeiten habe ich denn, um zu überprüfen ob DNS, IP und WebRTC Schutz funktioniert?


@Raijin
Danke für die ausführliche Antwort, habe dadurch (vielleicht) mehr passendes per Google finden können :)

muss dies auf dem Host oder einem separaten Gerät im Netzwerk geschehen
Könnte das separate Gerät im Netzwerk nicht eine weitere VM sein mit IPFire, welches dann das Routing etc übernimmt? Die VMs bekämen dann als Netzwerk "Internal networking" und die VMs hätten so Zugriff untereinander aber nicht auf das Netzwerk vom Host. Die Verbindung nach außen soll dann die IPFire übernehmen und alles entsprechend routen. Wäre das auf diese Weise möglich, auch mit mehreren VPNs?
 
Im Prinzip ist das gar kein Problem. Auf dem VPS läuft ein OpenVPN Server und auf dem VM Host ein OpenVPN Client und verbindet die beiden VPN Interfaces (z.B. tap0) des VPS und VM Host zu einem LAN. Ich hab mal eine Beispielskizze gemacht:

Code:
VPS eth0 (externe VPS IP)                           VM Host eth0 (home network IP)

        ^
        |                                                  hier *kein*
       NAT                                           NAT / Routing / Bridging !
        |

VPS tap0 (172.16.0.1) <------ VPN (bridged) ------> VM Host tap0 (keine IP)
     
                                                              |
                                                            Bridge
                                                              |

                                                    VM Gast eth0 (172.16.0.2)

Die VM wird dann einfach mit dem VPN gebridged (wie das funktioniert ist abhängig vom OS und der eingesetzen Virtualisierungslösung). Wichtig ist, dass auf dem VM Host kein NAT, kein Routing und keine Bridge zwischen dem VPN Interface und dem Interface ins Heimnetz konfiguriert wird, damit die VM nicht übers Heimnetzwerk auf das Internet zugreifen kann! Im Endeffekt sind nur VPS und VM in einem LAN und über NAT Regeln auf dem Linux VPS kann die VM auf das Internet zugreifen.

Ist jetzt nur ein Beispiel wie man das aufbauen kann. Alternativ kann auch OpenVPN im Routing Modus verwendet werden und auch zwischen VM Gast und VM Host könnte man ebenfalls Routen statt eine Bridge zu verwenden. Hat den Vorteil, dass Layer 2 Traffic (Ethernet) isoliert wird.

Das ist auf jeden fall die saubere Art das aufzubauen. Alternativ kann man die VPN Verbindung innerhalb der VM realisieren und per Firewall alles bis auf den VPN Port und die VPS IP sperren. Da ist das Risiko aber größer, dass die VM durch Fehlkonfiguration hinterher doch offen im Heimnetzwerk hängt.

Ist vermutlich am Anfang nicht ganz einfach zu verstehen, wenn man noch nicht viel mit Netzwerken gemacht hat. Aber vielleicht hast du jetzt noch ein paar mehr Anhaltspunkte zum Googeln.
 
xblax schrieb:
Im Prinzip ist das gar kein Problem. Auf dem VPS läuft ein OpenVPN Server und auf dem VM Host ein OpenVPN Client und verbindet die beiden VPN Interfaces (z.B. tap0) des VPS und VM Host zu einem LAN. Ich hab mal eine Beispielskizze gemacht:

Code:
VPS eth0 (externe VPS IP)                           VM Host eth0 (home network IP)

        ^
        |                                                  hier *kein*
       NAT                                           NAT / Routing / Bridging !
        |

VPS tap0 (172.16.0.1) <------ VPN (bridged) ------> VM Host tap0 (keine IP)
     
                                                              |
                                                            Bridge
                                                              |

                                                    VM Gast eth0 (172.16.0.2)

Die VM wird dann einfach mit dem VPN gebridged (wie das funktioniert ist abhängig vom OS und der eingesetzen Virtualisierungslösung). Wichtig ist, dass auf dem VM Host kein NAT, kein Routing und keine Bridge zwischen dem VPN Interface und dem Interface ins Heimnetz konfiguriert wird, damit die VM nicht übers Heimnetzwerk auf das Internet zugreifen kann! Im Endeffekt sind nur VPS und VM in einem LAN und über NAT Regeln auf dem Linux VPS kann die VM auf das Internet zugreifen.

Ist jetzt nur ein Beispiel wie man das aufbauen kann. Alternativ kann auch OpenVPN im Routing Modus verwendet werden und auch zwischen VM Gast und VM Host könnte man ebenfalls Routen statt eine Bridge zu verwenden. Hat den Vorteil, dass Layer 2 Traffic (Ethernet) isoliert wird.

Das ist auf jeden fall die saubere Art das aufzubauen. Alternativ kann man die VPN Verbindung innerhalb der VM realisieren und per Firewall alles bis auf den VPN Port und die VPS IP sperren. Da ist das Risiko aber größer, dass die VM durch Fehlkonfiguration hinterher doch offen im Heimnetzwerk hängt.

Ist vermutlich am Anfang nicht ganz einfach zu verstehen, wenn man noch nicht viel mit Netzwerken gemacht hat. Aber vielleicht hast du jetzt noch ein paar mehr Anhaltspunkte zum Googeln.

Wie wäre das ganze denn mit Virtualbox umsetzbar? Habe hier diesbezüglich auch einen Thread erstellt, vielleicht kannst du mir da weiterhelfen :)
 
xblax schrieb:
Im Prinzip ist das gar kein Problem. Auf dem VPS läuft ein OpenVPN Server und auf dem VM Host ein OpenVPN Client und verbindet die beiden VPN Interfaces (z.B. tap0) des VPS und VM Host zu einem LAN. Ich hab mal eine Beispielskizze gemacht:

Code:
VPS eth0 (externe VPS IP)                           VM Host eth0 (home network IP)

        ^
        |                                                  hier *kein*
       NAT                                           NAT / Routing / Bridging !
        |

VPS tap0 (172.16.0.1) <------ VPN (bridged) ------> VM Host tap0 (keine IP)
     
                                                              |
                                                            Bridge
                                                              |

                                                    VM Gast eth0 (172.16.0.2)

Die VM wird dann einfach mit dem VPN gebridged (wie das funktioniert ist abhängig vom OS und der eingesetzen Virtualisierungslösung). Wichtig ist, dass auf dem VM Host kein NAT, kein Routing und keine Bridge zwischen dem VPN Interface und dem Interface ins Heimnetz konfiguriert wird, damit die VM nicht übers Heimnetzwerk auf das Internet zugreifen kann! Im Endeffekt sind nur VPS und VM in einem LAN und über NAT Regeln auf dem Linux VPS kann die VM auf das Internet zugreifen.

Ist jetzt nur ein Beispiel wie man das aufbauen kann. Alternativ kann auch OpenVPN im Routing Modus verwendet werden und auch zwischen VM Gast und VM Host könnte man ebenfalls Routen statt eine Bridge zu verwenden. Hat den Vorteil, dass Layer 2 Traffic (Ethernet) isoliert wird.

Das ist auf jeden fall die saubere Art das aufzubauen. Alternativ kann man die VPN Verbindung innerhalb der VM realisieren und per Firewall alles bis auf den VPN Port und die VPS IP sperren. Da ist das Risiko aber größer, dass die VM durch Fehlkonfiguration hinterher doch offen im Heimnetzwerk hängt.

Ist vermutlich am Anfang nicht ganz einfach zu verstehen, wenn man noch nicht viel mit Netzwerken gemacht hat. Aber vielleicht hast du jetzt noch ein paar mehr Anhaltspunkte zum Googeln.

Danke für die Anleitung. Scheine es nicht hinzu bekommen, mache wohl etwas falsch. Netzwerke sind für mich neu :/ Bekomme wohl VM Host tap0 --Bridge-- VM Gast eth0 nicht hin. Host ist Windows 7, vielleicht liegt es auch daran.

Habe mich die letzten Tagen damit beschäftigt und kam zu dem Schluss, dass es mit einer IPFire (eigene VM) gemacht werden soll. Die könnte ich bei Bedarf kopieren und müsste nicht alles neu einrichten (irgendwann neuer PC etc).

Nachdem ich endlich mal den OpenVPN auf dem VPS zum laufen gebracht habe (wurde kein tun Interface erstellt) und die Verbindung funktionierte, habe ich mich an die IPFire gemacht. Komme da nicht so recht weiter was ich da nun auswählen muss damit die IPFire nun die Funktion des OpenVPN Client übernimmt und nur ausgewählte Clients diese VPN Verbindung nutzen dürfen/müssen.

Weiß da einer vielleicht weiter?
 
Zurück
Oben