Вам надо сделать проброску портов в ваши виртуальные машины.
Примерно так
-t nat -A PREROUTING --dst ВНЕШ_IP -p tcp --dport 3389 -j DNAT --to-destination IP_МАШИНЫ_В_ЛОКАЛЬНОЙ_СЕТИ:3389
Но я бы не стал выставлять наружу rdp порт.
Как вариант, можно сделать bridge и выдать машинам ip провайдера, но тогда надо 3 ip адреса.
Ну и еще на заметку, лучше не рассматривать работу VB, так как он в общем-то тормознутый.
Смотрите в сторону KVM, как вариант готового хост решения с админкой proxmox.com
В частности для linux можно будет использовать контейнер LXD или Docker и сэкономить ресурсы.
Win без вариантов в KVM.