VirtualBox仅限主机的适配器,具有静态IP和Apache


1

我在Lubuntu 15.10主机上安装了VirtualBox 5.0.14,并创建了一个使用Lubuntu 14.04.5 LTS作为客户操作系统的虚拟机。

我想在VirtualBox中设置一个仅限主机的网络适配器,以便我可以从主机系统上运行的Web浏览器访问在来宾操作系统内运行的Apache Web服务器。

到目前为止,我已经创建了一个仅限主机的适配器 vboxnet0 我可以从主机操作系统成功ping通。但是,我无法使用webbrowser或任何其他方式访问端口80。

我该怎么做才能找到问题的原因并正确配置?

VM网络设置

enter image description here

VirtualBox的 vboxnet0 设置

enter image description here

enter image description here

客人内部测试结果

启动VM并启动Apache后(使用 sudo service apache2 start 我可以访问测试页面 http://localhost/ 在客户操作系统中使用Firefox没有问题。

相应的Apache VirtualHost定义为 <VirtualHost *:80>/etc/apache2/sites-enabled/000-default.conf,所以我不明白为什么它不能从任何主机访问。

此外,sshd和MySQL服务器正在guest虚拟机上运行。我可以ssh到localhost,nmap显示所有相关的端口打开(22,80,3306)。

在主机上测试结果

在主机操作系统上 vboxnet0 如下所示并且可以ping通:

% ifconfig vboxnet0
vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.10.10  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:192 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:16176 (16.1 KB)

% ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.023 ms

但是,没有一个端口可以访问:

% nmap 192.168.10.10 -p 22,80,3306

Starting Nmap 6.47 ( http://nmap.org ) at 2016-08-20 21:29 CEST
Nmap scan report for 192.168.10.10
Host is up (0.000027s latency).
PORT     STATE  SERVICE
22/tcp   closed ssh
80/tcp   closed http
3306/tcp closed mysql

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

试图匹配IP地址

根据@MarkoPolo的评论:

即使 192.168.10.10 可以从主机操作系统ping,我无法从来宾操作系统访问此IP地址。

实际上,来宾操作系统具有来自for中指定的DHCP范围的IP地址 vboxnet0

eth1      Link encap:Ethernet  HWaddr 08:00:27:0d:b4:6a  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe0d:b46a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1180 (1.1 KB)  TX bytes:1422 (1.4 KB)

IP地址 192.168.56.101 无法从主机操作系统访问,即不可ping,无法使用webbrowser访问。

我尝试更新的IP地址 eth1192.168.10.10 运用 ifconfig。然后,Apache可以访问 http://192.168.10.10 但是,来自客户操作系统的主机操作系统仍然无法访问(除了ping)。


1
从guest虚拟机中,您可以访问192.168.10.10上的Apache,而不是localhost吗?
Mark Riddell

@MarkoPolo我更新了这个问题
tmh

Answers:


3

更短的答案。

根据我所知的默认VirtualBox网络设置,您使用的主机唯一连接 192.168.10.10 是在错误的子网上,并且正在错误的区域进行调整以使此工作正常。

在主机OF上设置仅主机适配器时,IPv4地址应该是 192.168.56.1。然后 - 在此之后设置客户操作系统设置 eth1 接口使用类似的IP地址 192.168.56.10

更长的答案。

使用VirtualBox时,内部伪软件路由器设置为工作 192.168.56.x IP地址范围。 DHCP服务器范围 - 您不应设置静态IP地址的范围是 192.168.56.101192.168.56.254 要设置静态IP地址,您需要在它们之间设置IP地址 192.168.56.2192.168.56.100。所以我建议你的客户操作系统配置使用(Lubuntu 14.04.5 LTS)使用的IP地址如 192.168.56.10

但是不要设置它 192.168.56.10 设置时,“适配器”区域中的值。而是将您的适配器设置调整为如下;请参阅下面的Mac OS X屏幕截图以供参考:

  • IPv4地址: 192.168.56.1
  • IPv4网络掩码: 255.255.255.0
  • IPv6地址:[留空]
  • IPv6网络掩码长度: 0

Screenshot of the network settings for a host only interface in the Mac OS X version of VirtualBox.

然后在你的客户操作系统(Lubuntu 14.04.5 LTS)上,对我来说,你的看起来很奇怪 eth1 设置将是DHCP设置并具有地址 192.168.56.101。我在第二个适配器上使用Ubuntu 14.04.5与非常类似的主机连接进行Apache开发,我的设置分解如下:

  • eth0 IP地址为 10.0.2.15
  • eth1 IP地址为 192.168.56.10

我的设置 /etc/network/interfaces 如下面所述:

auto eth1
iface eth1 inet static
      address 192.168.56.10
      netmask 255.255.255.0

因此,请仔细检查仅主机连接上的IP地址,并仔细检查您的网络接口配置。


非常感谢您的回答。实际上,在我看到你的回答之前,我刚刚想出了自己问题的答案。 :)
tmh

@tmh谢谢!很高兴有所帮助。
JakeGould

0

使用VirtualBox进行仅主机网络的目的

在您的示例中,您尝试在VirtualBox中设置仅主机网络,该网络仅包含一台来宾计算机,当然还包括主机计算机。

但请记住这一点 仅限主机的网络 的设计使其可以容纳多台客户机。里面的所有客人机器 仅主机网络 可以互相沟通 主机 但不是 与外界:

Outside world <--> NIC <--> Host <--> vboxnet0 <--> virtual NIC <--> Guest OS
                   ---                --------      -----------
                                                   (virtual NIC <--> Guest OS #2)
                                                    ...
                                                   (virtual NIC <--> Guest OS #n)

区分主机和来宾IP地址

你的假设就是这样 192.168.10.10 将是客户操作系统的IP地址,因为它显示为 vboxnet0 在主机上。

这个假设是不正确的 - 事实上, 192.168.10.10 是的IP地址 主办 机!假设您的内部有多台客户机 仅限主机的网络 ,然后所有人都可以使用该IP地址访问主机操作系统。

vboxnet0 充当主机和客户之间的网关。您可以轻松验证:如果您打开主机上的任何端口(例如使用 nc ),您应该能够从客户操作系统访问该端口 192.168.10.10

客人的实际IP地址 - 如上所述 - 192.168.56.101 这取自VirtualBox中的DHCP配置 vboxnet0 设置。这是可以预期的。您应该能够访问您的客户操作系统 192.168.56.101 来自主持人。

(请注意,这是多个客户机将发挥作用的地方:如果您要分配更多客户机 vboxnet0,也会从指定的DHCP范围中获取IP地址。您也可以选择分配静态IP地址,但请记住,它们必须与主机的IP地址位于同一子网中,即地址 vboxnet0。)

可能的原因和解决方案

您的客人机器应该可以访问 192.168.56.101,你描述不起作用。 VirtualBox配置看起来不错。您更可能面临路由/子网问题(可能与主机上的其他网络接口有关)。

尝试将主机与客户机放在同一子网中,方法是更改​​VirtualBox的设置,如下所示:

enter image description here

使用检查主机上的路由表 route。通往。的路线 192.168.56.0 / 255.255.255.0 通过 vboxnet0 现在应该存在,由VirtualBox创建。

您现在应该能够通过主机访问来宾的Apache http://192.168.56.101 并且 - 如有必要 - 从访客通过访问主机 192.168.56.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.