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?
How do you start in bridged mode and use the virtio accelerated network card/driver?
-netdev bridge,id=hn1 -device virtio-net-pci,netdev=hn1
You can also specify the mac, which is necessary as if you start multiple VMs they will default to the same MAC which breaks things of course
-netdev bridge,id=hn1 -device virtio-net-pci,netdev=hn1,mac="DE:AD:BE:EF:06:02"
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,