我有一台 Mac OS X 主机和一堆客户机,包括 Ubuntu 和 Arch Linux。我试图在 eth1 上设置一个仅主机网络,以便让我通过 ssh 进入系统。但现在 eth0 也无法正常工作。Ubuntu 无法再连接到远程主机或浏览互联网。它告诉我网络无法访问。这里出了什么问题?我在下面提供了一些诊断信息。
$ifconfig
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:16436 Metric:1
RX packets:10968 errors:0 dropped:0 overruns:0 frame:0
TX packets:10968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:897264 (897.2 KB) TX bytes:897264 (897.2 KB)
其他诊断命令和输出:
$sudo lspci -n
00:00.0 0600: 8086:1237 (rev 02)
00:01.0 0601: 8086:7000
00:01.1 0101: 8086:7111 (rev 01)
00:02.0 0300: 80ee:beef
00:03.0 0200: 8086:100e (rev 02)
00:04.0 0880: 80ee:cafe
00:05.0 0401: 8086:2415 (rev 01)
00:06.0 0C03: 106B:003F
00:07.0 0680: 8086:7113 (REV 08)
00:0D.0 0106: 8086:2829 (REV 02)
$sudo lshw -c network
*-network DISABLED
description: Ethernet interface
product: 82540EM Gigabit Ethernet Controller
vendor: Intel Corporation
physical id: 3
bus info: pci@0000:00:03.0
logical name: eth0
version: 02
serial: 08:00:27:7d:22:df
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: pm pcix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full firmware=N/A latency=64 link=no mingnt=255 multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:19 memory:f0000000-f001ffff ioport:d010(size=8)
$lsmod
Module Size Used by
nls_utf8 12557 1
isofs 40257 1
vboxsf 43743 2
vesafb 13844 1
snd_intel8x0 38570 2
snd_ac97_codec 134869 1 snd_intel8x0
ac97_bus 12730 1 snd_ac97_codec
snd_pcm 97275 2 snd_intel8x0,snd_ac97_codec
snd_seq_midi 13324 0
snd_rawmidi 30748 1 snd_seq_midi
snd_seq_midi_event 14899 1 snd_seq_midi
rfcomm 47604 0
snd_seq 61929 2 snd_seq_midi,snd_seq_midi_event
bnep 18281 2
bluetooth 180113 10 rfcomm,bnep
ppdev 17113 0
psmouse 97519 0
snd_timer 29990 2 snd_pcm,snd_seq
joydev 17693 0
snd_seq_device 14540 3 snd_seq_midi,snd_rawmidi,snd_seq
vboxvideo 12622 1
serio_raw 13211 0
snd 79041 11 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore 15091 1 snd
vboxguest 235498 7 vboxsf
parport_pc 32866 0
drm 241971 2 vboxvideo
i2c_piix4 13301 0
snd_page_alloc 18529 2 snd_intel8x0,snd_pcm
mac_hid 13253 0
lp 17799 0
parport 46562 3 ppdev,parport_pc,lp
usbhid 47238 0
hid 99636 1 usbhid
e1000 108589 0
答案1
这可能只是 VirtualBox 中的一个错误,但我确实花了很多时间才弄清楚到底出了什么问题。同一个网络接口eth0
在两个不同的客户操作系统上无法工作就是线索。让接口重新工作的最简单方法是执行以下步骤:
- 删除网络服务启动时命名网络接口的持久规则(
/etc/udev/rules.d/*net-rules
适用于 Ubuntu) - 恢复网络接口配置文件的默认设置(
/etc/network/interfaces
适用于 Ubuntu) - 重新启动网络服务(
/etc/init.d/networking restart
)
这文章为我指明了正确的方向。
这里发生的情况是,当您克隆虚拟机时,VirtualBox 会将新的 MAC 地址应用于您的网络接口,但它们不会更新 Linux 配置文件来镜像这些更改,因此内核首先无法找到或启动与其配置匹配的接口(使用旧 MAC 地址),然后找到一个没有配置信息的新接口(新 MAC 地址)。结果是只有您的网络服务才能启动环回网络接口,而 eth0 已死。