用 VirtualBox 创建虚拟机的时候,默认会使用网络地址转换(NAT)模式,也称为 Host-only 模式,为虚拟机创建网络连接。这可以让虚拟机通过母机的网络连接来访问互联网。但是母机却不一定能够访问虚拟机的网络资源。这时,可以给虚拟机添加一块“桥接网卡”来使母机及其它家庭网络上的设备直接访问虚拟机。当然,如果还有另一个虚拟机也这么设置了网络连接,虚拟机之间也可以顺利访问。
但是因为各家的上网情况可能有所不同,这里预设一种情景:使用路由器在家里的各台设备之间共享网络连接。目前,这应该是一种很常见的方式吧?!这里假设无线路由器的 IP(网关的 IP)是 192.168.0.1,那么家里各台电脑就是 192.168.0.2、192.168.0.3 等等。(当然别的局域网 IP 也可以,比如 192.168.56.*。)
假设当前使用的电脑(母机)的 IP 是 192.168.0.2,而 192.168.0.10 这个 IP 目前还没有设备使用,我们将它分配给虚拟机使用。实际上,使用 DHCP 自动分配 IP 地址的话,虚拟机的桥接网卡也能自动从路由器获取 192.168.0.* 的 IP。
为什么要给固定下来呢?因为我们的目的是用虚拟机来模拟一个 VPS 服务器,让它的 IP 地址固定就可以使用 HOSTS 文件来欺骗电脑使之可以通过域名访问虚拟机上的网站。
%systemdrive%/windows/system32/drivers/etc/hosts
,Linux 的话一般是/etc/hosts
),在后面添加下面的内容:
192.168.0.10 domain.com 192.168.0.10 www.domain.com
保存。以后就可以直接通过域名 domain.com 和 www.domain.com 访问虚拟机了:
ping domain.com
如果家庭网络上的其它计算机也要通过域名访问这个虚拟机,也需要类似修改其 HOSTS 文件。
给虚拟机安装操作系统可以参考:给 VirtualBox 虚拟机安装最小化 CentOS 操作系统。如果想安装 Windows,可以参考前文加载 Windows 安装光盘映像来启动安装,剩下的应该不困难了吧。
在 VirtualBox 中创建了虚拟机并安装操作系统之后,就可以给它添加另一块网卡(当然是虚拟网卡)了。
创建了 CentOS 虚拟主机的 VirtualBox 主界面
方法:
设置”按钮打开虚拟机设置界面,并从左侧栏切换到“网络”条目。如下图所示。
VirtualBox 虚拟机的网络设置界面
网卡 1”已经默认设置为“网络地址转换(NAT)”模式,可以让虚拟机通过母机的网络来访问互联网。
网卡 2”,勾选“启用网络连接”,将“连接方式”更改为“桥接网卡”,其它不需要修改,但是需要点开“高级”然后记下 “MAC 地址”后面的字符(我这里是 080027f26be7)。上面的“界面名称”实际是虚拟机内部的网卡需要桥接到的母机网卡的名称。
确定”保存设置。添加网卡完成!
下面按照虚拟机里的操作系统分两种情况,Windows 和 CentOS Linux,分别说明“桥接网卡”的设置。
虚拟机里安装了 Windows 操作系统的话,也许不需要这块”桥接网卡“就可以与母机双向通信。但是,如果想要家庭网络上的其它计算机也可以自由访问虚拟机的话,还是需要桥接网卡的。
Windows 中设置桥接网卡非常方便,因为 Windows 开机启动之后会自动添加新硬件。等它添加了新的网卡之后,我们只需要在”网络连接“里面将新网卡的 IP 设置为 192.168.0.10(举例),同时配置”网络掩码“为 255.255.255.0,网关为 192.168.0.1,再配置自己喜欢的 DNS(比如Google 的公共 DNS)或者直接用路由器作为 DNS(192.168.0.1)即可。
Linux 的发行版太多了,而且各自的配置文件还不一定相同,所以这里只举例说明 CentOS 中的设置情况。下面的命令行指令直接输入到虚拟机启动后其操作系统界面里的 # 号后面并回车即可,因为这里的目的主要是模拟 VPS,并没有使用图形界面。
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
i
- 键开始编辑,用上下左右键将光标移动到
ONBOOT=no
- 那里,删除
no
- ,输入
yes
- 。
- 然后按 Ctrl+c 键退出编辑状态,再按 shift+; 组合键输入 : ,紧接着输入 wq 保存并退出文本编辑器。
- cp -rf /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 然后编辑 ifcfg-eth1(编辑方法同前述编辑 ifcfg-eth0 的方法): vi /etc/sysconfig/network-scripts/ifcfg-eth1 将其中的内容改为(其中 HWADDR 就是刚才记下的那一串字符,只不过用 : 分割开了): DEVICE="eth1" HWADDR=08:00:27:F2:6B:E7 TYPE=Ethernet NM_CONTROLLED=no ONBOOT=yes IPADDR=192.168.0.10 NETMAK=255.255.255.0 GATEWAY=192.168.0.1 然后保存退出编辑器。接着执行下面的指令重新启动所有网络连接: service network restart 应该能看到类似下面的反馈信息: Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining IP information for eth0... done. [ OK ] Bringing up interface eth1: [ OK ] 如果没有看到“Bringing up interface eth1: [ OK ]”这样的反馈信息,那有可能是因为 eth1 没有安装好。试着执行下面的指令让 CentOS 自动检测新硬件并安装: start_udev 等它完成了再重新重启所有网络连接。
- ping 192.168.0.10
- ping domain.com
这是我的 VPS 学习之路系列总结文章中的一篇,对于搭建局域网环境来练习创建自己的网站非常有帮助。