Организация сети Proxmox с одним внешним IP
Есть одиночный выделенный сервер с одним внешним IP под PVE. Он будет работать в связке с другими, но связь только через интернет по VPN. Тут есть 2 варианта организации сети:
1️⃣ Настраиваем на гипервизоре файрвол, NAT, возможно SDN с DHCP, пробрасываем порты в виртуальные машины и там настраиваем всё, что нужно. Например, VPN сервер.
➕ Простота и скорость настроек.
➖ Настраивать нужно сам гипервизор и потом бэкапить его настройки. Это осложняет перенос, если нужно переехать. Да и в целом концепция с настройками чего-то на самом гипервизоре не очень удобна. От уровня железа лучше абстрагироваться, перенося всё в виртуальные машины. Сам гипервизор становится точкой входа в инфраструктуру, что тоже не очень удобно и безопасно.
2️⃣ На гипервизоре настраивается виртуальная машина в роли шлюза. В неё прокидывается внешний IP адрес. Она становится шлюзом по умолчанию для всех виртуалок и самого гипервизора.
➕ Все настройки внутри VM, которую можно забэкапить и перенести. На гипервизоре настраивается только сеть и больше ничего. Внутри виртуальной машины можно настроить всё, что угодно, ни в чём себя не ограничивая. Это может быть CHR с RouterOS или OPNSense.
➖ Более сложные сетевые настройки и очень желательно постоянный доступ по IP-KVM. У некоторых провайдеров бывают проблемы с такой схемой из-за их особенностей сети. Если VM со шлюзом не поднимется по какой-то причине, доступа к гипервизору не будет.
Есть третий вариант - купить несколько IP адресов на один сервер. Если сервера дорогие, то экономить на IP смысла нет, лучше заказать. Это и проще, и функциональнее. Я так часто делал. Но если сервак бюджетный, то переплачивать за /29 или /28 подсеть, а с дедиками обычно сразу подсеть продают, не хочется. Там цена адресов может быть сопоставима с самим сервером.
Я настраивал сеть по второму примеру. Нарисовал схему, как это выглядит на практике, и прикрепил внизу. Пример взял с реально настроенного сервера. Пишу по шагам, как настраивал.
1️⃣ На железном сервере 1 сетевой интерфейс eth0 с IP адресом 45.95.177.210. Ставлю на этот сервер PVE. Доступ к веб интерфейсу, соответственно, по этому IP адресу.
2️⃣ Создаю на этом сервере бридж vmbr0 и добавляю в него интерфейс eth0. Сетевые настройки IP адреса из eth0 переношу в vmbr0. Делаю это напрямую в файле /etc/network/interfaces, так как через веб интерфейс PVE не получится.
3️⃣ Добавляю ещё один бридж vmbr1 без привязки к физическому интерфейсу. Этот бридж будет использоваться для связи виртуальных машин и гипервизора между собой.
4️⃣ Проверяю внимательно настройки и перезагружаю сервер. После перезагрузки он поднимется с двумя настроенными интерфейсами:
◽️vmbr0 - внешний IP адрес
◽️vmbr1 - локальный IP адрес
5️⃣ Создаю виртуальную машину под шлюз, подключаю к ней vmbr0 и vmbr1. Ставлю эту VM в автозагрузку, чтобы поднималась вместе с гипервизором.
6️⃣ Переношу настройки внешнего IP адреса с vmbr0 гипервизора на сетевой интерфейс VM, где подключен vmbr0. На vmbr1 настраиваю локальный IP адрес и убеждаюсь, что гипервизор и виртуалка видят друг друга.
7️⃣ Комментирую настройки внешнего IP адреса на гипервизоре, чтобы они остались только внутри VM.
8️⃣ Перезагружаю гипервизор и подключаюсь по внешнему IP к VM со шлюзом.
9️⃣ Настраиваю проброс портов со шлюза на гипервизор, чтобы к нему был доступ.
Схема полностью рабочая. Описывал её в своей старой статье по организации сети в PVE. В Selectel она нормально работает. Я ошибся с тем, что временно на VM во время настройки сделал выход в интернет через гипервизор, а потом забыл поменять шлюз по умолчанию. После перезагрузки терял доступ к гипервизору.
#proxmox #network