84. SDN в Proxmox

Начиная с с версии 8.1 Proxmox VE , основные пакеты SDN уже установлены по умолчанию. Однако всё равно ознакомимся с полным процессом установки и разберёмся что это такое и чем это может быть полезно.Для начала рассмотрим классическую "железную", т.е. аппаратную сеть.

Теория.

В обычной сети передачи данных есть разные как физические так и программные компоненты отвечающие за её работоспособность.

Физические компоненты:
  • раутеры (маршрутизаторы), свичи (коммутаторы), фаерволы, кабели.
Программные компоненты:
  • программное обеспечение на раутерах, свичах, и фаерволах, DNS и DHCP сервера.
Известно что Проксмокс являет собой гипервизор, т.е. среду в которой можно создавать виртуальные компьютеры, которые об этом не знают и "думают" что они обычные "железные". Однако что же происходит с сетью?
Хост проксмокса подключен в физическую сеть, по которой от не менее физического раутера (в домашней сети) получает адрес и вообще всю связь. Виртуальные машины подключены к не менее виртуальному мосту, который позволяет им всем пользоваться одним физическим сетевым интерфейсом (сетевой картой) и таким образом общаться с сетью.


Не трудно догадаться что при такой схеме, виртуальным машинам, для коммуникации между собой нужно "проходить" через раутер или другое оборудование находящееся за пределами физического хоста, на которым они расположены.

И возникает резонный вопрос - а зачем им для этой цели покидать свой виртуальный мир и выходить в физический, если они и так уже находятся в виртуальной среде?

И вот тут как раз на сцену выходит технология SDN - Software-Defined Networking или "Программно-определяемые сети". Это подход к управлению сетями, в котором управление всей инфраструктурой осуществляется через программное обеспечение. Что позволяет значительно упростить создание, настройку и управление сетями, особенно в сложных виртуализированных средах.


Проще говоря, SDN это виртуальный аналог обычной физической сети, со всеми её компонентами.

У обычного компьютера или сервера может быть больше одной сетевой карты? Конечно, любой уважающий себя и пользователя ноутбук имеет на борту как минимум одну беспроводную и одну обычную сетевые карты. А что тогда мешает виртуальному компьютеру иметь несколько сетевых интерфейсов?! 😀

И имея на борту вторую сетевую карту подключенную к SDN, виртуальная машина может общаться с другими соседями, даже если из хоста будет выдернут сетевой кабель.

SDN позволяет делать разные интересные и продвинутые вещи, как например вывод всех машин через свои компоненты к основному мосту и через него наружу.




В общем идея ясна. Подробности можно изучить в официальной документации. Ну и гугл с ютубом в нормальном мире никто не отменял, если хочется копнуть глубже.


Практика.

Как уже было сказано в начале статьи, начиная с Proxmox VE 8.1, основные пакеты SDN установлены по умолчанию. Если обновляетесь с более старой версии, выполните следующие шаги:

  1. Установите пакет libpve-network-perl на каждом узле:

    apt update
    apt install libpve-network-perl
  2. Убедитесь, что в конце файла /etc/network/interfaces указана строка:

    source /etc/network/interfaces.d/*

Примечание: Если первоначальная установка вашего Proxmox VE была сделана до версии 7.0, убедитесь, что пакет ifupdown2 также присутствует в системе.

Следующие шаги рекомендуется выполнить, даже если используется версия выше 8.1. Максимум будет сообщение что необходимый пакет уже установлен или настройка уже выполнена.

 Proxmox VE использует dnsmasq для выдачи IP-адресов через DHCP. Для включения этой функции выполните:

apt update  
apt install dnsmasq
systemctl disable --now dnsmasq

Для сложных маршрутизаций Proxmox использует проект FRRouting. Чтобы настроить маршрутизацию, установите пакет frr-pythontools:
apt update
apt install frr-pythontools


Приступим к настройке в интерфейсе. Для начала добавим новую простую зону.




Присвоим ей произвольное название и включим автоматическую раздачу адресов.


Теперь создадим виртуальную сеть внутри этой зоны. Так же с произвольным именем.


Внутри виртуальной сети создадим подсеть.




Настроим эту подсеть выдав ей произвольное адресное пространство, но отличающееся от нашей физической сети.

И выделим в ней произвольный пул динамических адресов.


После создания всех объектов можно обратить внимание что их статус отображается как новый.


Созданная зона тоже будет в таком же статусе.



А если зайти в основной раздел SDN, то там вообще никаких изменений не будет заметно.


Всё дело в том, что настройки SDN хоть и были созданы, но ещё не применены. Поэтому сделаем это.

После чего система призадумается на несколько секунд (в зависимости от ресурсов железа) и создаст то, о чём её просили.
Рекомендуется после установки SDN перезагрузить хост перед дальнейшим использованием.

Использование.

Теперь, при создании нового контейнера или виртуальной машины, можно выбирать что сетевая карта будет подключена не в мост по умолчанию, а в сеть SDN.



Кстати, шлюз по умолчанию для хостов в сети SDN это и есть сам проксмокс.


  • Видно что только что созданный контейнер получил первый свободный адрес из настроенного ранее DHCP пула.
  • Что у него есть связь со шлюзом.
  • Соединение по SSH так же работает.
  • Обратный пинг со шлюза на этот контейнер тоже есть.

Возьмём другой контейнер, который уже имеет один сетевой интерфейс подключенный к мосту по умолчанию, и добавим ему ещё один, который будет подключен в SDN (как и для физического компа, "железо" надо добавлять/убирать когда комп выключен).



Сделаем в нём похожие проверки.

  1. Видно что у него 2 интерфейса в разных сетях: SDN и обычная локальная сеть.
  2. Связь на первый контейнер через SDN проходит.
  3. Связь на какой-то хост в обычную сеть проходит.
  4. Связь через локальную сеть с проксмоксом есть.
  5. Связь с хостом проксмокса через SDN есть.

Вместо DHCP сервера используется IPAM (IP address management).

Это лишь поверхностное знакомство с технологией SDN. На деле, у неё в багаже очень много инструментов для создания и управления сложными сетями.

В качестве итоговой мысли и/или идеи для воплощения, пример схемы которую можно легко воплотить имея хост гипервизора с двумя сетевыми картами.

Комментарии