I am going to build this based on a series of small posts I've made as I feel much of the information is actually hard to find and piece together from the rest of the web.
What I'm going to focus on is how to use virtio as the NIC because if you don't you get very slow NIC speeds but with the virtio NIC model you basically get host speeds.
/usr/libexec/qemu-kvm -enable-kvm -smp 8 -m 16000 -net user -net nic,model=virtio -drive file=ubuntu-gpt2large.img,if=virtio
How do I specify local NAT network only?
By default if you don't specify "-net" as network type it defaults to user mode networking. Basically you get a standard NAT IP that allows the VM to surf the net, download etc.. but it's not possible to remotely access the VM.
How do specify my NIC as being virtio?
qemu, kvm, guidei, posts, ve, virtio, nic, speeds, usr, libexec, enable, smp, user, ubuntu, gpt, img, specify, nat, default, quot, defaults, mode, networking, ip, allows, vm, surf, download, etc, remotely,