关键字
Windows; Window 10; VirtualBox; Ubuntu 16.04; 互ping;外网
每次电脑重装系统或者到一个新的环境,需要使用linux时,经常会选择装虚拟机,毕竟工作生活主要环境还是Windows。每次安装虚拟机以后,总会不可避免的涉及到主机与虚拟机通信,以及虚拟机上网等需求,然而每次都需要折腾半天,所以这次痛下心来整理总结。
环境
宿主机器(后检查“主机”):Windows 10
虚拟机: Ubuntu 16.04
虚拟工作: VirtualBox 5.1.24
宿主机器IP: 192.168.56.1
虚拟机IP: 192.168.56.2(Host-Only)和10.0.2.5(NAT)
需求
- **主机和虚拟器能够互相ping通,并且虚拟机IP固定 **(通常我喜欢在Win主机SSH到虚拟机上,这样不用切环境方便)
- 虚拟机能够上网(不然没法安装软件没法玩)
解决思路
需求1
对于需求1而言,一般可以用过host only模式解决,对于ubuntu还是其他linux发行版系统而言,都可以这样做,但是细节上有些不同的坑。Win10 + Ubuntu 16.04貌似小坑很多,具体解决细节如下:
1). 在VirtualBox上的全局设定(Ctrl+G)中的网络下设置Host-Only网络,添加一块Host-Only网卡(默认情况下是有一张的,如果有则不需要添加),并且不启用HDCP服务器(因为我们虚拟机需要设置固定ip,这样主机才能方便连接,不然多台虚拟机时每次虚拟机开机ip可能都会有些不同)。
2). 设置虚拟机的局特特性(Ctrl+S),在网络选项卡下多启用一块网卡,并将连接模式设置为“仅主机(Host-Only)网络”,界面名称选在1).中添加的那块网卡名称。
3). 设置好了以后,接下来需要进入虚拟机中进行配置,此处遇到几个坑是以前没遇见的。在虚拟机(Ubuntu)下的配置信息如下:
在terminal下打开网卡配置文件
vim vim /etc/network/interfaces
在网卡配置文件中进行如下设置
# 在interfaces文件中进行如下设置
# enp0s8是对应采用Host-Only网路的网卡
auto enp0s8
iface enp0s8 inet static
# 因为主机的Host-Only网卡的ip是192.168.56.1,所以虚拟机要设置在同一个网络段192.168.51.*
address 192.168.56.2
netmask 255.255.255.0
# 切记在ubuntu下不要设置网关,否则虚拟机无法上外网
# gateway 192.168.56.1
设置好上述文件后,保存推出,执行如下命令重启网络
sudo /etc/init.d/networking restart
若重启成功以后,主机可以ping通过虚拟机。但是这次我却发现,主机可以ping虚拟机,但是虚拟机无法ping通主机。非常郁闷,想了好久才考虑到是不是是防火墙的问题,最后发现真是Win10防火墙的问题(PS: Win10没有安装第三方杀软,所以不想直接关闭防火墙)。在Windows中进行设置,控制面板 -> Windows防火墙 ->高级设置-> 入站规则中启用文件和打印机共享(回显请求 - ICMPv4-In)规则(我不需要IPv6,所以不选择ICMPv6-In),这样即可解决虚拟机ping主机的问题。
注:Windows 10的防火墙设置上很多默认都是禁止连入,如果一些主机上的端口虚拟机无法访问,则需要去防火墙放行对应端口。
需求2
对于需求2而言,在全局设定(Ctrl+G)中网络添加NAT网卡(默认设置),然后在虚拟机的局部设置(Ctr+S)中网络里启用另一块网卡,连接方式设置为NAT网络即可。
经过这上述设置,虚拟机便可以访问外网,同时和主机也可以实现双向互ping。
总结
理解VirtualBox中虚拟机的集中网络连接方式,可以方便满足工作中的网络需求。如果虚拟机是CentOS 7的情况,可以参考文http://www.linuxidc.com/Linux/2017-01/139345.htm,与Ubuntu主要区别在于配置网卡信息时有所不同。