尝试在 Virtualbox 上设置仅主机网络后,Ubuntu 客户机上的网络无法访问

尝试在 Virtualbox 上设置仅主机网络后,Ubuntu 客户机上的网络无法访问

我有一台 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在两个不同的客户操作系统上无法工作就是线索。让接口重新工作的最简单方法是执行以下步骤:

  1. 删除网络服务启动时命名网络接口的持久规则(/etc/udev/rules.d/*net-rules适用于 Ubuntu)
  2. 恢复网络接口配置文件的默认设置(/etc/network/interfaces适用于 Ubuntu)
  3. 重新启动网络服务(/etc/init.d/networking restart

文章为我指明了正确的方向。

这里发生的情况是,当您克隆虚拟机时,VirtualBox 会将新的 MAC 地址应用于您的网络接口,但它们不会更新 Linux 配置文件来镜像这些更改,因此内核首先无法找到或启动与其配置匹配的接口(使用旧 MAC 地址),然后找到一个没有配置信息的新接口(新 MAC 地址)。结果是只有您的网络服务才能启动环回网络接口,而 eth0 已死。

相关内容