Как раздать каждой виртуалке свой домен имея один белый IP?
Ставьте nginx на proxmox, и обратнопроксируйте внутрь виртуалок в зависимости от server_name.

Или второй вариант, nginx принимает коннекты на стандартном 80-ом порту, а потом в зависимости от доменного имени редиректит на домен1:8080, домен2:8081, и т.д. А уже эти порты напрямую прокинуты внутрь виртуалок. Nginx тоже может быть в какой-нибудь из виртуалок, главное 80-ый порт завести в неё.
Да особо никак, если протокол поддерживает распределение по доменам например как хттп то можешь поставить прокси нгинкс например и разделять
Если протокол не поддерживает как ssh например, то придется разным серверами пробрасывать разные порты ssh