VMWare 是否导致我的 Linux 主机失去网络连接?

VMWare 是否导致我的 Linux 主机失去网络连接?

我最近从 12.10 升级到 Xubuntu 13.04,这需要卸载并重新安装 VMWare Player for Linux。不久之后(不太确定时间)我在 Xubuntu 主机上失去了网络连接。

这是我的 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)

我安装了 Virtualbox 和 VMWare 播放器,所以我猜这就是我有两个 vmnet 条目的原因。

在我的主机上,我有时可以(似乎来来去去)ping DNS(8.8.8.8),但不能ping其他任何东西(例如www.google.com)。我尝试了很多方法都无济于事。

vmnet1 的 IP 地址为 192.168.254.1,与 eth1 (192.168.254.27) 位于同一网络,是否有问题?这是否会干扰 eth1 并阻止网络连接? vmnet1 是否应该位于不同的内部网络(例如 10.xxx)上?

如果是这样,我该如何改变它?


[更新] 以下是基于 @slm 询问的更多信息:

我不能肯定地说,但在我看来它曾经是 eth0。不确定它什么时候改变的。

以下是我检查的其他一些内容:

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

我不太了解 modprobe,但有人建议这样做:

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

不确定那是什么意思。

最后,关于您关于 /etc/udev/rules.d/70-persistent-net.rules 的问题。我实际上有四个条目,不知道为什么,因为我似乎只有一个网卡(基于运行sudo lshw -class network和上述信息)

$ 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"

答案1

您的以太网设备是 eth1 而不是 eth0,这似乎很奇怪。您还记得您的以太网设备以前是 eth0 吗?我怀疑当你升级时你的 udev 规则发生了一些事情。

假设您的系统中只有一个以太网网卡,请检查此文件并确保其中只有一个条目:

# /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"

SUBSYSTEM该文件的末尾应该只有一行。如果您有更多行,则需要删除任何多余的行,并确保保留的行在其指定的 MAC 地址方面是正确的。

编辑#1

根据OP对其文件的反馈:/etc/udev/rules.d/70-persistent-net.rules,我将进行以下更改:

$ 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"

编辑#2

您是否尝试重新安装它? Vmnet1 被认为是仅用于虚拟机及其运行所在主机的本地网络。我怀疑发生的情况是您的 vmnet1 使用的 IP 地址也被 LAN 上的另一个系统使用,从而导致冲突。看看这个教程,标题为:VMWare 接口教程

具体请查看以下部分仅主机网络连接。该教程中的此图显示了与您所报告的类似的设置。

                      网络SS

因此,问题似乎是您的原始 eth1 设备的 IP 地址 (192.168.254.27) 和 vmnet 使用的 IP 地址/子网 (192.168.254.1) 发生冲突,因为您主机的本地路由可能正在设置冲突的路由。

可能有一些条目将发往特定 IP 地址的流量路由到多个位置,这是不允许的。

答案2

我的问题的答案是“是” - VMWare 正在托管我的主机网络连接,因为它位于同一个 192.168.xx 网络上。这导致了错误的路由。我卸载了 VMWare,告诉它删除所有现有配置(备份来宾映像后)并重新安装。重新安装后,我的主机网络继续运行,并且 VMWare 工作正常(即,我可以启动客户机并访问互联网等)。所以现在一切都很好。

这是我当前的 ifconfig 输出:

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)

请注意,vmnet1 位于不同的网络 (172.16) 上,而 vmnet8 位于 192.168 网络上 - 与我失去主机网络连接时的情况相反。

[更新]:请参阅@slm 的编辑 #2 了解更多详细信息,以解释更多内容。

相关内容