22nd September 2013 [https://dl.dropboxusercontent.com/u/1030586/blog/img/mac-gns3-vmf.png] At long last, we can finally integrate VMware Fusion with GNS3. VMware Workstation for Windows and Linux has had this capability for quite some time, but Mac users were limited to VirtualBox, QEMU and Parallels for GNS3 integration. Not to take anything away from those virtualization products, but VMware is the virtualization standard in regards to broad industry support and compatibility. The following components were used for this tutorial: Mac OS X 10.8 [http://www.apple.com/osx] (also tested with Mac OS X 10.9) VMware Fusion 6.0 Professional [http://www.vmware.com/products/fusion] GNS3 [http://www.gns3.net] TunTap [http://tuntaposx.sourceforge.net] This tutorial assumes you have, at the very least, a basic amount of experience with each of the listed components. You can refer to my previous post Install and configure GNS3 with TunTap on the Mac [http://binarynature.blogspot.com/2010/07/mac-install-and-configure-gns3-with.html] for the GNS3 and TunTap elements. Another prerequisite is that all components are installed and set with a base configuration. 11.. VVMMwwaarree FFuussiioonn VMware Fusion 66 is a hard requirement for this tutorial. VMware has made modifications to the VMnet virtual switches (in version 6) to allow Ethernet bridging with other virtual network interfaces (e.g. TAP [http://en.wikipedia.org/wiki/TUN/TAP] ). If you use this tutorial with version 5 or below, you may encounter kernel panics [https://communities.vmware.com/message/2208054] on your Mac. I'm also using VMware Fusion 6.0 PPrrooffeessssiioonnaall in my setup. The non-Professional [http://www.vmware.com/products/fusion-professional/compare.html] edition does not include the GUI Network Editor. ## 11..11 VViirrttuuaall NNeettwwoorrkk SSwwiittcchheess Our network configuration will use two host-only network switches. A host-only network (switch) is a network that is completely contained within the host computer. Host-only networking provides a network connection between the virtual machine and the host system by using a virtual network adapter that is visible on the host operating system. vvmmnneett11 is available by default and is listed as PPrriivvaattee ttoo mmyy MMaacc in the GUI. Lets now add the other one. Open the PPrreeffeerreenncceess window for VMware Fusion Professional. 1. Select NNeettwwoorrkk. 2. Click the ++ symbol to add a new virtual switch. In my example, vvmmnneett55 is added. As the following screenshot shows, we will leave the AAllllooww vviirrttuuaall mmaacchhiinneess oonn tthhiiss nneettwwoorrkk ttoo ccoonnnneecctt ttoo eexxtteerrnnaall nneettwwoorrkkss ((uussiinngg NNAATT)) and PPrroovviiddee aaddddrreesssseess oonn tthhiiss nneettwwoorrkk vviiaa DDHHCCPP options unchecked. 3. Click the AAppppllyy button to save the setting, then close the PPrreeffeerreenncceess window. 4. Integrate VMware Fusion with GNS3 on your Mac Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus... 1 of 14 9/2/14 10:18 pm
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
At long last, we can finally integrate VMware Fusion with GNS3. VMware Workstation for Windows and Linux has had this capability for quitesome time, but Mac users were limited to VirtualBox, QEMU and Parallels for GNS3 integration. Not to take anything away from thosevirtualization products, but VMware is the virtualization standard in regards to broad industry support and compatibility.
The following components were used for this tutorial:
Mac OS X 10.8 [http://www.apple.com/osx] (also tested with Mac OS X 10.9)VMware Fusion 6.0 Professional [http://www.vmware.com/products/fusion]
GNS3 [http://www.gns3.net]
TunTap [http://tuntaposx.sourceforge.net]
This tutorial assumes you have, at the very least, a basic amount of experience with each of the listed components. You can refer to my previouspost Install and configure GNS3 with TunTap on the Mac [http://binarynature.blogspot.com/2010/07/mac-install-and-configure-gns3-with.html] for theGNS3 and TunTap elements. Another prerequisite is that all components are installed and set with a base configuration.
11.. VVMMwwaarree FFuussiioonnVMware Fusion 66 is a hard requirement for this tutorial. VMware has made modifications to the VMnet virtual switches (in version 6) to allowEthernet bridging with other virtual network interfaces (e.g. TAP [http://en.wikipedia.org/wiki/TUN/TAP] ). If you use this tutorial with version 5 orbelow, you may encounter kernel panics [https://communities.vmware.com/message/2208054] on your Mac. I'm also using VMware Fusion 6.0PPrrooffeessssiioonnaall in my setup. The non-Professional [http://www.vmware.com/products/fusion-professional/compare.html] edition does not include theGUI Network Editor.
## 11..11 VViirrttuuaall NNeettwwoorrkk SSwwiittcchheessOur network configuration will use two host-only network switches. A host-only network (switch) is a network that is completely containedwithin the host computer. Host-only networking provides a network connection between the virtual machine and the host system by using avirtual network adapter that is visible on the host operating system. vvmmnneett11 is available by default and is listed as PPrriivvaattee ttoo mmyy MMaacc in theGUI. Lets now add the other one.
Open the PPrreeffeerreenncceess window for VMware Fusion Professional.1.Select NNeettwwoorrkk.2.Click the ++ symbol to add a new virtual switch. In my example, vvmmnneett55 is added. As the following screenshot shows, we will leave theAAllllooww vviirrttuuaall mmaacchhiinneess oonn tthhiiss nneettwwoorrkk ttoo ccoonnnneecctt ttoo eexxtteerrnnaall nneettwwoorrkkss ((uussiinngg NNAATT)) and PPrroovviiddee aaddddrreesssseess oonn tthhiiss nneettwwoorrkk vviiaaDDHHCCPP options unchecked.
3.
Click the AAppppllyy button to save the setting, then close the PPrreeffeerreenncceess window.4.
Integrate VMware Fusion with GNS3 on your Mac
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
FYI: vvmmnneett11 and vvmmnneett88 are the default hhoosstt--oonnllyy and NNAATT virtual switches, respectively. vvmmnneett88 is listed as SShhaarree wwiitthh mmyy MMaacc in the GUI.
We can list all network interfaces (physical and virtual) with the iiffccoonnfifigg command from the terminal.
$ ifconfig
## 11..22 VViirrttuuaall MMaacchhiinneessThis section will assume you've already installed the operating system in each of your virtual machines, or you have opted to import a virtualappliance. Just verify a vNIC is connected to the correct virtual network (switch). In my example, I have both a Windows and Linux virtualmachine. The Windows VM is linked to the vvmmnneett11 switch and the Linux VM will use vvmmnneett55.
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
22.. GGNNSS33With the VMware Fusion section complete, we can now focus on GNS3. The remainder of the tutorial will be referencing this network diagram:
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
4 of 14 9/2/14 10:18 pm
[https://dl.dropboxusercontent.com/u/1030586
/blog/img/gns3-vmware-nettop.png]
Go ahead and add the GNS3 objects to a new project. My configuration has R1 using a Cisco 3725 IOS image but feel free to use anyGNS3-compatible IOS image for your virtual router. SW1 and SW2 are simple GNS3 Ethernet switches. The VMs are Host objects (not VirtualBoxguest), and the object that looks like a cloud is ... wait for it ... a Cloud object.
## 22..11 CClloouudd aanndd HHoossttssWe need to configure each of the Cloud and Host objects before we wire them to the switches. Each object will be using a TTAAPP virtual networkinterface. Lets start with the Cloud object.
Right-click the Cloud object.1.Select CCoonnfifigguurree.2.Select the subnode (ex. C1).3.Select NNIIOO TTAAPP.4.Enter //ddeevv//ttaapp00 into the top field.5.Click the AAdddd button to add the interface.6.Click the AAppppllyy button to save the setting.7.Then click the OOKK button to close the window.8.
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
Repeat the steps for each of the Host objects. Just substitute the ttaappXX value. The Windows VM will use //ddeevv//ttaapp11 and the Linux VM will use//ddeevv//ttaapp22. These are labeled in the network diagram screenshot.
Connect all the objects with Fast Ethernet links.
By linking the Cloud and Host objects with the switches, it should have brought up the TTAAPP network interfaces on the physical Mac host. Letscheck. Run the following commands from the terminal:
$ ifconfig tap0tap0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 02:e9:2d:82:4d:f8 open (pid 5333)$ ifconfig tap1tap1: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether ee:47:b5:07:63:ea open (pid 5333)$ ifconfig tap2tap2: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 0e:6d:9b:0e:f9:cf open (pid 5333)
## 22..22 RR11 RRoouutteerrStart the R1 router. Emulate a console connection by establishing a telnet session to the virtual device. In my configuration, R1 (Dynamips) islistening on port 2101, so I run the following command in the terminal:
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
6 of 14 9/2/14 10:18 pm
$ telnet 127.0.0.1 2101
We now need to set the network configuration for the Fast Ethernet interfaces in IOS. In my example:
R1# conf tR1(config)# int f0/0R1(config-‐if)# ip addr 10.11.1.254 255.255.255.0R1(config-‐if)# no shutR1(config-‐if)# int f0/1R1(config-‐if)# ip addr 172.16.195.254 255.255.255.0R1(config-‐if)# no shutR1(config-‐if)# endR1# copy run start
Verify the configuration and state of the Fast Ethernet interfaces.
R1# sh run | sec intinterface FastEthernet0/0 ip address 10.11.1.254 255.255.255.0 duplex auto speed autointerface FastEthernet0/1 ip address 172.16.195.254 255.255.255.0 duplex auto speed autoR1# sh ip int brInterface IP-‐Address OK? Method Status ProtocolFastEthernet0/0 10.11.1.254 YES manual up up FastEthernet0/1 172.16.195.254 YES manual up up
33.. EEtthheerrnneett BBrriiddggeeNow, the big question is: How do we integrate our Windows and Linux VMs with the GNS3 environment? The answer is by creating an Ethernetbridge. An Ethernet bridge represents the software analog to a physical ethernet switch. For our purposes, this will bind two separate virtualnetwork segments (vmnetX and tapX) into a single virtual network interface attached to the Mac host. We will be creating two bridgeinterfaces. One for the Windows VM and the other for the Linux VM.
## 33..11 BBrriiddggee ffoorr WWiinnddoowwss VVMMWe first need to clear the IP configuration for the vvmmnneett11 virtual network interface before adding it as a member to the first bridge interface.Run the following from the terminal:
## 33..22 BBrriiddggee ffoorr LLiinnuuxx VVMMJust like with vvmmnneett11, we need to clear the IP configuration for the vvmmnneett55 virtual network interface before adding it as a member to thesecond bridge interface. Run the following from the terminal:
44.. TTaapp00 IInntteerrffaacceeThe ttaapp00 interface will not be part of a bridge interface, but we still need to set the IP configuration for it as it will be a node interface on the1100..1111..11..00//2244 network.
$ sudo ifconfig tap0 inet 10.11.1.1/24 up
55.. TTeessttiinngg aanndd VVeerriifificcaattiioonnAt this stage, we should be ready to do some basic connectivity testing.
Ping the Linux VM from the Windows VM.
C:\> ping 172.16.195.11
Pinging 172.16.195.11 with 32 bytes of data:Reply from 172.16.195.11: bytes=32 time=1ms TTL=64
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
8 of 14 9/2/14 10:18 pm
Reply from 172.16.195.11: bytes=32 time<1ms TTL=64Reply from 172.16.195.11: bytes=32 time<1ms TTL=64Reply from 172.16.195.11: bytes=32 time<1ms TTL=64
Ping statistics for 172.16.195.11: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-‐seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms
Ping the R1 f0/1 interface (default gateway) from the Windows VM.
C:\> ping 172.16.195.254
Pinging 172.16.195.254 with 32 bytes of data:Reply from 172.16.195.254: bytes=32 time=16ms TTL=255Reply from 172.16.195.254: bytes=32 time=9ms TTL=255Reply from 172.16.195.254: bytes=32 time=6ms TTL=255Reply from 172.16.195.254: bytes=32 time=5ms TTL=255
Ping statistics for 172.16.195.254: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-‐seconds: Minimum = 5ms, Maximum = 16ms, Average = 9ms
Ping the R1 f0/0 interface from the Windows VM.
C:\> ping 10.11.1.254
Pinging 10.11.1.254 with 32 bytes of data:Reply from 10.11.1.254: bytes=32 time=17ms TTL=255Reply from 10.11.1.254: bytes=32 time=9ms TTL=255Reply from 10.11.1.254: bytes=32 time=6ms TTL=255Reply from 10.11.1.254: bytes=32 time=7ms TTL=255
Ping statistics for 10.11.1.254: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-‐seconds: Minimum = 6ms, Maximum = 17ms, Average = 9ms
Everything looks good so far. Lets now try to ping the ttaapp00 network interface.
C:\> ping 10.11.1.1
Pinging 10.11.1.1 with 32 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.
Ping statistics for 10.11.1.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Now, why did it fail? Lets break it down logically. The Windows VM can ping each interface on its own subnet and also the R1 f0/0 interface onthe remote 1100..1111..11..00//2244 subnet, but for some reason it doesn't receive an ICMP Echo reply from ttaapp00. Remember that routing is a "two-waystreet". The packets may get to the destination, but do they know how to get back? R1 knows about both subnets as they are direct (connected)routes in the routing table, so let us think from the viewpoint of the ttaapp00 interface on the Mac. Does it know how to get to the remote subnet?Lets check the routing table, on the Mac, for the 172.16.195.0 network entry. Run the following command from the terminal:
$ netstat -‐rn | grep 172.16.195
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
9 of 14 9/2/14 10:18 pm
Nothing. Therein lies the problem. The Mac needs a route for the remote 117722..1166..119955..00 subnet. Create the static route by running the followingcommand from the terminal:
Lets ping the ttaapp00 interface again from the Windows VM.
C:\> ping 10.11.1.1
Pinging 10.11.1.1 with 32 bytes of data:Reply from 10.11.1.1: bytes=32 time=35ms TTL=63Reply from 10.11.1.1: bytes=32 time=12ms TTL=63Reply from 10.11.1.1: bytes=32 time=15ms TTL=63Reply from 10.11.1.1: bytes=32 time=13ms TTL=63
Ping statistics for 10.11.1.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-‐seconds: Minimum = 12ms, Maximum = 35ms, Average = 18ms
We should now have full connectivity among all devices in our virtual network.
66.. NNoo MMaann IIss AAnn IIssllaannddLets take this a step further. Lets extend the reach of our virtual network to the Internet. We have at least two different methods ofimplementing this. We can either configure NAT on the R1 router (and also have the physical Mac host perform routing) or have our physicalMac host perform both the NAT and IP routing process. We will use the latter method.
NNoottee: A wwiirreedd (i.e., no Wi-Fi) Ethernet connection is required. As newer Mac laptops don't have a physical Ethernet port, the StarTechUSB31000S (Black) | USB31000SW (White) [http://forum.gns3.net/topic6143-30.html] is a viable solution.
## 66..11 IIPP RRoouuttiinnggYou may be thinking: How can my Mac route packets with only a single, active, physical network interface with a single IP address? Thinkvirtual. The ttaapp00 network interface is the link to our virtual network. It is the "other arm", so to speak. Get the current IP Routing configurationby running the following command in the terminal:
## 66..22 NNAATTStart the Network Address Translation (NAT) daemon with these options. The iinntteerrffaaccee parameter value being the wired Ethernet networkinterface that accesses the Internet.
If the value is 0, we can enable it with the ssyyssccttll utility.
$ sudo sysctl -‐w net.inet.ip.fw.enable=1
Add a firewall rule for the NAT daemon. Remember to modify the network interface value following the vviiaa token if need be.
$ sudo ipfw add divert natd ip from any to any via en000100 divert 8668 ip from any to any via en0
Verify the firewall rule has been added.
$ sudo ipfw show00100 10 622 divert 8668 ip from any to any via en065535 10390254 10716213934 allow ip from any to any
## 66..44 RR11 RRoouutteerrIOS for R1 will also need to be configured before R1 and the VMs can access the Internet.
Emulate a console connection by establishing a telnet session to the virtual device. In my configuration, R1 is listening on port 2101, so I runthe following command in the terminal:
$ telnet 127.0.0.1 2101
Enable DNS translation and set to the Google Public DNS.
R1# conf tR1(config)# ip domain-‐lookupR1(config)# ip name-‐server 8.8.8.8
And finally, add a static default route for any unknown destination. Use the ttaapp00 IP address for the next-hop IP address value. Also, save theconfiguration.
R1(config)# ip route 0.0.0.0 0.0.0.0 10.11.1.1R1(config)# endR1# copy run start
## 66..55 OOnnee MMoorree TTeessttThe moment of truth.
# mtr www.google.com
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
12 of 14 9/2/14 10:18 pm
11 comments
Top comments
Marc Weisel 4 months ago - IT Professionals (Career Advice\Training)
Create the ultimate virtual network with the latest #VMware Fusion and #GNS3 on your #Mac.
+56
Marc really wanted to thank you for your GNS3 info on using with Fusion and MAC to build labs!! I set it up last nightwith Cisco call manager and have already registered IPcommunicator and placed calls!! Very helpful!! I will be using thisto learn VOIP over the next few months! YOU ROCK!Read more
Todd Roy 2 months ago
+Todd Roy You're welcome, Todd! Thanks for the complimentary feedback.Marc Weisel 2 months ago
Marisol Glover via Google+ 4 months ago - Shared publicly
Marc Weisel originally shared thisCreate the ultimate virtual network with the latest #VMware Fusion and #GNS3 on your #Mac.
·
Reply
Chris Redding 2 weeks ago - Shared publicly
Is this type of integration not possible over the wifi connection?
Awesome article BTW...
·
Reply
Only the integration of the virtual network with the physical world (Step 6) may not work. I don't have the hardware (MacPro w/ no wireless network adapter) to test this, but I've read from multiple sources the wireless network adapter doesn'twork with this type of configuration. I encourage you to test it and reply with your results. Thanks.
Marc Weisel 2 weeks ago
Yassine el 1 month ago (edited) - Shared publicly
Thank you for your interesting tutoriel, but i still have some problem, like ping from windows -> router ( all the too interface) ,but ping from router -> windows dont work, do you have any idea ???
·
Is the Windows Firewall on for the Windows VM? If so, you will need to verify the 'File and Printer Sharing (Echo Request- ICMPv4-In)' rule is enabled.
Marc Weisel 1 month ago
Sherief El Hamalawy 4 months ago - Shared publicly
i know that this is more of a linux question, but everytime i try to setup an IP address on a linux host ( mostly debian based)either from GUI or from terminal, the IP wouldn't be configured. in other words, when i type ifconfig eth0 add 10.0.0.1
Add a comment
Reply
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...
13 of 14 9/2/14 10:18 pm
Integrate VMware Fusion with GNS3 on your Mac http://binarynature.blogspot.sg/2013/09/integrate-vmware-fus...