我已经通过 VirtualBox 在笔记本电脑上安装了 Ubuntu Server 12.04 LTS。我已经安装了 LAMP、OpenSSH、邮件服务器。
登录后,我运行了ifconfig
。它给了我 inet 地址 192.168.0.3。
那么,这应该是我能够访问服务器的地址,对吧?但我无法通过浏览器访问它。服务器始终在 VirtualBox 上运行——但它仍然无法在其他浏览器或我的手机上运行。我必须做什么才能让公众可以访问它?
答案1
默认情况下,VirtualBox 中的客户机配置为使用所谓的 NAT 网络 - 客户机的网络适配器的 IP 位于“虚拟”子网中,其中包括客户机和充当网关的父 VirtualBox 应用程序。对于客户机来说,它看起来像是通过普通 DSL 调制解调器之类的东西访问互联网,但客户机无法从任何地方访问,就像您无法从互联网访问本地网络中的机器,除非您专门配置调制解调器以允许此类访问。
VirtualBox 文档具有以下网络模式列表:
八个网络适配器中的每一个都可以单独配置为在下列模式之一下运行:
未附加
在此模式下,VirtualBox 会向客户机报告网卡存在,但没有连接 —— 就好像没有以太网电缆插入网卡一样。这样就可以“拔出”虚拟以太网电缆并中断连接,这对于通知客户机操作系统没有可用的网络连接并强制重新配置很有用。
网络地址转换 (NAT)
如果您只想在客户机中浏览 Web、下载文件和查看电子邮件,那么此默认模式应该足够了,您可以放心地跳过本节的其余部分。请注意,使用 Windows 文件共享时存在某些限制(有关详细信息,请参阅“NAT 限制”一节)。
桥接网络
这适用于更高级的网络需求,例如网络模拟和在客户机中运行服务器。启用后,VirtualBox 会连接到您安装的网卡之一并直接交换网络数据包,从而绕过主机操作系统的网络堆栈。
内部网络
这可用于创建一种不同类型的基于软件的网络,该网络对选定的虚拟机可见,但对主机上运行的应用程序或外部世界不可见。
仅主机网络
这可用于创建包含主机和一组虚拟机的网络,而无需主机的物理网络接口。相反,在主机上创建一个虚拟网络接口(类似于环回接口),为虚拟机和主机提供连接。
通用网络
很少使用的模式共享相同的通用网络接口,允许用户选择可以包含在 VirtualBox 中或在扩展包中分发的驱动程序。
如果您需要从外部访问您的客户机,则需要配置桥接网络,这将为您的客户机在本地网络中提供自己的 IP。配置是在 VirtualBox 设置中完成的,而不是在客户机操作系统中完成的。
为了能够从您的手机(即从 LAN 之外)访问服务器,在配置网络后,您还需要在 DSL 调制解调器上设置端口转发。
答案2
为了提供更多信息,这些是设置桥接网络的实际步骤:
要启用桥接网络,您只需打开虚拟机的“设置”对话框,转到“网络”页面,然后在“连接到”字段的下拉列表中选择“桥接网络”。最后,从页面底部的列表中选择所需的主机接口,该列表包含系统的物理网络接口。例如,在典型的 MacBook 上,这将允许您在“en1:AirPort”(无线接口)和“en0:以太网”(代表带有网线的接口)之间进行选择。
然后我重新启动了虚拟机并且能够从外部连接到它。