VMWare 1.01 Server mit NAT und Port-Forwarding betreiben

    • Offizieller Beitrag

    Quelle: http://ip-forum.net/forum/index.php?topic=342.0



    Ein Gast-Betriebssystem unter VMWare auf einem Linux-Server zu betreiben, ist nicht besonders kompliziert, und wenn als Netzwerk-Modell VMWare NAT (vmnet8 ) gewählt wird, hat das Gast-Betriebssystem sofort freien Internetzugang.


    Problematisch wird die Sache, wenn man von außen Zugriff auf bestimmte Gast-Dienste gewähren möchte, also z.B. einen Webserver, VNC oder Remote Desktop betreiben möchte, denn der NAT-Service von VMWare arbeitet wie jede andere Firewall: er blockt alle eingehenden Anfragen.


    Die übliche Lösung ist das VMWare Bridging (vmnet0). Betreibt man VMWare auf einem angemieteten Root-Server, scheidet das aus, weil man normalerweise weder ein geeignetes IP-Netz, noch öffentliche IP-Adressen erhält, die nicht bereits auf Netzwerkkarten des Linux-Servers gebunden sind.


    Weniger bekannt, aber sehr einfach und elegant ist die Konfiguration des VMWare NAT-Dienstes für Port-Forwarding. Dazu trägt man einfach in der Datei /etc/vmware/vmnet8/nat/nat.conf die gewünschten Port-Weiterleitungen ein. Um beispielsweise den TCP Port 8880 auf Port 80 der virtuellen Maschine umzuleiten, muss hier stehen:

    [incomingtcp]
    8880 = 192.168.133.128:80


    Dabei ist 192.168.133.128/24 das private Netz der VM, und 128 immer die erste, per VMWare-DHCP zugewiesene Adresse, bei nur einer Maschine braucht man daher noch nicht mal eine statische IP-Adresse im Gast-OS. Achtung: Diese Einstellungen werden erst bei einem kompletten Restart von VMWare übernommen. Jede Neukonfiguration mit vmware-config.pl löscht diese Einträge wieder!


    Das funktioniert prima, hat aber den Nachteil, dass der incoming Traffic unakzeptabel langsam ist. (Auf einem Dual CPU Highend Server war outgoing 100 Mbit/s, aber incoming nur 200 kbit/s erreichbar, getestet mit VMWare Server V.1.0.1) Für den VNC-Zugang ohne Filetransfer oder ein paar interaktive Dienste reicht das aus, aber keinesfalls für mehr.


    Bleibt als letzte Möglichkeit der Host-Only-Modus von WMWare, bei dem das gesamte Routing zur virtuellen Maschine manuell über die Linux-Firewall eingerichtet werden muss. Besonders elegant ist diese Lösung nicht, weil diese Linux-Firewall auch gleichzeitig den gesamten anderen Traffic zur Linux-Box beeinträchtigt, aber das ist Geschmackssache.


    Unter Suse Linux 10 braucht man sich dafür nicht mit iptables herumzuschlagen, sondern kann alles über YAST an der Firewall einstellen. Zunächst richtet man eine neue Firewall-Schnittstelle mit Namen vmnet1 ein, und ordnet sie der internen Zone zu. (Der Name ist egal, er wird vom Router nicht verwendet). Jetzt kann IP-Masquerading eingeschaltet werden. Hier trägt man dann die forwarding ports ein, unter "Umleiten an IP" mus die IP-Adresse des Gast-Systems stehen, also in obigem Beispiel: 192.168.133.128, sowie der Ziel-Port.


    Unter Erlaubte Dienste / Interne Zone kann Firewall vor interner Zone schützen abgewählt werden, wenn man aus dem Gastsystem über alle Ports ins Internet möchte (wer hat bloß diese unsägliche deutsche Übersetzung bei Suse verbrochen!).


    Die Port-Weiterleitung funktioniert natürlich nur, wenn die Firewall eingeschaltet wird, dann ist sie allerdings auch auf der externen Zone aktiv, und blockt zunächst auch komplett alle anderen Zugriffe auf Linux. Unter Erlaubte Dienste / Externe Zone müssen daher der DNS, Webserver, FTP, Plesk, die VMWare Console usw. noch freigeschaltet werden.


    Das Gastsystem bekommt eine statische IP-Adresse. Wenn für vmnet1 das Class C Netz 172.16.200.0/24 bei der VMWare-Installation eingerichtet wurde, ist einzutragen:


    Gast IP-Adresse: 172.16.200.100 (zum Beispiel)
    Default Route: 172.16.200.1
    DNS Server: 172.16.200.1 (Ja, VMWare macht korrektes DNS-Forwarding! )


    Das Positive an dieser Lösung: Es ist weder eine zweite Netzwerkkarte noch eine zweite IP-Adresse nötig, um beliebige Dienste der virtuellen Maschine von außen zu erreichen, und die Geschwindigkeit ist in jeder Richtung hervorragend.

    Developer | deh-vel-up-ur

    noun


    1 a person or thing that develops stuff: in e.g. software developer, someone having knowledge of a particular topic beyond the level of knowlegde needed for ordinary usage of that topic

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!