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

Authors: Carlos Perez & David Perez
Date: 2017-10-23


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 at Springer Plus and freely available at describes and analyzes how it has been used in different teaching/learning scenarios.

Contact Information

You can contact us at:


Current 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

Previous version (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.

Older versions

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