Connecting Dynamips to your local network (OSX)

Connecting Dynamips to your local network (OSX)

Ever wanted direct network access to your Dynamips lab? Have you ever needed to lab something that used the SDM, but you run Dynamips under OSX? You may have noticed using NIO_gen_eth is broken under OS X, communication between the Dynamips IOS and the local Mac box itself is not working properly. There is a solution using a tun / tap interface in OS X.

Required Software

Since OS X does not include the tun/tap devices by default, we need to download a bit of software to create them. Luckily tuntaposx from SourceForge does just that for us. Go ahead and download it and install it. Once you do you should see the following. (Yes, this is on my Hackintosh)

hackpro:~ amattke$ ls /dev/tap*
/dev/tap0   /dev/tap10  /dev/tap12  /dev/tap14  /dev/tap2   /dev/tap4   /dev/tap6   /dev/tap8
/dev/tap1   /dev/tap11  /dev/tap13  /dev/tap15  /dev/tap3   /dev/tap5   /dev/tap7   /dev/tap9

Configuration

First, we need to create the tap interface, then we can bridge the router interface to this tap device. To create the tap, open the terminal and execute the following command. You will be prompted for your password to gain root privileges.

hackpro:~ amattke$ sudo ifconfig tap0 198.19.10.1 netmask 255.255.255.0

Now we can edit our Dynamips topology file and bridge the IOS interface to tap0.

[[Router R1]]
  model = 2611XM
  console = 2001
  autostart = False
  WIC0/0 = WIC-2T
  F0/0 = SW1 F1/1
  F0/1 = nio_tap:/dev/tap0
  S0/0 = FRSW 1

Finally, we can start the virutal router up and test the connection.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int f0/1
R1(config-if)#ip address 198.19.10.11 255.255.255.0
R1(config-if)#no shut
R1(config-if)#end
R1#ping 198.19.10.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 198.19.10.1, timeout is 2 seconds:
.!!!!

Further thoughts

Since this tap interface is a local point-to-point connection between your local machine and the dynamips router, you will not be able to access it from your Virtual Machines, or your laptop. Obviously this could be a problem… So, in order to enable packet routing on your Mac you will need to issue the following command.

sudo sysctl -w net.inet.ip.forwarding=1

Now, if your local virtual machine is using NAT it should find your dynamips router just fine. But, for anything non local, you will need to add a route somewhere. Either on the local machine, or on your core router, which is where I did it. I simply added a route to the internal IP of my mac for the 198.19.10.0/24 network. Simple enough, works great!

If you were looking for a method to allow your dynamips router to access the internet, we can enable nat on your mac for that network as well. The following will enable the firewall, setup natd, and finally add an ipfw rule…

sudo sysctl -w net.inet.ip.fw.enable=1
sudo natd -alias_address ${YOUR_MACs_IP} -interface ${MACs_INTERFACE} -use_sockets -same_ports -unregistered_only -dynamic -clamp_mss
sudo ipfw add divert natd ip from any to any via ${MACs_INTERFACE}

If you have any questions, as always, feel free to leave a comment and I’ll try to help out the best I can. Thanks!

comments powered by Disqus

Related Posts

Securing SSH against bruteforce attacks

Securing SSH against bruteforce attacks

This is one of the methods I’ve used in the past to secure a Linux host against brute force ssh attacks. While its not a perfect method, it does a good job of preventing 100s of …

Read More
CCIE Potential

CCIE Potential

INE published a great info-graphic on the earning potential of Cisco’s certifications and I felt the need to share it here. It covers a range of topics from average salaries on all …

Read More
Networking Field Day 13 –  Sneak Preview

Networking Field Day 13 – Sneak Preview

This is going to be a busy week for the Tech Field Day family. They have delegates en-route to Tech Field Day 12 this morning, and Wednesday the crew for Network Field day 13 …

Read More