Is VMWare causing my Linux host to lose network connectivity?

6,556

Solution 1

The answer to my question was "yes" - VMWare was hosing my host network connectivity because it was on the same 192.168.x.x network. That was leading to incorrect routing. I uninstalled VMWare, telling it to remove all existing configurations (after backing up my guest images) and reinstalled. After reinstallation my host network continued to function and VMWare worked correctly (ie., I could boot guests and access the internet, etc.). So all is good now.

Here is my current ifconfig output:

eth0      Link encap:Ethernet  HWaddr 00:90:f5:d8:8e:6a 
          inet addr:192.168.254.27  Bcast:192.168.254.255  Mask:255.255.255.0
          inet6 addr: fe80::290:f5ff:fed8:8e6a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:141969 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:204301662 (204.3 MB)  TX bytes:6255750 (6.2 MB)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1065 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1065 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:154990 (154.9 KB)  TX bytes:154990 (154.9 KB)

vmnet1    Link encap:Ethernet  HWaddr 00:50:56:c0:00:01 
          inet addr:172.16.145.1  Bcast:172.16.145.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vmnet8    Link encap:Ethernet  HWaddr 00:50:56:c0:00:08 
          inet addr:192.168.17.1  Bcast:192.168.17.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Note that vmnet1 is on a different network (172.16) whereas vmnet8 is on the 192.168 network - the opposite of what I had when I lost host network connectivity.

[Update]: see @slm's Edit #2 for additional details that explains more of this.

Solution 2

It seems odd that your ethernet device is eth1 and not eth0. Do you recall if your ethernet device was eth0 previously? I would suspect that when you upgraded something happened with your udev rules.

Assuming you have only a single ethernet NIC in your system, check this file and make sure that there is only a single entry in it:

# /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

You should only have a single SUBSYSTEM line at the end of this file. If you have more you'll need to delete any extra lines and make sure the one that remains is correct in terms of the MAC address it's specifying.

EDIT #1

Based on the OP's feedback on his file: /etc/udev/rules.d/70-persistent-net.rules, I'd make the following changes:

$ cat /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.2 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:90:f5:d8:8e:6a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

EDIT #2

Did you try re-installing it yet? Vmnet1 is suppose to be a local network just for the VMs and the host they're running on. I suspect what's going on is that the IP address that is getting used by your vmnet1 is also used by another system on your LAN causing a conflict. Take a look at this tutorial, titled: VMWare Interfaces Tutorial.

Specifically check out the section on Host only Network connection. This diagram from that tutorial shows a similar setup to what you're reporting.

                      ss of network

So the problem would seem to be that your original eth1 device's IP address (192.168.254.27) and the IP address/subnet being used by vmnet (192.168.254.1) were conflicting because the routing local to your host was probably getting setup with conflicting routing.

There were probably entries that were routing traffic destined for a particular IP address to multiple locations, which isn't allowed.

Share:
6,556

Related videos on Youtube

quux00
Author by

quux00

Software Engineer interested in Go (golang), Java, Clojure, Groovy, Linux, Java, Emacs, JavaScript, Python and Rust. Did I miss any? Oh yes: life's too short for PHP. Current foci: Java Performance and Mechanical Sympathy (http://mechanical-sympathy.blogspot.com/) Mastering Go (golang) Writing OrientDB driver in Go

Updated on September 18, 2022

Comments

  • quux00
    quux00 almost 2 years

    I recently upgraded to Xubuntu 13.04 from 12.10, which required uninstalling and reinstalling VMWare Player for Linux. Soon after (not exactly sure the timing) I lost network connectivity on my host Xubuntu machine.

    Here is my ifconfig:

    $ ifconfig
    eth1      Link encap:Ethernet  HWaddr 00:90:f5:d8:8e:6a  
              inet addr:192.168.254.27  Bcast:192.168.254.255  Mask:255.255.255.0
              inet6 addr: fe80::290:f5ff:fed8:8e6a/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:914 errors:0 dropped:0 overruns:0 frame:0
              TX packets:343 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:61498 (61.4 KB)  TX bytes:32037 (32.0 KB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:336 errors:0 dropped:0 overruns:0 frame:0
              TX packets:336 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:54571 (54.5 KB)  TX bytes:54571 (54.5 KB)
    
    vmnet1    Link encap:Ethernet  HWaddr 00:50:56:c0:00:01  
              inet addr:192.168.254.1  Bcast:192.168.254.255  Mask:255.255.255.0
              inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    vmnet8    Link encap:Ethernet  HWaddr 00:50:56:c0:00:08  
              inet addr:172.16.145.1  Bcast:172.16.145.255  Mask:255.255.255.0
              inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

    I have both Virtualbox and VMWare player installed, so I'm guessing that's why I have two vmnet entries.

    On my host I can sometimes (seems to come and go) ping DNS (8.8.8.8) but never anything else (such as www.google.com). I've tried a number of things to no avail.

    Is it a problem that vmnet1 has IP addr 192.168.254.1, which is on the same network as eth1 (192.168.254.27)? Is that interfering with eth1 and blocking network connectivity? Should vmnet1 be on a different internal network, like 10.x.x.x?

    If so, how do I change it?


    [Update] Here is more information based on what @slm asked:

    I can't say for sure, but it seems to me that it used to eth0. Not sure when it changed.

    Here are a few more things I checked:

    $ ls -d /sys/class/net/eth* 
    /sys/class/net/eth1
    

    I don't much about modprobe, but someone suggested doing this:

    $ modprobe -c | grep 'eth[0-9]'
    blacklist eth1394
    

    Not sure what that means.

    Finally, on your question about /etc/udev/rules.d/70-persistent-net.rules. I actually have four entries, not sure why as it seems I have only one NIC (based on running sudo lshw -class network and above info)

    $ cat /etc/udev/rules.d/70-persistent-net.rules 
    
    # PCI device 0x14e4:/sys/devices/pci0000:00/0000:00:1c.0/0000:08:00.0 (tg3)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:38:37:96:26", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    
    # PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.1/0000:10:00.0 (iwl3945)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:77:92:2d:9c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
    
    # PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.2 (r8169)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:90:f5:d8:8e:6a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
    
    # PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.2/0000:02:00.0 (iwlwifi)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="58:91:cf:52:e2:11", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
    
    • slm
      slm about 11 years
      vmnet1 & vmnet8 belong to vmware. 1 is for the host only network, 8 is for the NAT network.
    • Raza
      Raza about 11 years
      try to reconfigure network interface. you can do this by using system-config-network-tui utility
    • quux00
      quux00 about 11 years
      @Salton I don't seem to have this command installed (only system-config-printer). Xubuntu usually suggests a package for uninstalled things, but not in this case. This note says it doesn't exist for Ubuntu systems: serverfault.com/questions/336231/…
    • slm
      slm about 11 years
      The issue is that eth0 is getting setup incorrectly. eth1 shouldn't be there. See my edit to my answer and try the suggestions.
  • quux00
    quux00 about 11 years
    See my updated info in the question section. I have entries for both eth0 and eth1 (and wlan0 and wlan1). Is it a problem to have eth1 mapped to my NIC? If so, how do I map eth0 to it instead?
  • slm
    slm about 11 years
    See my edits, I believe you can make those changes and restart your network. You should see that eth0 should come up and get an IP address.
  • quux00
    quux00 about 11 years
    I made the change and it did change my system to use eth0, rather than eth1, so that's good and thanks for that. However, it didn't solve the problem. Only after I uninstalled VMWare Player was my host network connectivity restored, so it was that conflict as I originally suspected.
  • slm
    slm about 11 years
    @midpeter444 - glad you resolved your issue. I've updated my answer with more details. If you want to read up more on VMWare networking I've included a link to a good tutorial on it.