我的问题是基本上我无法从 Ubuntu VM 访问互联网。我正在尝试弄清楚如何做到这一点,并非常希望得到帮助。我意识到当您搜索此内容时,Google 会显示相当多的结果,而我找到的解决方案似乎都不起作用。我对网络也不是特别精通,所以如果我误用了任何术语,请原谅我(并请纠正我!)。
我的问题具体如下:我在 Windows 8.1 主机的 Virtualbox 中有一个 Ubuntu 14.04 服务器客户机。我在 VBox 中设置了两个网络适配器,一个用于从虚拟机获取互联网,另一个用于从主机通过 SSH 进入虚拟机。我可以从主机成功通过 SSH 进入客户机,但是不能从虚拟机本身访问互联网。
我为该客户机启用了两个网络适配器,如下所示:
- 适配器 1:NAT,电缆连接;无端口转发规则
- 适配器 2:主机专用适配器,VirtualBox 主机专用以太网适配器,已连接电缆
在虚拟机中,我进行了/etc/network/interfaces
如下配置:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.56.11
gateway 192.168.56.1
ifconfig
在虚拟机中运行可得到:
eth0 Link encap:Ethernet HWaddr 08:00:27:f8:41:f4
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fef8:41f4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2568 (2.5 KB) TX bytes:9768 (9.7 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:bd:71:e5
inet addr:192.168.56.11 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:febd:71e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:992 errors:0 dropped:0 overruns:0 frame:0
TX packets:687 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:111574 (111.5 KB) TX bytes:99004 (99.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:28 errors:0 dropped:0 overruns:0 frame:0
并netstat -rn
给出:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.56.1 0.0.0.0 UG 0 0 0 eth1
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
正如我之前提到的,我可以轻松地通过 SSH 进入虚拟机(我应该注意到 VBox 仅主机网络可以处理192.168.56.0/24
)。我在使用此功能时没有遇到任何问题。
我是遇到问题eth0
。此 NIC(这是正确的术语吗?)似乎工作正常 - 毕竟它正在连接:
user@machine:~$ sudo ifdown eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/08:00:27:f8:41:f4
Sending on LPF/eth0/08:00:27:f8:41:f4
Sending on Socket/fallback
DHCPRELEASE on eth0 to 10.0.2.2 port 67 (xid=0x2ecf8ea)
user@machine:~$ sudo ifup eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/08:00:27:f8:41:f4
Sending on LPF/eth0/08:00:27:f8:41:f4
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x3c7a1e6f)
DHCPREQUEST of 10.0.2.15 on eth0 to 255.255.255.255 port 67 (xid=0x3c7a1e6f)
DHCPOFFER of 10.0.2.15 from 10.0.2.2
DHCPACK of 10.0.2.15 from 10.0.2.2
bound to 10.0.2.15 -- renewal in 41246 seconds.
然而,这确实不是似乎是我的主机正在使用的互联网连接。(我应该指出,我是一名大学生,虽然我没有确认这一点,但我思考我宿舍的两个无线网络跨越10.66.0.0/16和10.67.0.0/16)。相关片段ipconfig
如下:
Wireless LAN adapter Local Area Connection* 12:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . : <$university>.edu
Link-local IPv6 Address . . . . . : fe80::6951:a0dd:9416:1174%4
IPv4 Address. . . . . . . . . . . : 10.66.31.253
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 10.66.0.1
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . : <$university>.edu
Ethernet adapter VirtualBox Host-Only Network:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::b53e:38c2:fa96:efb8%17
IPv4 Address. . . . . . . . . . . : 192.168.56.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
我所拥有的/etc/udev/rules.d
只是一个README
;那里没有70-persistent-net.rules
文件。
我已经验证 Oracle VM Virtualbox 可以通过 Windows 防火墙进行访问。
我有偶尔从虚拟机连接到互联网(即ping 8.8.8.8
不丢失数据包),我完全不知道如何操作,但重新启动虚拟机会断开连接。在我获得连接的几次中,有一次是在反转网络适配器后发生的(适配器 1 从主机专用转换为 NAT,适配器 2 从 NAT 转换为主机专用并eth0
翻转eth1
)/etc/network/interfaces
。
除此之外,我完全不知所措。问题肯定出在我这边,还是可能是客户机和我所在大学的网络之间存在问题?我只知道 eth0 正在让客户机启动10.0.2.0/24
,而根据主机告诉我的信息,我希望客户机启动10.66.0.0/24
或10.67.0.0/24
。
答案1
快问快答...为什么不直接在桥接适配器模式下使用 1 个 NIC?您的虚拟机将从 LAN 获取一个 IP,然后您就可以立即上网,无需任何花哨的操作。
答案2
设法解决了我的问题。最终的解决方案是删除gateway
中的行/etc/network/interfaces
。虽然我不太明白为什么,但我确实发现这:
只有面向 Internet 的机器才应有“网关”声明。另一个接口将简单地广播发往其他子网的数据包,该网络上的机器将读取这些数据包。
网关声明告诉操作系统将没有本地目的地的数据包发送到哪里,因此它必须是唯一的。
我应该注意到,我意识到这是以下问题之后的问题(请注意,当我说禁用/启用适配器时,我指的是在关闭 VM 的情况下在 VBox 中执行此操作;我多次重新启动它以确保我确实修复了问题而不仅仅是症状):
- 禁用适配器 #2,启用适配器 #1 以桥接至主机的以太网 NIC,发现这实际上将客户机连接到了互联网。这是我得到的第一个提示,表明我的问题与不止一个有关,而是二适配器。我应该指出,我还将适配器 #1 桥接到了主机的无线网卡,该网卡失败了,大概是因为我所在大学的 WiFi 的数据包丢失率高达 86%。
- 禁用适配器 #2,将适配器 #1 切换到 NAT,在仍在网络上时验证连接性
10.0.2.0/24
。我仍然不太理解这部分,如果有人能解释为什么它以这种方式工作,那就太好了。无论如何,这向我证明了问题不在于 NAT,而在于启用了两个适配器。 - 启用了两个适配器,#1 为 NAT,#2 为仅主机。查看了双 NIC 配置,发现我的网关设置有问题(我一直认为我需要配置两个网关)。
- 我删除了
gateway
配置行eth1
并尝试了sudo /etc/init.d/networking restart
以及ifdown
和的组合ifup
(此评论注意到注释掉这一行不起作用)。我应该注意到这确实不是为我工作。 - 我决定收集有关不同工作设置的内核路由信息,当我重新启动双网卡配置时,我粗略地发现
ping
我已从客户机连接到互联网。我怀疑造成这种情况的原因具体在于启动期间运行的网络配置过程之间的差异以及ifconfig
、ifdown
、ifup
和/etc/init.d/networking
,但无论如何,我终于按照我想要的方式在客户机上获得了有效的互联网连接。
答案3
将其复制到/etc/network/interface
:
auto lo
iface lo inet loopback
auto lo eth0
将网络设置更改为 NAT 适配器并重新启动 m/c。