Как получить доступ к разными виртуальным машинам по одному IP с разных доменов?
Reverse poxy.
Можно на nginx'e, можно на Apache, что больш нравится.
Если мы говорим про http/https, то тебе нужен реверс прокси между роутером и виртуальными машинами, именно он умеет на основании домена роутить трафик. Если другой протокол - то все сложнее.

Без проси можно попробовать использовать разные порты на роутере.
1.domain.ru:80 > 123.23.23.23:8080> 192.168.1.1:80 UBIQUITI EdgeRouter Lite ERLite-3
2.domain.ru:80 > 123.23.23.23:8081 > 192.168.1.2:80 ESXi
3.domain.ru:80 > 123.23.23.23:8082 > 192.168.1.3:80 Ubuntu server
4.domain.ru:443 > 123.23.23.23:4431 > 192.168.1.4:443 Ubuntu server
5.domain.ru:443 > 123.23.23.23:4430> 192.168.1.5:443Ubuntu server