Hallo zusammen,
wie bereits erwähnt wurde, wurden die Labs mittels Qemu/KVM und Debian Jessie umgesetzt.
Wir haben dabei libvirt außen vor gelassen, da das ganze ohne libvirt einfacher zu automatisieren war.
Ein Configgenerator nimmt als Parameter die Menge der Lab-Netze an und generiert sowas:
/usr/bin/qemu-system-x86_64 -enable-kvm -name router_0_1 -m 512 -hda /dev/debian-vg/vm000 -device e1000,netdev=mgmt01,mac=00:bb:ff:ee:00:01 -netdev tap,id=mgmt01,ifname=mgmt01 -nographic -device e1000,mac=00:aa:ff:ee:00:00,netdev=lab-net-0.1 -netdev socket,id=lab-net-0.1,udp=127.0.0.1:2002,localaddr=127.0.0.1:2001 -device e1000,mac=00:aa:ff:ee:00:01,netdev=lab-net-0.4 -netdev socket,id=lab-net-0.4,udp=127.0.0.1:2007,localaddr=127.0.0.1:2008 -device e1000,netdev=ispa01,mac=00:cc:ff:ee:00:01 -netdev tap,id=ispa01,ifname=ispa01 &
sleep 1
/usr/bin/qemu-system-x86_64 -enable-kvm -name router_0_2 -m 512 -hda /dev/debian-vg/vm001 -device e1000,netdev=mgmt02,mac=00:bb:ff:ee:00:02 -netdev tap,id=mgmt02,ifname=mgmt02 -nographic -device e1000,mac=00:aa:ff:ee:00:00,netdev=lab-net-0.1 -netdev socket,id=lab-net-0.1,udp=127.0.0.1:2001,localaddr=127.0.0.1:2002 -device e1000,mac=00:aa:ff:ee:00:01,netdev=lab-net-0.2 -netdev socket,id=lab-net-0.2,udp=127.0.0.1:2004,localaddr=127.0.0.1:2003 -device e1000,netdev=ispb02,mac=00:cc:ff:ee:00:02 -netdev tap,id=ispb02,ifname=ispb02 &
sleep 1
/usr/bin/qemu-system-x86_64 -enable-kvm -name router_0_3 -m 512 -hda /dev/debian-vg/vm002 -device e1000,netdev=mgmt03,mac=00:bb:ff:ee:00:03 -netdev tap,id=mgmt03,ifname=mgmt03 -nographic -device e1000,mac=00:aa:ff:ee:00:00,netdev=lab-net-0.3 -netdev socket,id=lab-net-0.3,udp=127.0.0.1:2006,localaddr=127.0.0.1:2005 -device e1000,mac=00:aa:ff:ee:00:01,netdev=lab-net-0.2 -netdev socket,id=lab-net-0.2,udp=127.0.0.1:2003,localaddr=127.0.0.1:2004 &
sleep 1
/usr/bin/qemu-system-x86_64 -enable-kvm -name router_0_4 -m 512 -hda /dev/debian-vg/vm003 -device e1000,netdev=mgmt04,mac=00:bb:ff:ee:00:04 -netdev tap,id=mgmt04,ifname=mgmt04 -nographic -device e1000,mac=00:aa:ff:ee:00:00,netdev=lab-net-0.3 -netdev socket,id=lab-net-0.3,udp=127.0.0.1:2005,localaddr=127.0.0.1:2006 -device e1000,mac=00:aa:ff:ee:00:01,netdev=lab-net-0.4 -netdev socket,id=lab-net-0.4,udp=127.0.0.1:2008,localaddr=127.0.0.1:2007 &
sleep 1
Die sleep Anweisung ist dort, da wir ohne selbige im Startskript in eine Racecondition gelaufen sind und nach ca. 30VMs das Starten einer weiteren fehlschlug. Das viel uns natürlich erst am Samstag auf…
Die Festplatten waren als LVM logical volumes umgesetzt. Diese erlauben schnelles und Ressourcen schonendes clonen der Platten.
Die erste, und ggf. vierte Netzwerkkarte des Gastes sind im Host als mgmtXX bzw isp[ab]XX zugänglich. Im Host System wurden alle mgmtXX Interfaces in eine Bridge gehangen und die Bridge mit einer IPv6-Adresse versehen, sodass der Zugriff von außen über SSH möglich war. Die ISP interfaces wurden mit entsprechenden Bridges zu den beiden virtuellen Upstream ISPs verbunden.
Falls ihr euch nicht mehr genau an die Topologie erinnert: RTR1:eth1 <> RTR2:eth1, RTR2:eth2 <> RTR3:eth2, RTR3:eth1 <> RTR4:eth1, RTR4:eth2 <> RTR1:eth2. eth0 = Management, RTR1:eth3 = ISP-A, RTR2:eth3 = ISP-B
VG
takt