VirtualBox(Ubuntu主机/Windows虚拟机)使用host-only方式与访并共享外网

说实话,我现在工作都是用的Ubuntu Linux(只有家里的组装PC机装了WIN7,用来玩游戏。。。),不过,公司内部用了恶心的263,用wine跑不起来……只好装了VirtualBox,跑了个Win7系统(系统还没破解,这一两天一直弹出激活提示,呃……)。

以前用Windows工作的时候也跑过虚拟机,习惯用host-only+网络共享的方式让虚拟机访问外网,而且主机和虚拟机间可以相互通信。在Ubuntu里一直找不到这种配置方法,所以用了好长一段时间NAT方式共享外网,还好一直没用到需要主机虚拟机相互通信的情况。

今日心血来潮,一定要搞定host-only方式!费了一上午查资料测试,终于搞定,总结记录如下:

1.vbox全局设置

新建host-only网络。一般网络名会是vboxnet0,默认IP地址为192.168.56.1,子网掩码:255.255.255.0。

VirtualBox(Ubuntu主机/Windows虚拟机)使用host-only方式与访并共享外网_第1张图片

为了方便之后相互通信,需要虚拟机使用静态IP,因此将DHCP服务器禁用。

VirtualBox(Ubuntu主机/Windows虚拟机)使用host-only方式与访并共享外网_第2张图片


2.虚拟机设置

打开虚拟机之前先修改下虚拟机的网络设置,修改网卡1的连接方式为仅主机(Host-only)适配器,界面名称选择前面新建的vboxnet0,保存

VirtualBox(Ubuntu主机/Windows虚拟机)使用host-only方式与访并共享外网_第3张图片

启动虚拟机,修改虚拟机Win7系统网络连接:

IP为192.168.56.2(可修改为2-254之前任意值),子网掩码为255.255.255.0,默认网关为192.168.56.1。DNS设置与主机网络相同即可,这里也用的阿里的DNS服务。

VirtualBox(Ubuntu主机/Windows虚拟机)使用host-only方式与访并共享外网_第4张图片

至此,双机应可相互ping通。可能你在Ubuntu中无法ping通虚拟机中的Win7,是因为Win7的防火墙禁止ping,关闭防火墙应该就可以了。

3.开启Ubuntu的网络转发

网上有很多使用iptables实现host-only访问外网的教程,但是大都把这一步省了。但恰恰是这一步的缺失导致了我之前一直无法让host-only的虚拟机访问外网!

开启的方式如下:

编辑/etc/sysctl.conf

sudo vim /etc/sysctl.conf

去掉下面一行的注释(去掉形状的#)

net.ipv4.ip_forward=1

之后执行

sudo sysctl -p

此时,网络转发功能应该就开启了,可以使用如下命令验证:

cat /proc/sys/net/ipv4/ip_forward

命令返回1,说明网络转发已开启。

4.配置网络转发规则

sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE

至此虚拟机应可访问外网了。如果还不能访问外网,请检查你的网络连接设备是否是eth0(使用ifconfig命令),如果不是,请将上述命令中eth0改成你有效的连接设备名,比如使用无线连接,设备名应该是wlan0。

为了每次开机后,转发规则都能生效,把这条命令加入/etc/rc.local

sudo vim /etc/rc.local

在exit 0行之前加入以下两行:

#enable vboxnet0 nat over eth0
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE
同样请保证你使用你当前有效的网络连接设备名。

Ubuntu 14.04/Virtualbox 4.3.10测试通过

你可能感兴趣的:(网络,ubuntu,VirtualBox,共享,host-only)