名词解释
主机:是当前机器,像我本地就是MacBook。
虚拟机:运行在虚拟化环境上的操作系统,类似跑在VMware或者VirtualBox 上的centos,Ubuntu 等。
VMware:提供虚拟机运行环境的软件。为了避免把虚拟化软件跟虚拟机混淆,后面涉及到虚拟化环境都用具体的VMware代替。
VMware网卡
安装好VMware Fusion 并启动之后,通过ifconfig可以看到多出2块网卡(这2块网卡在没有启动VMware 的时候是看不到的)。
注意这里的ip是重新设置过的,这个后面会说。很早的时候接触VMware 对他的网络配置一直很模糊,像什么桥接模式、NAT模式,以及仅主机模式。用到的时候都是网上收一下,照猫画虎配置一下。网上的文章良莠不齐,有时候能配置通,有时候又不行。决定还是要搞清楚这块原理,首先我们说一下这2块网卡。
vmnet1
这块网卡运行在host only也就是仅主机模式,因为在主机上通过ifconfig 能够看到,说明他首先是主机的一块网卡(虚拟)。
主机通过vmnet1这块网卡连接vmware中的vmnet1虚拟交换机,具体的虚拟机(自己安装的像centos、Ubuntu等)上的网卡eth0 也连到vmnet1虚拟交换机。这个时候主机的网卡vmnet1和虚拟机网卡eth0配置成同网段的(后面会讲具体配置),通过vmnet1交换机就可以联通。这里需要注意的是,在虚拟机 里面eth0不一定是对应的vmnet1交换机(也就是host only模式),这个取决于你对网卡的配置。
点击虚拟机的设置按钮,然后点击第一块网卡,这个时候可能只有一块网卡,没关系后面会讲到怎么增加第二块。
确保这块网卡选中的是上面这个选项。
vmnet1是最简单的模式,这个时候主机跟虚拟机能够互相ping 通,这样主机就可以通过ssh 去连虚拟机,避免了在虚拟机中操作带来的各种不便,但是这个时候虚拟机不能连外网。接下我们通过配置vmnet8来让虚拟机连上外网。
vmnet8
先说下怎么添加一块网卡,还是在虚拟机的设置界面,点解右上角的“添加设备”
选择网络适配器
记得选择上面这个选项,这样进入虚拟机之后就会发现多了一块eth1这块网卡,他实际上会跟vmware的vmnet8虚拟机相连。
回到vmnet8,这块网卡运行在NAT模式,这个模式就像我们通过路由器NAT 成运营商的公网ip出去访问外站类似。
从上面可以看到从虚拟机内部访问外网,都需要NAT成主机IP,再通过路由器出去。左边主机上的vmnet8网卡,实际上对访问外网没有实际作用。他的主要作用是让主机能够跟虚拟机联通,而不仅仅只是虚拟机跟主机联通(通过主网卡)。可以关闭vmnet8,这个时候并不会影响虚拟机联通外网。可以实验下,先通过sudo ifconfig vmnet8 down ,将vmnet8这块网卡下线。这个时候通过主机ping 虚拟机上eth1的ip是不通的。
这个时候虚拟机是可以访问外网的。
虚拟机也可以ping通主机上的网卡,但是ping不通vmnet8(肯定的,都下线了)
上面的192.168.3.75 就是主机网卡的ip。
我们再把vmnet8这块网卡上线,这个时候就可以联通虚拟机了,同样虚拟机可以ping通主机。
具体IP配置
首先在宿主机上设置这2块网卡,修改 /Library/Preferences/VMware\ Fusion/networking
主要是VNET_1_HOSTONLY_SUBNET,VNET_8_HOSTONLY_SUBNET 改成想要的网段。
VERSION=1,0
answer VNET_1_DHCP yes
answer VNET_1_DHCP_CFG_HASH D319FF9D5279F67ED3921B51D93496EE9BF379A3
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 192.168.1.0
answer VNET_1_VIRTUAL_ADAPTER yes
answer VNET_8_DHCP yes
answer VNET_8_DHCP_CFG_HASH 3C25BACB472BBFE0978AFAD8CC6982D180CE83D4
answer VNET_8_HOSTONLY_NETMASK 255.255.255.0
answer VNET_8_HOSTONLY_SUBNET 10.10.1.0
answer VNET_8_NAT yes
answer VNET_8_VIRTUAL_ADAPTER yes
启动虚拟机之后,通过ifconfig ,可以看到eth0,eth1 分别对应host only和NAT这2个适配器。
可以分别配置相应的ip,跟宿主机上对应的网卡为同网段的就可以了。
在vm上配置eth0 为静态ip,这样可以通过固定的ssh来连接这台虚拟机。
sudo vi /etc/network/interfaces (不同linux发行版地址略有区别)
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gatway 192.168.1.1
重启网络:sudo /etc/init.d/networking restart
在主机上配置ssh,vi ~/.ssh/config
Host kali
HostName 192.168.1.11
User kali
接着就可以通过 ssh kali 来上虚拟机了。