Я хочу создать службу, которая динамически создает виртуальные машины и назначает каждой виртуальной машине общедоступную DNS-запись, которая может быть полным доменом или поддоменом. Предположим, что все VMS находятся на одном хосте. На виртуальных машинах будут работать различные открытые службы TCP или UDP, использующие различные порты. У хоста есть один публичный IP-адрес.
Могу ли я использовать NAT для маршрутизации доменов к виртуальным машинам или мне нужно больше общедоступных IP-адресов для этой настройки?
Как это делают другие виртуализированные хостинговые компании? у них больше ip блоков?
Могу ли я использовать NAT для каких-либо действий с маршрутизацией доменов?
Нет, NAT не знает DNS.
Нужно ли мне больше публичных IP-адресов
Вам нужен один IP-адрес на каждый IP-адрес сервера: набор портов. Если все работает на разных портах, вы можете использовать один и тот же IP-адрес для всего. Напоминаем, что IP ничего не знает о DNS, а DNS ничего не знает о служебных портах (если приложение специально не поддерживает записи SRV, что по неизвестным мне причинам является безумной редкостью).
Как это делают другие виртуализированные хостинговые компании? у них больше ip блоков?
Либо приложение поддерживает DNS (например, HTTP, который использует заголовки уровня приложения; или TLS, который использует SNI, который похож на заголовок), либо они используют отдельные IP-адреса для каждого пункта назначения.