У меня на днях спросили, как лучше организовать сеть на гипервизоре с одним внешним ip адресом для работы сайтов на виртуальной машине. Проблема тут очевидна, если адрес только один. Вам надо как-то управлять самим гипервизором и прочие службы сделать доступными по внешнему ip. Вариантов тут 2. Я в равной степени использую оба в зависимости от задач.
1️⃣ Более простой случай, особенно если у вас гипервизор на Linux. Сам гипервизор становится маршрутизатором для виртуальных машин. Настраиваете на нём firewall, nat и проброс нужных портов в виртуальные машины. В этом случае вообще не нужно трогать сетевые настройки на гипервизоре. Достаточно будет добавить один виртуальный интерфейс и подключать его виртуалкам. Через него они будут взаимодействовать с хостом.
Плюс тут очевиден - нет лишних сущностей, быстрая настройка. Есть значительный минус - у вас настройки хранятся на гипервизоре, что неудобно. Лучше, когда вся инфраструктура полностью в виртуалках, которые можно забэкапить и потом восстановить в том же виде на другом гипервизоре и всё сразу заработает. В этом же случае, придётся отдельно настраивать гипервизор.
2️⃣ Шлюзом для гипервизора и виртуальных машин выступает одна из виртуалок. Для подобной настройки на первое время понадобится прямой доступ через ip-kvm к консоли гипервизора, так как велика вероятность потери связи с хостом во время настройки. Когда я часто настраивал подобную схему, получалось всё провернуть быстро без потери связи, если нигде не ошибиться.
Для реализации вы делаете на хосте сетевой bridge, включая туда внешний интерфейс, на который приходит внешний ip. На самом гипервизоре настройки этого ip вообще не делаете. Также добавляете один виртуальный интерфейс.
Создаёте виртуалку, которая будет шлюзом. К ней подключаете бридж и виртуальный интерфейс. На бридже настраиваете внешний ip. На виртуалке какую-то локальную сеть для связи виртуальных машин и гипервизора. Далее настраиваете всё, что нужно обычному шлюзу - firewall, nat, проброс портов. Я обычно здесь же настраиваю vpn и proxy-nginx. По необходимости dhcp и dns.
Далее эту виртуальную машину делаете шлюзом по умолчанию для самого гипервизора и остальных виртуалок, используя адрес из локальной сети, настроенной на виртуальном интерфейсе. Важно не забыть добавить виртуалку со шлюзом в автозагрузку, чтобы после перезагрузки хоста не терять с ним связь.
В итоге у вас все важные настройки инфраструктуры окажутся на виртуальной машине и успешно забэкапятся. Потом всё разом можно настроить в любом другом месте. Достаточно будет только поменять сетевые настройки на новом гипервизоре.
3️⃣ Заказываете дополнительные адреса и не тратите время на сетевые настройки. Но если у вас инфраструктура будет состоять из нескольких гипервизоров и вам захочется их объединить по vpn, то отдельный шлюз все равно пригодится, даже если адресов в избытке.
Если реально заинтересовались второй схемой, то почитайте более подробное описание в
статье. Я там прям на конкретном примере с реального гипервизора показываю, как это на практике выглядит.
#виртуализация