Pd(Paralles Desktop)是Mac下最牛逼的虚拟机软件,速度非常快。pd之所以比较快,是因为它采用了半虚拟化的方式,
从网卡类型处可以见一些端倪,下图中的virtio。
图1
好,正文开始。
之前在vmware中习惯了用仅主机模式,我个人不喜欢nat模式,觉得端口映射比直接用路由会低效,所以想在pd中也实现类似的配置。但是很不幸,似乎pd中的网络配置没有此类连接方式,下面借助nat方式实现以下需求。
声明:以下描述中,虚拟机指在pd中所安装的虚拟机,如cent os等linux发行版。需求:
给虚拟机配置表态ip,如192.168.6.10/24。 无论mac是否已经连接外网,在mac上都可直接连接到虚拟机的内网地址。 当mac连接到外网时,虚拟机也可以连接到外网。
简单结构如下所示。
图2 结构画得很简单,下面看具体实现。
安装pd之后,会在mac中增加一个虚拟网卡,这个是pd用于把虚拟机和宿主系统如mac互联的网络接口,相当于虚拟机和宿主系统之间的一个交换机,如下所示。
图3 执行命令networksetup -listallhardwareports可以得到
Hardware Port: Wi-Fi Device: en0 Ethernet Address: ac:bc:32:79:16:2d Hardware Port: Bluetooth PAN Device: en3 Ethernet Address: ac:bc:32:79:16:2e Hardware Port: Thunderbolt 1 Device: en1 Ethernet Address: 4a:00:02:65:c3:f0 Hardware Port: Thunderbolt 2 Device: en2 Ethernet Address: 4a:00:02:65:c3:f1 Hardware Port: Thunderbolt Bridge Device: bridge0 Ethernet Address: 4a:00:02:65:c3:f0也可以在mac上执行以下ifconfig来查看,vnic0正是上述pd所安装的虚拟网卡,如图4所示。
图4
注意,vnic0中的vnic是指virtual net interface card,即虚拟网络接口,后面的0对应的是图3左上角虚拟网卡中的#0,即蓝色部分,它表示pd安装的第0块网卡。
以上两个图中显示的是同一块刚卡,因此ip都是192.168.6.2。这个并不是我在图3中的“ip address”中配置的,它是在pd中配置的,右键(默认是双指按触摸版)选择pd的图标,进入preference,即配置,如图5所示。
图5
弹出图6的界面。
图6
图6中配置的是shared模式,即让我们的虚拟机与mac共享外网,红色框框中的enable ipv4 dhcp是用来打开内置的dhcp服务,熟悉nat模式的同学都知道,这就是让虚拟机通过nat模式上网的方式。下面蓝色框框中的start address等三个输入框是用来确认dhcp的地址池,即虚拟机采用dhcp方式可自动获取的ip地址的范围。
如果用dhcp获取ip的话,虚拟机中的ip地址就不固定,也许下次开机时就换了个新的ip,那么每次都要去查看下新的ip才能连接到虚拟机。因此我需要把虚拟机设置为固定ip,即静态ip,因此我并没有勾选enable ipv4 dhcp,也就是说我要手动配置ip。尽管没有勾选该选项,依然要填写地址池,因为我们是在借助nat的方式,虚拟机中所配置的ip地址必须要属于此ip地址范围,而且这不仅是为了配置虚拟机的ip范围,还要给pd在宿主机上的虚拟网卡vnic0分配地址,在本文最后可证。
点击虚拟机的配置,如图7所示。
图7
弹出图8的界面。
图8
如图8,将网卡network1(我只配置了一块,具体以大家实际需求为准)的source源选择为Shared Network,也就是将虚拟机的网卡绑定到此Shared Network,Shared Network就是上面图6中的连接方式Shared,这样虚拟机便可与mac共享网络。还没完,还需要配置虚拟机的ip。
启动虚拟机后,进入网卡文件的配置目录,用vim编辑网卡配置文件,我这里的网卡配置文件是ifcfg-eth0,具体以大家实际的为主。如图9所示。
图9
这是我的网卡配置文件,如图10所示。
图10
图中的bootproto采用的是static,表示静态,也可以写成none,大小写均可。接下来的是手动配置的ip,主要注意的是GATEWAY网关,这里配置的是192.168.6.1,并不是图3或图4中的192.168.6.2,因为我们并不是把mac当成Ip数据报文转发路由器(如同vmware中使用仅主机模式共享网络,然后虚拟机把网关指向vmware所共享的网卡ip),而是当成nat路由器,当采用nat方式为虚拟机提供网络服务时,pd会单独为虚拟机生成一个网关地址,这通常是地址池 中的第1个ip,如图6中的start address ,而图4中vnic0的地址是地址池中的第2个ip,即192.168.6.2。其它内容不说了,这是涉及到网络的知识,要说就太多了,不懂网络的话您就照着这个写。
编辑完文件后,重启网络,我的虚拟机是centOs7.2,与centOs6系列不同,在7中系统服务是用systemctl命令来控制的,6是用service命令,执行systemctl restart network,然后用ip a命令查看ip,注意,ip和a之间有空格,如图11所示。
图11
我们在网卡配置文件中已经设置好了GATEWAY是192.168.6.1,这是虚拟机上网的关键,可以用ip r命令验证一下路由表,如图12所示。
图12
如果mac的外网是通的,现在可以在虚拟机中用ping命令测试下网络了,如图13所示,网是通的。
图13
接下来在mac上直接访问虚拟机试试看,这里用ssh工具iterm2连接虚拟机的ip地址192.168.6.10,如图14所示,通了。
图14
自此便实现了mac通过内网连接虚拟机,虚拟机又可以通公(外)网。
如果在图6中勾选enable ipv4 dhcp,即让pd启用dhcp会怎样呢?不怎么样,只要我们虚拟机网卡配置文件中prototype不是dhcp,就不起作用,我们的需求是手动配置静态ip嘛。看看启用后的效果吧,如图15所示。
图15
再通过内网连接虚拟机,在虚拟机中测试外网,如图16所示。
图16
接着验证,前面说过,图3中的ip192.168.6.2并不是我人为配置的,那是谁配置的呢?是在图6中红色框框中配置地址池后,由pd帮着设置的。因此图3中的ip是以图6为主,这两个ip的网段必须是一致的,否则虚拟机就连不上了。因此,尽管图6中未开始dhcp,但是其下的地址池还需要配置的原因,不仅是为了配置虚拟机的ip范围,还要给pd在宿主机上的虚拟网卡vnic0分配地址,即192.168.6.2。
大家可以测试一下,如果在图6中把ip池的网段改了,在图3中显示的Ip并不会及时更新,此时网络肯定就断了。要么手工在图3中把ip改为同一网段,或者把pd退出重启,让pd重新配置。
好,多谢大家。