Wie kann ich zwei (virtuelle) Netzwerke erstellen und dazwischen routen?

tori

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
75
Ich benutze VirtualBox und würde gerne eine Testumgebung aufbauen, in der ich zwei getrennte Netzwerke miteinander verbinde (mit OpenVPN). Bisher habe ich einfach unterschiedliche Subnetze erstellt mit je zwei VMs. Je eine VM aus jedem Subnetz sind in einem gemeinamen Verbindungsnetz, sodass sie miteinaner kommunizieren können. Zwischen diesen will ich einen Tunnel aufbauen und sie bei allen anderen VMs in ihrem Subnetz als Standardgateway eintragen. Das sollte dazu führen, dass am Ende jeder mit jedem kommunizieren kann.

Problem: Trotz unterschiedlicher Subnetze, leerer Routingtabellen in allen VMs und leerem ARP Cache kann jeder jeden anpingen. Auch ohne VPN-Tunnel.

Die OS sind jeweils Debian6 ohne irgendwelche Software. Die VMs benutzen alle den "Bridge Mode".

Frage 1) Kann ich das Netzwerk irgendwie so konfigurieren, das obwohl alles geswitcht ist, nicht jeder mit jedem reden kann? (Ich bin mir recht sicher, dass das nicht geht, deshalb hab ich das auch nicht im Netzwerkboard gepostet...)
Frage 2) Falls nein, kann ich VirtualBox dazu bringen zwei interne Netze zu emulieren zwischen denen geroutet wird? Geht das vllt mit zwei physikalischen Rechnern?
Frage 3) Kann ich irgendwie anders eine Umgebung aufbauen um Routing zu testen ohne echte Hardware? (SDN?)

Im Grunde will ich diese Anleitung ausprobieren: http://wiki.openvpn.eu/index.php/Config_ServerNET_ClientNET
 
Poste mal ein grafische Übersicht mit IP-Tabellen wie das Netzwerk aussehen soll.
Ist leichter verständlich. :)
Oder soll es das aus der Aufgabe werden ?

PHP:
--------------------------                          --------------         -------------
|   S 1                  |                          | R 1.1      |         |  R 1.N    |
|OVPN-Server             | Netzwerk 1: Berlin       |            |         |           |
|eth0: ovpnbsp.dyndns.org|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|
|eth1: 192.168.0.1       | 192.168.0.0/24           |            |         |           |
|tun0: 10.0.0.1          |                          |            |         |           |
--------------------------                          --------------         -------------
          | | Internet
          | |
          | | 
          | | Netzwerk 3: OpenVPN
          | | 10.0.0.0/24
          | |
          | |
--------------------------                          --------------         -------------
|   S 2                  |                          | R 2.1      |         |  R 2.N    |
|OVPN-Client             | Netzwerk 2: München      |            |         |           |
|eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|
|eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |
|tun0: 10.0.0.6          |                          |            |         |           |
--------------------------                          --------------         -------------

Dann musst
Die VMs benutzen alle den "Bridge Mode".
schonmal ändern.

Musst in dem Fall 3 virtuelle Netzwerke nutzen.

1. Verbindung zwischen den Servern, 10.0.0.0 Netz
2. Netzwerk für das 192.168.0.0 Netz
3. Netzwerk für das 192.168.1.0 Netz

Das routen übernehmen dann die Server.

2013-05-27 16 51 13.jpg 2013-05-27 16 54 22.jpg
 
Zuletzt bearbeitet:
sasdensas schrieb:
Haste schon mal hier geschaut? https://www.virtualbox.org/manual/ch06.html

Da steht das Verhalten unter Bridged networking und Internal networking beschrieben.

Hab ich durchgelesen, bringt mich auch nicht weiter. Da stand nur drinn wie ein Switch funktioniert und dass es mit NAT wahrscheinlich eher schlimmer werden würde.

@marcol1979: Bis auf die IPs identisch.
Code:
--------------------------                          -----------------
|   VM 2                 |                          | VM 3          |
|OVPN-Server             | Network 1                |IP:            |
|eth1: 192.168.177.20----|--------------------------|192.168.177.30 |
|eth1:0: 192.168.179.20  | 192.168.177.0/24         |Gateway:       |
|tun0: 10.0.0.1          |                          |192.168.177.20 |
|Gw: 192.168.177.20      |                          |               |
--------------------------                          -----------------
          | | Internet
          | |
          | | 
          | | Network 2: OpenVPN
          | | 10.0.0.0/24
          | |
          | |
--------------------------                          -----------------
|   VM 1                 |                          | VM 4          |
|OVPN-Client             | Network 3                |               |
|eth2:   192.168.178.10--|--------------------------|192.168.178.40 |
|eth2:0: 192.168.179.10  | 192.168.178.0/24         |Gateway:       |
|tun0: 10.0.0.6 (dhcp)   |                          |192.168.178.10 |
|Gw: 192.168.178.10      |                          |               |
--------------------------                          -----------------
Hm, aus der Beschreibung von VirtualBox ging irgendwie nicht hervor, dass eine VM Mitglied mehrerer internen Netze sein kann... Dann werde ich das mal testen. Dauert sicher eine Weile.
 
wenn du bridgest ist die vm doch in deinem haupt lan mit drin oder????
dann gibts da net so viel zu routen :P
du bräuchtest 2 intene netze (heißt glaub auch intern oder internal) und eine vm die eben in beiden drin ist. dann kannste auch routen
 
Probier es mal mit Internal Networking. Laut der Manual sollte es damit klappen, soweit ich es verstanden habe.
 
Ok, das mit den internen Netzwerken habe ich jetzt soweit aufgesetzt. Das Routing funktioniert aber nicht.

Erinnerung: Ich habe 2 getrennte Netzwerke, will dazwischen einen VPN Tunnel aufbauen und dazwischen routen. Jeder Rechner soll am Ende jeden anpingen können.

Ich habe 2 Verdächtige:
1. Woher kommen 10.0.0.2 und 10.0.0.5 ??
2. Ich bin mir nicht sicher wie ich die Standardgateways konfigurieren muss

zu 1) OpenVPN baut einen Tunnel auf, die Tunnel-Internen IPs liegen im Netz 10.0.0.0/24. Der Server hat 10.0.0.1 (kann der Client nach Verbindungsaufbau anpingen) und fungiert als DHCP-Server für das Netz im Tunnel. Der Client hat 10.0.0.6 (auch das kann angepingt werden, vom Server aus).
Woher kommen 10.0.0.2 und 10.0.0.5 in den Routingtabellen? Ich habe mal mit grep -r "10.0.0.5" /etc /root /home alles durchsucht wo sowas konfiguriert sein könnte und nichts gefunden, das muss also irgendwas dynamisches sein.

Routingtabellen:
Code:
Client (VM1 aka IP endet auf 10)
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
10.0.0.5        *               255.255.255.255 UH    0      0        0 tun0 <- ping @ 10.0.0.5 schlägt fehl
10.0.0.1        10.0.0.5        255.255.255.255 UGH   0      0        0 tun0
192.168.178.0   *               255.255.255.0   U     0      0        0 eth2
192.168.177.0   10.0.0.5        255.255.255.0   UG    0      0        0 tun0 <- routet ins Server-Netz
192.168.56.0    *               255.255.255.0   U     0      0        0 eth3
default         192.168.178.10  0.0.0.0         UG    0      0        0 eth2

Server (VM2 aka IP endet auf 20)
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
10.0.0.2        *               255.255.255.255 UH    0      0        0 tun0 <- ping @ 10.0.0.2 schlägt fehl
192.168.178.0   10.0.0.2        255.255.255.0   UG    0      0        0 tun0 <- routet ins Client-Netz
192.168.179.0   *               255.255.255.0   U     0      0        0 eth1
192.168.177.0   *               255.255.255.0   U     0      0        0 eth1
10.0.0.0        10.0.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.56.0    *               255.255.255.0   U     0      0        0 eth2
default         192.168.177.20  0.0.0.0         UG    0      0        0 eth1
IMHO: Solange die Default-Routen ins gegenüberliegende Netz (Zeile 6 und 13) auf diese seltsamen 10er IPs verweisen die es nicht gibt (kann man auch nicht anpingen) kann das auch nicht funktionieren. Die IPs 10.0.0.1 und 10.0.0.6 sollten da normalerweise verwendet werden, so wie ich OpenVPN verstanden habe. Die gibt es auch und die kann man auch anpingen von beiden Seiten.

zu 2) Da habe ich als Standardgateway einfach mal Bruteforce-mäßig auf VM1 & VM2 durchprobiert:
  • die 192.168.56.5 (das Host-Interface)
  • kein Standardgateway
  • das eigene Public-Interface (192.168.56.*)
  • das eigene Private-Interface (192.167.17*.*)
  • und Public- sowie Private Interface (zwei Gateways)
Nichts hat funktioniert. IMHO: Die Einstellungen hier haben eigentlich nur Auswirkungen auf die letzte(n) Zeile(n) der Routingtabellen (siehe oben). Solange da aber nicht der Fehler raus ist wird das hier keine Auswirkungen haben.

Der Vollständigkeit halber hier nochmal das ganze Netz im aktuellen Zustand:
Code:
--------------------------                          -----------------
|   VM 2                 |                          | VM 3          |
|OVPN-Server             | Internal Network 1       |IP: (eth2)     |
|eth1: 192.168.177.20    |--------------------------|192.168.177.30 |
|eth2: 192.168.56.20     | 192.168.177.0/24         |Gateway:       |
|tun0: 10.0.0.1          |                          |192.168.177.20 |
|Gw:   192.168.177.20    |                          |               |
--------------------------                          -----------------
          | | Host-Only Network
          | | Host-IP: 192.168.56.5
          | | DHCP-Server: 192.168.56.100 (not used)
          | | Network: 192.168.56.0/24
          | | Tunnel: 10.0.0.0/24
          | | The Host can run Wireshark on the Host-Only Interface
          | | to sniff encrypted traffic.
--------------------------                          -----------------
|   VM 1                 |                          | VM 4          |
|OVPN-Client             | Internal Network 3       |IP: (eth3)     |
|eth2: 192.168.178.10    |--------------------------|192.168.178.40 |
|eth3: 192.168.56.10     | 192.168.178.0/24         |Gateway:       |
|tun0: 10.0.0.6 (dhcp)   |                          |192.168.178.10 |
|Gw:   192.168.178.10    |                          |               |
--------------------------                          -----------------

Ein dickes Danke an alle die sich die Arbeit machen sich da (teilweise) reinzudenken!

//edit: Wenn ich die Routingtabelle auf dem Server von Hand richtig einstelle kann ich nichtmal mehr 10.0.0.6 anpingen, das müsste eigentlich der Client sein.
Code:
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.178.0   10.0.0.6        255.255.255.0   UG    0      0        0 tun0
192.168.177.0   *               255.255.255.0   U     0      0        0 eth1
10.0.0.0        *               255.255.255.0   U     0      0        0 tun0
192.168.56.0    *               255.255.255.0   U     0      0        0 eth2
default         192.168.177.20  0.0.0.0         UG    0      0        0 eth1
 
Zuletzt bearbeitet:
Wenn ich die Routingtabelle nur auf dem Server einstelle kommt der Ping zwar an (tcpdump -i eth3), aber nicht zurück. (Fehler 1: Routingtabelle auch auf dem Client einstellen.)

Der Client hatte in seinem Zertifikat als Common Name "vpnclient01", die Datei in /etc/openvpn/ccd muss genauso heißen, damit die Befehle darin ausgeführt werden: iroute (Fehler 2)

[Gelöst]
 
Zurück
Oben