У меня есть (Hetzner) сервер с общедоступным IP, например. 123.123.123.123 и дополнительный IP, например. 456.456.456.456.
Я хочу обслуживать некоторые частные приложения веб-пространства на 123.123.123.123, включая скрытый главный сервер BIND для некоторых доменов, и связать гостевой KVM-сервер с 456.456.456.456 для некоторых общедоступных веб-пространств.
Можно ли сделать это, одновременно создав отдельную виртуальную сеть с libvirt, которая будет разрешать полные доменные имена для гостей? Эти гости должны иметь доступ к Интернету и иметь возможность иметь несколько полных доменных имен для каждого гостя, но не иметь собственных общедоступных IP-адресов. Я вижу документацию, в которой говорится, что добавление 192.168.122.1
к /etc/resolv.conf
на хосте позволит подключаться к гостям через их имя хоста локально, и я вижу некоторую информацию для libvirt относительно адресации, Вот, но я немного потерялся. Кажется, это должно быть возможно, но я что-то упускаю.
Нужно ли мне просто покупать IP-пространство для каждой виртуальной машины, к которой я хочу получить доступ через Интернет, или есть способ сделать это?
TL; DR Можно ли настроить виртуальную сеть с libvirt, которая будет разрешать полные доменные имена гостям из Интернета?
Короткий ответ: это невозможно.
Лучше использовать адреса IPv6 (которых много) для любого KVM, для которого не требуется доступ широкой публики. Любой межсерверный трафик будет нормально работать на IPv6, и все, например частные облачные сервисы, будет работать, пока ваш интернет-провайдер предлагает IPv6, что делает большинство (> 80%) интернет-провайдеров, и ваш клиент настроен на используйте его (а большинство из них).
Поэтому просто используйте сетевой мост с IPv6 на экземплярах KVM.
Для публичных требований настройте обратный прокси-сервер, такой как Nginx (рекомендуется), Pound, Squid, в качестве обратного прокси или Apache mod_proxy на IPv4 и обратный прокси для экземпляров IPv6 оттуда.
Есть и другие способы достижения этого, например SIIT-DC, но я мало об этом знаю.