我最近从 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 接口教程。
具体请查看以下部分仅主机网络连接。该教程中的此图显示了与您所报告的类似的设置。
因此,问题似乎是您的原始 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 了解更多详细信息,以解释更多内容。