本文转自:点击打开链接
用 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 文件来欺骗电脑使之可以通过域名访问虚拟机上的网站。
要通过域名访问虚拟机,需要修改母机的 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 中创建了虚拟机并安装操作系统之后,就可以给它添加另一块网卡(当然是虚拟网卡)了。
方法:
关闭虚拟机,在 VirtualBox 主界面(如上图所示),选中要添加第二块网卡的虚拟机,这里举例用的是 CentOS 这个虚拟机,然后单击上面的“设置”按钮打开虚拟机设置界面,并从左侧栏切换到“网络”条目。如下图所示。
其中“网卡 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
。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 学习之路系列总结文章中的一篇,对于搭建局域网环境来练习创建自己的网站非常有帮助。©