1

I am wondering if the following product even exists. Here's my wish list:

Bootable CD with simple (XML, YAML) configuration allowing you to spin up multiple virtual hosts, each with their own IP and with basic services like HTTP or SMTP. It doesn't require anything more than a server responding (with default data or a HELO) to a request on a port.

Sample configuration:

<host>
  <name>alpha</name>
  <ip>192.168.1.1</ip> 
  <service>smtp</service>
</host>
<host>
  <name>bravo</name>
  <ip>192.168.1.2</ip> 
  <service>
    <protocol>http</protocol>
    <port>8080</port>
  </service>
</host>
<host>
  <name>charlie</name>
  <ip>192.168.1.2</ip> 
  <service>http</service> 
  <service>smtp</service>  
</host>

The Problem

I'd like to emulate a medium scale network (30 hosts) to test firewall and routing rules before deploying in a live environment. I don't care about network throughput, I just care that when I come in one interface I am firewalled and routed appropriately.

I could solve this with VMware (or some other virtualisation platform) but I feel like it's heavier than I need.

mlambie
  • 1,201
  • 2
  • 16
  • 22

2 Answers2

3

I use GNS3 for things like this. It's a desktop application, as opposed to a self-contained environment on its own bootable media, but it does pretty much what you're asking for. It's really popular with networking folks, since it can emulate some Cisco and Juniper hardware (you provide the OS images), but it also ties in with QEMU and VirtualBox, so you can work with Windows or Linux hosts as well.

Performance is nowhere near real hardware, but it was designed for lab use, not production use. It's decent if you don't go overboard with huge system images; IOS 12.2 IP-only images and Micro Core Linux have small memory footprints and are great for this.

James Sneeringer
  • 6,755
  • 23
  • 27
0

Depending on how virtual you want to get, you might be able to get this going with Linux VServer. It might be better to look to Vagrant with Chef/Puppet. Or Xen with a role script which can do things based on one of those <host> elements?

But I'm not aware of anything to do this stuff out of the box. :-(