具有静态 IP 和 Apache 的 VirtualBox 主机专用适配器

具有静态 IP 和 Apache 的 VirtualBox 主机专用适配器

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

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

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

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

虚拟机网络设置

在此处输入图片描述

VirtualBoxvboxnet0设置

在此处输入图片描述

在此处输入图片描述

客内测试结果

启动虚拟机并启动 Apache(使用)后,我可以在客户操作系统内使用 Firefoxsudo service apache2 start访问测试页面,没有任何问题。http://localhost/

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

此外,sshd 和 MySQL 服务器正在客户机上运行。我可以通过 ssh 连接到本地主机,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 地址。

实际上,客户操作系统有一个来自 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)

192.168.56.101无法从主机操作系统访问该 IP 地址,即无法 ping 通,无法使用 Web 浏览器进行访问。

我尝试使用将 的 IP 地址更新eth1为。然后,可以从客户操作系统访问 Apache ,但是,仍然无法从主机操作系统进行访问(ping 除外)。192.168.10.10ifconfighttp://192.168.10.10

答案1

简短的回答。

根据我对 VirtualBox 默认网络设置的了解,您使用的主机连接192.168.10.10位于错误的子网上,并且在错误的区域进行了调整以使其正常工作。

在主机操作系统上设置主机专用适配器时,IPv4 地址应为192.168.56.1。然后 — 设置完成后 — 在客户操作系统上将接口设置eth1为使用类似 的 IP 地址192.168.56.10

较长的答案。

使用 VirtualBox 时,内部伪软件路由器设置为在192.168.56.xIP 地址范围内工作。DHCP 服务器范围(您不应在其上设置静态 IP 地址)应在 到 的范围内192.168.56.101192.168.56.254而要设置静态 IP 地址,您需要在192.168.56.2到之间设置 IP 地址192.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

Mac OS X 版本的 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 地址,并仔细检查网络接口配置。

答案2

使用 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 地址访问主机操作系统。

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

客户机的实际 IP 地址是 — 如您上面所述 —192.168.56.101取自 VirtualBoxvboxnet0设置中的 DHCP 配置。这是预期结果。您应该能够192.168.56.101从主机访问客户机操作系统。

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

可能的原因及解决方法

您的客户机应该可以通过 访问192.168.56.101,但您描述的却不行。VirtualBox 配置看起来不错。您更有可能遇到路由/子网问题(这可能与主机上的其他网络接口有关)。

尝试将主机与客户机放在同一子网中,通过如下方式更改 VirtualBox 的设置:

在此处输入图片描述

使用 检查主机上的路由表。现在应该存在由 VirtualBox 创建的到/ via 的route路由。192.168.56.0255.255.255.0vboxnet0

您现在应该能够通过 从主机访问客户的 Apache http://192.168.56.101,并且——如果需要——通过 从客户机访问主机192.168.56.1

相关内容