Ubuntu VirtualBox 客户机在桥接模式下无法获取 ipv4

Ubuntu VirtualBox 客户机在桥接模式下无法获取 ipv4

我在 Linux Mint 18 Cinnamon 64 位主机上安装了全新的 Virtual Box Ubuntu Server 16.04 32 位客户机。我希望客户机系统在本地网络中显示为物理机。因此,我需要为客户机使用桥接网络模式---仅主机和/或 NAT 不行。主机系统通过以太网电缆连接,并在虚拟机上安装客户附加组件。

奇怪的是,在安装过程中,客户系统完全可以下载附加软件包。但是,一旦登录,我既无法 ping 本地网络中的计算机,也无法 ping google.com 等外部服务器。

对于google.com,它显示“ping:主机未知”,对于本地路由器(192.168.178.1),它显示“连接:网络不可达”。

经过仔细检查,我发现虚拟机没有从路由器的 DHCP 服务器收到 IPv4 地址。 然而, 我的路由器显示已分配地址(第四篇)。

我尝试设置静态 IPv4。然后,相应的地址显示在 上ipconfig。但客户机仍然无法 ping 任何内容。另外,实际上我希望虚拟机无论如何都能从本地 DHCP 服务器接收其 IPv4 地址。

在 中/etc/network/interfaces,网络接口的ipconfig初始化如下: allow-hotplug enp0s17 iface enp0s17 inet dhcp

我尝试过的事情:

  • 将客户机设置为静态 IPv4
  • 禁用 IPv6
  • 删除/etc/udev/rules.d/70-persistent-net.rules
  • sudo ip link set enp0s17 up
  • dhclient enp0s17

这些都不起作用。有人能帮我解决这个问题吗?

答案1

对我来说,第一个答案似乎有点过于复杂。以下应该有效。打开客户机并执行以下操作:

您可能希望从启动时直接禁用它。为此,请打开:

/etc/default/grub

使用您喜欢的具有 root 访问权限的文本编辑器:

IE

gksu gedit /etc/default/grub

或者如果您只喜欢使用命令行:

sudo nano /etc/default/grub

在此文件中,找到以下行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

并将其更改为:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

保存文件并通过运行以下命令更新 GRUB:

sudo update-grub

如果您尝试过 sysctl 方法:

请参阅以下问题/得票最高的答案,因为您可以将 ip6 值设置为 0,如果您没有在启动时初始化 sysctl,它无论如何都会忽略它(在将所有内容设置为 1 后读取默认的 ip6 值以禁用如果系统报告 0,您需要运行 sysctl):

如何在 Ubuntu 14.04 中禁用 IPv6?

我喜欢我的方法,因为它在启动时禁用了 ip6,所以在启动过程中没有任何东西会尝试使用 ip6 路由(有些甚至会在启动时启用并在操作系统本身内禁用时出现错误)。它也只是对一个文件中的一行进行小幅调整,使事情变得非常简单,并且您不必像使用低于 100 MHz 全双工或 1000 MHz 全双工时那样牺牲线路速度(如果您有 Gig,则是后者,如果是 100 Meg 路由器或交换机,则是前者)。

答案2

在 VirtualBox VM 的设置中,转到网络,然后下拉右侧窗格中的高级设置并检查“适配器类型”。默认值似乎是“Intel PRO/1000 MT Desktop (82540EM)”。对于该适配器类型,我遇到了完全相同的问题,因此我尝试将适配器类型更改为“Intel PRO/1000 MT Server (82545EM)”,然后更新 /etc/network/interfaces 文件(如果您在安装 Ubuntu Server 之前更改适配器类型,它应该会使用正确的信息创建接口文件),现在它运行良好。我在 Windows 10 主机上使用的 VBox 版本是 5.1.28 r117968(Qt5.6.2),并使用桥接网络。

答案3

问题不同,但是解决办法是一样的。

从 10Mbps、半双工开始,然后逐渐增加到 10Mbps FD、100Mbps HD……直到出现问题。然后降低一个档次,并保持该速度。

首先,安装 ethtool(如果已经安装,您将收到一条警告,提示最新版本已安装)

sudo apt-get install ethtool

现在:

  1. 输入以下命令(并逐一测试)

    sudo ethtool --change eth0 speed xxx duplex yyy autoneg off

    其中xxx = 10, 1001000yyy = halffull

    因此从10 half、、、10 full开始100 half...

  2. 执行ifconfig检查您是否获得了 IP 地址。

  3. 回到 1 直到它停止工作,并且使用以前仍然有效的值到:

  4. 为了使改变永久生效,执行以下命令:

    sudo nano /etc/network/interfaces

    并在以下部分输入pre-up

    pre-up /usr/sbin/ethtool --change eth0 speed xxx duplex yyy autoneg off

请注意 OP 发布的完整条目:

auto eth0
iface eth0 inet dhcp
    pre-up ifconfig $IFACE up
    pre-up ethtool -s $IFACE speed 100 duplex full autoneg off

答案4

我遇到过两次这个问题。第一次是当我的互联网调制解调器/路由器没有互联网连接时(LOS LED 闪烁)。恢复连接后,问题就解决了。我不知道这有什么关系,因为 DHCP 服务器内置在调制解调器中,与互联网没有关系……但确实存在。

其次,当 VirtualBox 要求更新而我却没有更新时,发生了这种情况。因此,更新后,我开始在桥接模式下获取地址

相关内容