我在桌面上打开了一个虚拟机,其中网络选项为 hostonly 网络。我为虚拟机分配了一个适当的静态 IP。我可以从我的桌面建立到虚拟机的 ssh 连接,也可以从虚拟机 ping 我的桌面。但是,我无法在虚拟机内访问外部网络。
命令ifconfig vboxnet0
在桌面上返回:
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:10.20.0.1 Bcast:10.20.0.255 Mask:255.255.255.0
inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6132 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:328130 (328.1 KB)
在虚拟机上,ifconfig eth0
命令返回:
eth0 Link encap:Ethernet HWaddr 08:00:27:a1:65:a1
inet addr:10.20.0.10 Bcast:10.20.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fea1:65a1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:161 errors:0 dropped:0 overruns:0 frame:0
TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15459 (15.4 KB) TX bytes:15973 (15.9 KB)
虚拟机的 IP 是静态的。vboxnet0
被指定为该虚拟机的虚拟网卡。我应该做哪些进一步的配置才能使用 vboxnet0 提供互联网连接?任何帮助都非常感谢。
我的桌面操作系统:ubuntu 12.04
虚拟机操作系统:ubuntu server 12.04
虚拟化工具:virtualbox 4.3.6 r91406
答案1
这是 HostOnly 的正常行为。只有您的主机才能访问您的虚拟机。如果您希望它能够访问互联网,请使用 NAT 或 Bridge 作为网络选项。
NAT 将使用您的主机作为互联网的中继(但仍在 10.20.0.x 范围内),而 Bridge 将使您的 VM 成为您网络的一部分,就像(可能)192.168.xx 范围内的任何其他计算机一样。
两种解决方案均可行,现在由您选择最适合您的解决方案。
答案2
啊,但这是可以做到的,因为我几周前也遇到过同样的问题。下面是我这样做的方法:
为客户操作系统提供一个主机专用适配器(默认适配器是 vboxnet0),并确保 vboxnet0 执行 dhcp。
安装 squid 代理(sudo apt-get install squid3
打开文件 /etc/squid3/squid.conf 并做以下更改:
A. 找到带有“http_access denied all”的行,并在行首放置 # 将其注释掉。B
. 将以下两行粘贴到文件中:
acl allcomputers src 192.168.56.0/255.255.255.0
http_access allow allcomputers
通过运行以下命令重新启动 squid 3 服务:sudo service squid3 restart
在客户操作系统中,确保网卡设置了 dhcp
打开 Internet Explorer 的 Internet 选项,转到连接选项卡,单击 Lan 设置...,选中代理服务器复选框并将地址设置为 192.168.56.1,端口设置为 3128。Internet
现在可以在客户机上运行,但客户机看不到本地网络。
答案3
摘自手册第 98 页:
由于虚拟机未连接到物理网络接口,因此它们无法与主机外部的世界通信。