iptables und virtualbox - Wo ist mein Denkfehler?

31/05/2015 - 21:52 von Manfred Schenk | Report spam
Hallo,

ich vermute mal ich habe irgendwo noch nen Denkfehler der dazu führt das ich
mein Ziel nicht erreiche - vielleicht kann mich jemand mal drauf stossen.

Hier meine Problemstellung bzw. die Umgebung:

- Server mit drei festen IP-Adressen auf einem einzigen physikalischen
Netzwerkinterface.

- Auf dem Server làuft VirtualBox als non-ROOT user, also kein port-forwarding
für privileged ports möglich.

- VirtualBox Networking kann nicht im bridged-Mode genutzt werden
(aufgrund Sicherheitspolicies)

In einer dem VMs in VirtualBox làuft ein apache der auf Port 80 lauscht.
In VirtualBox ist für diese VM der Netzwerktyp NAT ausgewàhlt, in den
erweiterten Settings ist ein Portforwarding von Port 11080 des Hosts
(IP-Adresse "3") auf Port 80 in der VM eingerichtet.

Beim Zugriff von extern auf <IP-Adresse "3">:11080 funktioniert alles
wunderbar, also das Portforwarding innerhalb VirtualBox scheint zu
funktionieren.

Das Ziel ist nun auch beim Zugriff von extern über <IP-Adresse "3">:80 den
virtuellen apache zu erreichen.

Meine Idee dazu war nun iptables.

Also rules angelegt um <IP-Adresse "3">:80 auf <IP-Adresse "3">:11080 per
redirect umzuleiten.

Hier sehe ich zwar anhand einer zusàtzlich eingefügten "LOG" rule dass die
Regel wohl korrekt ist, aber leider kommt keine verbindung zum apache
zustande.

Wenn ich per analog formulierten Regeln auf Port 9080 umleite und dort einen
weiteren apache auf dem Host direkt laufen lasse funktioniert die Umleitung
per iptables einwandfrei.

Das Problem muss also irgendwie an der Kombination aus iptables und
virtualbox liegen. Leider habe ich keine Informationen wie iptables sein
Portforwarding realisiert - ich vermute daher dass virtualbox irgendwie
früher als iptables in den Ablauf eingeklinkt ist und die durch iptables
umgeleiteten Pakete gar nicht mehr an VirtualBox vorbeikommen.

Hat hier jemand mehr Informationen und kann mir helfen?

cu,
Manfred

P.S.: Falls das Thema besser in die Virtualisierungs Group passt bitte
Thread umlenken...


| Manfred Schenk | born between RFC638 and RFC640
| |
| | WWW: http://www.ZEROByte.de/
 

Lesen sie die antworten

#1 Sven Geggus
01/06/2015 - 10:06 | Warnen spam
Manfred Schenk wrote:

In einer dem VMs in VirtualBox làuft ein apache der auf Port 80 lauscht.
In VirtualBox ist für diese VM der Netzwerktyp NAT ausgewàhlt, in den
erweiterten Settings ist ein Portforwarding von Port 11080 des Hosts
(IP-Adresse "3") auf Port 80 in der VM eingerichtet.



Man sollte sowas bei etwas aufwendigeren Netzwerk-Setups IMO besser selber
mit iptables machen. Im Modus NAT macht der Virtualbox intern
selbst irgendwelche vermeintlich schlauen Sachen (wie z.B. NAT).

Besser ist die Variante "host only network". In diesem Fall konfiguriert man
NAT und DNAT auf dem host genaus so wie man das auch mit einem per zweiter
Netzwerkkarte angeschlossenem LAN machen würde.

Dann gibst Du vboxnet0 beispielsweise die 192.168.42.1 und deiner VM die
192.168.42.2 und richtest NAT entsprechend ein:

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -j SNAT --to <eine deiner 3 IPs>

Mit einer hostroute kannst Du dann sogar eine Deiner IPs direkt auf die VM
legen und kannst Dir sàmtliche NAT Geschichten sparen.

Oder man macht gleich 1:1 NAT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.2 -j SNAT --to-source <eine deiner 3 IPs>
iptables -t nat -A PREROUTING -i eth0 -d <eine deiner 3 IPs> -j DNAT --to-destination 192.168.1.2


Gruss

Sven

Das allgemeine Persönlichkeitsrecht (Art. 2 Abs.1 i.V.m. Art.1 Abs. 1GG)
umfasst das Grundrecht auf Gewàhrleistung der Vertraulichkeit und Integritàt
informationstechnischer Systeme. (BVerfG, 1BvR 370/07)
/me is , http://sven.gegg.us/ on the Web

Ähnliche fragen