# Probleme mit vmware-server-1.0.8 und Bridged-Network

## Gucky_der_Mausbiber

Hallo,

nachdem ich nun endlich meinen vmware-server zum laufen gebracht habe und sogar das starten einer VM ohne Systemabsturz möglich ist zeigt sich leider schon das nächste "seltsame" Problem.

Und zwar funktioniert das bridged-Networking nicht, will heissen die VM (WinXP) bekommt keine IP zugewiesen, bzw. bei manuell eingetragener IP findet er die anderen Rechner nicht und läßt sich auch selbst von anderen Rechnern aus nicht ansprechen. Quasi als wäre er nicht da.

Um es besser zu erklären hole ich etwas aus:

Ich habe einen gentoo-Server, der gleichzeitig dhcp-Server ist und auf dem auch der vmware-server läuft.

Jetzt wollte ich den vmware-server so ins Netzwerk einbinden, das die VM einfach als weiterer Rechner im Netzwerk erscheint. Sprich wenn der Server die IP 192.168.32.1 hat, dann sollte die VM in vmware-server die IP 192.168.32.5 bekommen und somit im gleichen Netz sein. 

Dafür nehme ich dann doch den bridge-Modus, richtig? Weil nat und host Modus IP's in anderen Bereichen vergeben.

Okay, im Prinzip scheint das mit dem bridge ja auch zu funktionieren. Z.Bsp. ergibt ein

```
 server ~ # /etc/init.d/vmware start

 * Caching service dependencies ...                                                                                     [ ok ]

 * Starting xinetd ...                                                                                                  [ ok ]

 * Starting VMware services:                                                                                            [ ok ]

 *   Virtual machine monitor                                                                                            [ ok ]

 *   Virtual ethernet                                                                                                   [ ok ]

 *   Bridged networking on /dev/vmnet0                                                                                  [ ok ]

 *   Starting VMware virtual machines...                                                                                [ ok ]
```

das alles in Ordnung ist, die Konfiguration von vmware per vmware-config.pl lief also ohne Probleme durch und auch das bridge-Netzwerk scheint richtig zu laufen.

Wenn ich jetzt aber eine VM im vm-server starte, dann sehe ich zwar in meiner "/var/log/messages" das die VM beim dhcpd nach einer IP fragt und der dhcpd der VM auch eine freie IP zuweist, aber der Netzwerk-Adapter in der VM nimmt diese nicht an! D.h. er sendet eine Anfrage an den dhcpd und ignoriert die Antwort. Nach kurzer Zeit stellt er dann die "Standart"-IP ein, irgendwas mit 169.....

Wenn ich der VM jetzt per Hand die IP-Daten eingebe, also 192.168.32.5 als IP, ...32.1 als Gateway, etc.... dann startet die VM zwar ganz normal, aber erscheint nicht im Netzwerk. Es ist mir nicht möglich von der VM aus einen ping auf 192.168.32.1 abzusetzen, und genauso wenig ist es möglich vom server auf die VM (192.168.32.5) zu pingen.

ICh verstehe dieses Verhalten irgendwie nicht, hat vielleicht jemand eine Idee warum das im Bridge-Modus bei mir nicht klappt?

----------

## Anarcho

Wie schaut es mit iptables Regeln aus? Ist das richtige Interface als Bridged Network angegeben? Welchen DHCP Server verwendest du?

----------

## Gucky_der_Mausbiber

Hmm, also dhcp habe ich 

```
server ~ # emerge -vp dhcp

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] net-misc/dhcp-3.1.1  USE="-doc -minimal (-selinux) -static" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

```

 installiert, würde sagen das ist der "standart" dhcp, oder?

Und iptables lasse ich mir immer von http://harry.homelinux.org/ erstellen, sieht dann so aus 

```
#!/bin/bash

# ---------------------------------------------------------------------

# Linux-iptables-Firewallskript, Copyright (c) 2009 under the GPL

# Autogenerated by iptables Generator v1.22 (c) 2002-2009 by Harald Bertramï¿½

# Please visit http://harry.homelinux.org for new versions of

# the iptables Generator (c).

#

# This Script was generated by request from:

# boehm@kraus-automaten.de on: 2009-1-19 0:22.2 MET.

#

# If you have questions about the iptables Generator or about

# your Firewall-Skript feel free to take a look at out website or

# send me an E-Mail to webmaster@harry.homelinux.org.

#

# My special thanks are going to Lutz Heinrich (trinitywork at hotmail dot com)

# who made lots of Beta-Testing and gave me lots of well qualified

# Feedback that made me able to improve the iptables Generator.

# --------------------------------------------------------------------

#

### BEGIN INIT INFO

# Provides: IP-Paketfilter

# Required-Start: $network $local_fs

# Required-Stop: $local_fs

# Default-Start: 3 5

# Default-Stop: 0 1 2 4 6

# Short-Description: Harry's IP-Paketfilter

# Description: Harry's IP-Paketfilter provides reasonable

#      IP-Security for Home-Computers and small networks

### END INIT INFO

#

case "$1" in

  start)

    echo "Starte IP-Paketfilter"

    # iptables-Modul

    # modprobe ip_tables

    # Connection-Tracking-Module

    # modprobe ip_conntrack

    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar

    # modprobe ip_conntrack_irc

    # modprobe ip_conntrack_ftp

    # Tabelle flushen

    iptables -F

    iptables -t nat -F

    iptables -t mangle -F

    iptables -X

    iptables -t nat -X

    iptables -t mangle -X

    # Default-Policies setzen

    iptables -P INPUT DROP

    iptables -P OUTPUT DROP

    iptables -P FORWARD DROP

    # MY_REJECT-Chain

    iptables -N MY_REJECT

    # MY_REJECT fuellen

    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset

    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable

    iptables -A MY_REJECT -p icmp -j DROP

    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain

    iptables -N MY_DROP

    iptables -A MY_DROP -j DROP

    # Korrupte Pakete zurueckweisen

    iptables -A INPUT -m state --state INVALID -j DROP

    iptables -A OUTPUT -m state --state INVALID -j DROP

    iptables -A FORWARD -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen

    # Keine Flags gesetzt

    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt

    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    # SYN und RST gleichzeitig gesetzt

    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    # FIN und RST gleichzeitig gesetzt

    iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    # FIN ohne ACK

    iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    # PSH ohne ACK

    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    # URG ohne ACK

    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    # Loopback-Netzwerk-Kommunikation zulassen

    iptables -A INPUT -i lo -j ACCEPT

    iptables -A OUTPUT -o lo -j ACCEPT

    # Maximum Segment Size (MSS) fï¿½r das Forwarding an PMTU anpassen

    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    # Connection-Tracking aktivieren

    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i ! eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # SSH

    iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    # vmware

    iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 902  -j ACCEPT

    # ICMP Echo-Request (ping) zulassen und beantworten

    iptables -A INPUT -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT

    # LAN-Zugriff auf eth0

    iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

    # Default-Policies mit REJECT

    iptables -A INPUT -j MY_REJECT

    iptables -A OUTPUT -j MY_REJECT

    iptables -A FORWARD -j MY_REJECT

    # Forwarding/Routing

    echo "Aktiviere IP-Routing"

    echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

    # Masquerading

    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

    # SYN-Cookies

    # echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

    # Stop Source-Routing

    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

    # Stop Redirecting

    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

    # Reverse-Path-Filter

    for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

    # Log Martians

    for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

    # BOOTP-Relaying ausschalten

    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

    # Proxy-ARP ausschalten

    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

    # Ungï¿½ltige ICMP-Antworten ignorieren

    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

    # ICMP Echo-Broadcasts ignorieren

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

    # Max. 500/Sekunde (5/Jiffie) senden

    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing fï¿½r IP-De/-Fragmentierung

    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh

    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh

    echo 30 > /proc/sys/net/ipv4/ipfrag_time

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen

    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN

    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen

    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)

    echo "Stoppe IP-Paketfilter"

    # Tabelle flushen

    iptables -F

    iptables -t nat -F

    iptables -t mangle -F

    iptables -X

    iptables -t nat -X

    iptables -t mangle -X

    echo "Deaktiviere IP-Routing"

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

    # Default-Policies setzen

    iptables -P INPUT ACCEPT

    iptables -P OUTPUT ACCEPT

    iptables -P FORWARD ACCEPT

    ;;

  status)

    echo "Tabelle filter"

    iptables -L -vn

    echo "Tabelle nat"

    iptables -t nat -L -vn

    echo "Tabelle mangle"

    iptables -t mangle -L -vn

    ;;

  *)

    echo "Fehlerhafter Aufruf"

    echo "Syntax: $0 {start|stop|status}"

    exit 1

    ;;

esac

```

Glaubst du wirklich das da der Fehler liegt?

----------

## Gucky_der_Mausbiber

hmm, habe jetzt nochmal gegoogelt und auch das ein oder andere ausprobiert, aber kein Erfolg, die VM bekommt keine Verbindung zum Netzwerk ....

Habe auch mal in der Log-Datei der Win-Xp-VM nachgeschaut, dort findet sich nur ein "Hinweis" zum Thema dhcp, und zwar das er keine Netzwerkadresse bekommen würde.

Gleichzeitig sehe ich im server log wie der dhcpd der vm an die richtige (!) mac-adresse 5-6 x eine gültige IP sendet ....

Ich komme alleine einfach nicht weiter ....

----------

## AmonAmarth

versuch es doch mal mit dem NAT modus, das funktioniert hier eigentlich immer. vorallem lässt sich so das virtuelle netzwerk besser abgrenzen mit passenden iptables regeln.

----------

## Gucky_der_Mausbiber

Ja NAT geht, aber das will ich ja nicht.

Irgendwie muss ja Bridge auch gehen, irgendwo fehlt mir bestimmt nur eine Zeile oder so ...

Muss ich für Bridge vielleicht was in der /etc/conf.d/net ändern?

----------

## Anarcho

Hast du es denn mal mit deaktivierter Firewall probiert?

Und gib mal lieber die Ausgabe von

iptables -L -v

Und dann würde ich nochmal versuchen dnsmasq statt dhcp zu verwenden.

----------

## Gucky_der_Mausbiber

Fehler gefunden!!!

Also das Problem mit dem bridge-netzwerk ist folgendes:

Wird die XP-VM als erster Rechner im Netzwerk hochgefahren, so funktioniert das bridge-Netzwerk nicht.

Hängt aber zuerst ein "echter" Windows Client an eth0 und hat sich dort bereits über dhcp seine Daten abgeholt, und die XP-VM wird danach hochgefahren, dann funktioniert das bridge-Netzwerk und alles ist wie gewünscht.

Hat jemand ne Idee wie das sein kann?

Ich meine ist nicht sooo das Problem, ich muss halt den vmware-server dann immer manuell per hand starten und warten bis wenigstens ein client eingeloggt ist.

Für einen automatischen Neustart allerdings ist das ganze nix.

----------

