![Ubuntu VirtualBox 客户机在桥接模式下无法获取 ipv4](https://linux22.com/image/1512926/Ubuntu%20VirtualBox%20%E5%AE%A2%E6%88%B7%E6%9C%BA%E5%9C%A8%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F%E4%B8%8B%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96%20ipv4.png)
我在 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):
我喜欢我的方法,因为它在启动时禁用了 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
现在:
输入以下命令(并逐一测试)
sudo ethtool --change eth0 speed xxx duplex yyy autoneg off
其中
xxx = 10, 100
或1000
且yyy = half
或full
。因此从
10 half
、、、10 full
开始100 half
...执行
ifconfig
检查您是否获得了 IP 地址。回到 1 直到它停止工作,并且使用以前仍然有效的值到:
为了使改变永久生效,执行以下命令:
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 要求更新而我却没有更新时,发生了这种情况。因此,更新后,我开始在桥接模式下获取地址