Este comando do QEMU não precisa de acesso root:
qemu-system-x86_64 -m 3072 -smp 2 -hda Debian9.qcow2 -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22,hostfwd=tcp::9000-:9000
Quando adicionei a porta 443 e 80, preciso de acesso root:
sudo qemu-system-x86_64 -m 3072 -smp 2 -hda Debian9.qcow2 -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22,hostfwd=tcp::9000-:9000,hostfwd=tcp::443-:443,hostfwd=tcp::80-:80
Sem acesso root, recebo esta mensagem de erro:
qemu-system-x86_64: -netdev user,id=net0,hostfwd=tcp::5555-:22,hostfwd=tcp::9000-:9000,hostfwd=tcp::443-:443,hostfwd=tcp::80-:80: Could not set up host forwarding rule 'tcp::80-:80'
Isso significa que o acesso à porta TCP está protegido no software QEMU?
As portas < 1024 são privilegiadas e apenas um processo raiz (ou um processo com
CAP_NET_BIND_SERVICE
recursos no Linux) pode vincular um soquete a elas.O encaminhamento de host no qemu funciona pelo qemu ligando um soquete a uma porta na máquina host; se o processo qemu estiver sendo executado como um usuário normal sem caps extras, ele não poderá vincular a 80 ou 443.
Se você estiver no Linux, poderá contornar isso com o
setcap CAP_NET_BIND_SERVICE+ep /path/to/qemu-system-x86_64
, mas isso é algo que não recomendo.