A tool for teaching and learning about systems, networks and security


Carlos Perez & David Perez



What is NETinVM?

NETinVM is a single VMware virtual machine image that contains, ready to run, a series of Kernel Virtual Machine (KVM) virtual machines which, when started, conform a whole computer network inside the VMware virtual machine. Hence the name NETinVM, an acronym for NETwork in Virtual Machine. NETinVM has been conceived mainly as an educational tool for teaching and learning about operating systems, computer networks and system and network security, but other uses are certainly possible.


NETinVM documentation is readily available as a separate document: "NETinVM-KVM documentation". Additionally, this paper (2016) at Springer Plus and freely available at describes and analyzes how it has been used in different teaching/learning scenarios. Finally, in July 2018, Carlos Pérez has started a personal blog (in spanish) to share experiences about using KVM at the University of Valencia.

Contact Information

You can contact us at:


Current version (July 23, 2018)

  • VMware image: kvm_2018-07-23_vmware_zip (ZIP file, 2,8 GB)
    • MD5: d17342c845841786a2d65f531d34a4f8

    • SHA256: 12fd6d2c1517d515cad4110b2ab690a9989b2d6727ab7c73801a015c9583a4ec

  • Known issues
    • KVM terminal size changes are not detected automatically. (A simple ENTER is enough to cause detection).

    • Rebooting a KVM machine gets the machine paused. So, it is recommended to shutdown KVM machines and then start them again.

  • Changelog from previous version:
    • Open vSwitch is used (instead of Linux bridges) for NETinVM networks.

    • Debian 9 is used (instead of Debian 8) for both base and the KVM machines.

    • KDE 5 is used in base (instead of KDE 4).

    • 'fw' KVM machine no longer does SNAT.

    • KVM machines now use a second disk for swap, so that back up and restore is more efficient.

Previous version (July 19, 2017)

  • VMware image: kvm_2017-07-19_vmware_zip (ZIP file, 3,6 GB)
    • MD5: 76118e6455c2f58f4f1db6c7efb4ddf4

    • SHA256: 1c8080fb2f4742790284b3ac8b116652b4adf0581a5433afd5399383e5f7f77f

  • Known issues
    • KVM terminal size changes are not detected automatically. (A simple ENTER is enough to cause detection).

  • Changelog from previous version:
    • KVM is used (instead of User-mode Linux) for nested virtualization

Older versions

November 3, 2016

  • VMware image: 2016-11-03_vmware_zip (ZIP file, 2,2 GB)
    • MD5: 3396d92f07d52471fa65b614086de396

    • SHA256: 922c5674f27bbc4612c3c1558ffc89c922077cbebdc682cf827a919bcdf514a1

  • Warning
    • This version (and all previous ones) use User-mode Linux for nested virtualization. For this reason, current documentation is no longer applicable. Documentation for UML versions of NETinVM is still available: NETinVM-UML documentation

  • Known issues
    • It is not recommended to use "shutdown -r now" in the UML machines. Instead, it is recommended to use "shutdown -h now" and, then, start the UML machine with "".

    • When UML terminals are resized, it is necessary to execute "resize" in the corresponding terminal.

  • Changelog from previous version:
    • UML operating system is now Debian 8

    • base operating system is Debian 8

    • "Kill all" added to facilitate cleanup when "Shutdown all" leaves UML processes running.

July 23, 2015

  • VMware image: 2015-07-23_vmware_zip (ZIP file, 2,3 GB)
    • MD5: 0a9812d77645228a483b39fada65dd76

    • SHA256: 1b95b52fac214b0e3f0dd4fba718920cfc327a252c2790d359fc6db7d274764f

  • Known issues:
    • Debian 6 (used in the UML machines) has reached "End of life" status on 29th of February 2016, so the repositories included in the NETinVM image are no longer valid.

      To overcome this problem:
      • The file "uml_machines_2016-04-01_14-19_apt-sources.tgz" can be used as a restoration file for the "Restore UML machines" procedure. (Note that this will discard all UML filesystem changes that the user could have done).

      • Alternatively, the following script can be run in each UML machine to update the repositories. ("").

  • Changelog from previous version:
    • base operating system is openSUSE 13.2

    • "Run_my_UMLs" added to facilitate running only selected UML machines.

    • "fw" modified to permit package repositories access from within DMZ machines.

January 28, 2013

  • VirtualBox image: 2013-01-28_vbox_zip (ZIP file, 2,8 GB)
    • MD5: 67105092096c3d2e1607bf06f1b5ea21

    • SHA256: 6d4490b14d9c82b1bab40c72f08b06897794c9dc827c2829631c93cf289e5a98

  • VMware image: 2013-01-28_vmware_zip (ZIP file, 3,4 GB)
    • MD5: 5da4430b34ada541d77f6a1333f0c627

    • SHA256: 8e95b5b807b1dd10d949983640e1e201ebdbae1242d0bc1b0b9310f9bdf7a74a

  • Changelog from previous version:
    • UML operating system is now Debian 6

    • base operating system is openSUSE 12.1

    • dnsmasq is used in base as DNS and DHCP server