众所周知,GNS3是一个优秀的网络仿真软件。但是其拓扑中自带的终端VPCS的功能是真的弱,完全没有真实的终端操作系统用着舒服。VMWare WorkStation/VMFusion是出名的虚拟机软件,可以运行多种操作系统。那么,我们能否将VMWare WorkStation/VMFusion的虚拟机接入GNS3搭建的仿真拓扑中呢?答案当然是可以的。这样的话虚拟机可玩性就高很多了,你可以通过GNS3搭建一个特别复杂的网络拓扑(各种路由器、交换机、防火墙等),然后再接入虚拟机实现各种渗透操作。
笔者之前使用Windows的时候,把虚拟机接入GNS3是真的方便,拖一个Cloud到拓扑中,然后选择桥接的网卡即可接入虚拟机中,是真的方便,但是自从换到MacOS后,这个功能就一直没有成功过。。。说是什么权限还是啥的花里胡哨的各种问题。
今天在整理PPT的时候,因要完成网络设备攻击相关的实验,又看了下这个VMFusion接入GNS3网络,没想到竟然弄成了。因此专门来记录下,让大家少踩一点坑。
为什么要设置VMFusion的网段呢?因为设置网段后,你可以轻松的直接通过一个IP,就直接确定当前主机所在的网络模式。
一般的话,我习惯这样设置:
- 192.168.10.0/24(仅主机模式)
- 192.168.80.0/24(NAT模式)
因为VMFusion中无法直接修改NAT模式和仅主机模式(Host-Only)网卡的IP,因此我们需要通过修改配置文件的方式来修改IP配置。
(1)停止vmnet网络服务
1
|
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop
|
(2)修改networking配置文件
1
|
sudo vim /Library/Preferences/VMware\ Fusion/networking
|
1
2
3
4
|
#将vmnet1中的IP段修改为192.168.10.0
#将vmnet8中的IP段修改为192.168.80.0
answer VNET_1_HOSTONLY_SUBNET 192.168.10.0 # 修改为 192.168.10.0
answer VNET_8_HOSTONLY_SUBNET 192.168.80.0 # 修改为 192.168.80.0
|
(3)将根据上述修改的地址段自动修改dhcpd.conf和nat.conf中的IP地址。
1
|
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --configure
|
(4)停止并启动vmnet网络服务
1
2
|
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start
|
通过命令来查看一些修改效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
$ ifconfig
...
#bridge100(vmnet1-仅主机模式)
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 3e:22:fb:d3:41:64
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
inet6 fe80::3c22:fbff:fed3:4164%bridge100 prefixlen 64 scopeid 0x18
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x0
member: vmenet0 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 23 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
#bridge102(vmnet8-NAT模式)
bridge102: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 3e:22:fb:d3:41:66
inet 192.168.80.1 netmask 0xffffff00 broadcast 192.168.80.255
inet6 fe80::3c22:fbff:fed3:4166%bridge102 prefixlen 64 scopeid 0x1c
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x0
member: vmenet2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 27 priority 0 path cost 0
member: vmenet3 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 29 priority 0 path cost 0
member: vmenet4 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 30 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
|
这样的话,我们就可以成功的修改好NAT模式和仅主机模式的网卡网段了。
接下来,我们需要在GNS3中设置下Cloud。
首先,我们需要给GNS3设置合理的权限,以便可以在不同的网卡上转发流量。
1
2
3
|
sudo chown root:admin /Applications/GNS3.app/Contents/MacOS/ubridge
sudo chmod 4750 /Applications/GNS3.app/Contents/MacOS/ubridge
|
设置好后,打开GNS3新建一个拓扑。点击"所有设备"的页面。
接着,我们选择新建一个模板。
选择"Cloud nodes"。并点击"new"。
起个名称,比如:VMFusionCloud,然后点击"Finsh"完成。
然后,选择刚刚创建的"VMFusionCloud",然后点击"Edit"进行编辑。
选中"Show special Ethernet interfaces"显示所有的接口。
点击下拉列表,选中要添加的网卡,依次点击"add"即可。
添加完成后的效果如下:
需要注意,在选择添加时,只添加bridgeXXX这几个就行了。添加时还会直接出现vmnet0、vmnet1…等网卡,请不要勾选vmnetXXX开头的网卡,因为我这边测试这些网卡都是down的状态,勾选上后期也无法直接使用。
似乎,bridgeXXX都是VMFusion创建的网卡,具体是不是我不是特别确定。
上述,bridgeXXX对应的网卡关系如下:
- bridge100:vmnet1-仅主机模式
- bridge101:自己添加的另一个仅主机模式的网卡
- bridge102:vmnet8-NAT模式
这样的话,这个Cloud就创建好了。
我们可以拖一个路由器和Cloud出来测试下。
使用bridge102(NAT模式)网卡连接路由器的F0/0接口。
打开路由器设置下F0/0的IP地址为:192.168.80.100(NAT模式网卡的网段)。
当前路由器的F0/0接口已经连接到VMFusion的NAT网卡上了,也就是说所有VMFusion虚拟机中设置NAT网络模式的虚拟机都接入这个GNS3的网络拓扑中了。
下面以处在NAT模式的Kali虚拟机进行测试:
可以看到,Kali已经成功连通这个路由器了。
至此,你就掌握了把VMFusion中各种网卡接入GNS3网络的方法了。
剩下的该怎么折腾仿真的网络环境就看你自己的创意想法了。