Группы безопасности данным сетевым режимом не поддерживаются.

Действия по настройке сети Open vSwitch выполняются в ОС СН под учетной записью администратора ОС СН с высоким уровнем целостности. Действия по по созданию виртуальных сетей в ПК СВ выполняются под учетной записью администратора ПК СВ.

Сети Open vSwitch создаются на базе программного коммутатора Open vSwitch.

Open vSwitch — программный многоуровневый коммутатор, обеспечивающий изоляцию сети с помощью сетей VLAN путем тегирования портов и фильтрацию базовой сети с помощью OpenFlow.

Архитектура OVS состоит из трех основных компонентов: базы данных, непосредственно программного коммутатора и управляющего контроллера. На каждом из физических серверов вместе с гипервизором располагаются собственные БД и коммутатор. Эти два компонента образуют отдельно стоящий коммутатор, информационно не связанный с другими программными коммутаторах на соседних физических серверах.

Настройка сервера виртуализации

Требования

Для настройки данного сетевого режима необходимо чтобы на каждом сервере виртуализации был установлен пакет openvswitch-switch (данный пакет размещен в базовом репозитории ОС СН).

Настройка

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

Пример

Сервер виртуализации, который направляет трафик виртуальных сетей через сетевой интерфейс enp0s8. Пример вывода после выполнения команды:

sudo ovs-vsctl show
c61ba96f-fc11-4db9-9636-408e763f529e Bridge "ovsbr0"
Port "ovsbr0"
Interface "ovsbr0" type: internal
Port "enp0s8"
Interface "enp0s8"
CODE

Общие настройки ПК СВ

Значение параметра VLAN_ID рассчитывается в соответствии с настройками, указанными в конфигурационном файле /etc/one/oned.conf.

Изменением данного параметра можно зарезервировать некоторые сети VLAN, и они не будут назначаться виртуальной сети. Можно также указать первый номер VLAN_ID. При создании новой изолированной сети находит свободный номер VLAN_ID из пула VLAN. Этот пул является глобальным, а также совместно используется с сетевым режимом 802.1Q VLAN.

В файле /var/lib/one/remotes/vnm/OpenNebulaNetwork.conf можно откорректировать параметр настройки arp_cache_poisoning, отвечающий за подключение правила предотвращения изменения кэша ARP (ARP Cache Poisoning).

После корректировки значения параметра arp_cache_poisoning необходимо выполнить команду onehost sync для применения изменений на всех серверах виртуализации.

Агрегирование физических интерфейсов

Для повышения пропускной способности и уровня отказоустойчивости в Open vSwitch коммутатор могут быть включены несколько физических интерфейсов с задействованной на них агрегацией по протоколу LACP (Link Aggregation Control Protocol). Выполняется на канальном уровне путем создания объединенного интерфейса (Bonding).

Для создания объединенного интерфейса на базе физических интерфейсов eth0 и eth1 необходимо выполнить следующую команду:

sudo ovs-vsctl add-bond ovs-sw0 bond0 eth0 eth1

После следует включить lacp на созданном объединенном интерфейсе:

sudo ovs-vsctl set port bond0 lacp=active

На этом настройка отказоустойчивости сетевых интерфейсов завершена.

Создание сети

Для создания сети Open vSwitch необходимо задать значения параметров физической сети, приведенных в таблице:

ПараметрЗначениеОбязательный
NAMEИмя сетиДА
VN_MADovswitchДА
PHYDEVИмя физического сетевого устройства, которое будет подключено к мостуДА
BRIDGEИмя сетевого моста, назначается по умолчанию onebr.<net_id> или onebr.<vlan_id>НЕТ
VLAN_IDИдентификационный номер сети VLAN. Будет сгенерирован, если не указан и для параметра AUTOMATIC_VLAN_ID установлено значение YESНЕТ
AUTOMATIC_VLAN_IDИгнорируется, если параметр VLAN_ID определен. Следует установить значение YES, если необходимо в автоматическом режиме генерировать идентификационный
номер сети VLAN
НЕТ
MTUМаксимальный передаваемый модуль данных (MTU) для сети Open vSwitchНЕТ

В интерфейсе командной строки

Пример

Создание сети Open vSwitch с использованием конфигурационного файла:

  1. Создать файл new-net.conf со следующим содержанием:
    # параметры физической сети
    NAME = "ovswitch_net"
    VN_MAD = "ovswitch"
    BRIDGE = vbr1
    VLAN_ID = 50 # optional
    # доступное адресное пространство
    AR=[TYPE = "IP4", IP = "172.16.1.100", SIZE = "100" ]
    # параметры контекстуализации
    NETWORK_ADDRESS = "172.16.1.0"
    NETWORK_MASK = "255.255.255.0"
    DNS = "172.16.1.1"
    GATEWAY = "172.16.1.1"
    CODE
  2. Выполнить команду:
    onevnet create new-net.conf
    Пример вывода после выполнения команды:
    ID: 1
    CODE

В веб-интерфейсе ПК СВ

Пример

  1. В меню слева выбрать пункт меню Сеть — Вирт.сети и на открывшейся странице Вирт.сети нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
  2. На открывшейся странице Создать Виртуальную сеть во вкладке Общие в поле Название задать наименование виртуальной сети.
  3. На странице Создать Виртуальную сеть во вкладке Конфигурация:
    • в поле Интерфейс сет.моста указать наименование сетевого моста, настроенного на сервере виртуализации;
    • в выпадающем списке Режим работы сети выбрать значение Open vSwitch;
    • в выпадающем списке VLAN ID выбрать значение Ручной номер VLAN;
    • в появившемся поле задать идентификационный номер сети VLAN: 50.
  4. На странице Создать Виртуальную сеть во вкладке Адреса задать начало и размер диапазона адресов;
  5. Если необходимо, на странице Создать Виртуальную сеть во вкладке Контекст задать сетевые настройки виртуальных машин, которые будут применены в ОС виртуальной машины.
  6. На странице Создать Виртуальную сеть нажать на кнопку Создать.

 Особенности конфигурирования

Конфигурация всех Open vSwitch коммутаторов, портов, настройки поддерживаемых протоколов хранятся в собственной базе данных OVS (OVSDB). В стандартной конфигурации в OVSDB существуют следующие таблицы:

  • Open_vSwitch — Cхема;
  • Bridge;
  • Port;
  • Interface;
  • Flow_Table — конфигурация OpenFlow;
  • QoS;
  • Mirror;
  • Controller — параметры подключения к контроллеру OpenFlow;
  • Manager — конфигурация OVSDB;
  • NetFlow;
  • SSL;
  • sFlow;
  • IPFIX;
  • Flow_Sample_Collector_Set

Изначально почти все таблицы пусты, так как конфигурация отсутствует. Утилита ovs-vsctl предоставляет интерфейс для внесения изменений в БД. Для внесения изменений используется команда вида:

sudo ovs-vsctl <команда> <таблица> <запись> <ключ=значение>

Для создания программного коммутатора с именем ovs-sw0 необходимо выполнить следующую команду:

sudo ovs-vsctl add-br ovs-sw0

После появляется возможность подключения ВМ. При этом ВМ, подключенные к ovs-sw0, будут работать в изолированной сети. Для того, чтобы предоставить им доступ к внешней сети, необходимо подключить к ovs-sw0 в качестве порта физический интерфейс eth0, выполнив команду:

sudo ovs-vsctl add-port ovs-sw0 eth0

Для того чтобы разрешить порту eth0 пропускать во внешнюю сеть трафик из определенных VLAN, необходимо выполнить команду:

sudo ovs-vsctl set port eth0 trunks=10,20,30,40,50

Ниже представлен список вариантов команд с параметрами вызова:

  • list <таблица> <запись>;
  • find <таблица> <условие>;
  • get <таблица> <запись> <ключ=значение>;
  • add <таблица> <запись> <ключ=значение>;
  • remove <таблица> <запись> <ключ=значение>;
  • clear <таблица> <запись> <ключ>;
  • create <таблица> <запись> <ключ=значение>;
  • destroy <таблица> <запись>;
  • wait-until <таблица> <запись> <ключ=значение>.

Для просмотра записей, присутствующих в таблице, описывающей порты, выполнить команду:

sudo ovs-vsctl list port

Для вывода списка портов, включенных в VLAN, необходимо выполнить команду:

sudo ovs-vsctl find port tag=10

Зеркалирование портов

ПК СВ предоставляет функцию зеркалирования сетевого интерфейса ВМ (NIC mirroring) в рамках платформы виртуализации.
Зеркалирование портов — технология дублирования пакетов с одного порта (сетевого интерфейса ВМ) на другой порт (сетевой интерфейс другой ВМ). Целевая ВМ может быть расположена локально (на том же узле виртуализации) либо удаленно по отношению к ВМ источника.

При создании сессии зеркалирования тип зеркалирования (локальное/удаленное) определяется автоматически по расположению ВМ-источника и ВМ-назначения. Если ВМ расположены на одном узле виртуализации, то устанавливается SPAN сессия на сетевом мосту, используемом этими ВМ. Если ВМ расположены на разных узлах виртуализации, то создается ERSPAN-туннель (ERSPAN over GRE) между узлами, при этом на удаленном узле осуществляется перенаправление трафика на порт целевой ВМ.

Настройка зеркалирования трафика ВМ с помощью интерфейса командной строки

Для создания новой сессии зеркалирования используется команда nic-mirror:

sudo onevm nic-mirror <vmid> <nicid> <dest_vmid> <dest_nicid>

где:

  • <vmid> — идентификатор ВМ источника для зеркалирования трафика;
  • <nicid> — идентификатор сетевого интерфейса источника для зеркалирования трафика;
  • <dest_vmid> — идентификатор целевой ВМ для зеркалирования трафика;
  • <dest_nicid> - идентификатор сетевого интерфейса точки назначения на целевой ВМ.

После успешного выполнения команды в шаблоны ВМ источника и назначения добавятся параметры нового зеркалирования и уникальный идентификатор сессии зеркалирования (MIRRORING_ID).

Для удаления сессии зеркалирования используется команда nic-unmirror:

sudo onevm nic-unmirror <vmid> <nicid> <MIRRORING_ID> 

где:

  • <vmid> — идентификатор ВМ источника для зеркалирования трафика;
  • <nicid> — идентификатор сетевого интерфейса источника для зеркалирования трафика;
  • <MIRRORING_ID> — уникальный идентификатор сессии зеркалирования.

Примеры

  1. Создание сессии зеркалирования:
sudo onevm nic-mirror 2 5 10 0

где:

    • 2 — идентификатор ВМ источника;
    • 5 — идентификатор сетевого интерфейса источника;
    • 10 — идентификатор ВМ назначения;
    • 0 — идентификатор сетевого интерфейса назначения.
  1. Удаление сессии зеркалирования:
    sudo onevm nic-unmirror 2 5 0
     где:
    • 2 — идентификатор ВМ источника;
    • 5 — идентификатор сетевого интерфейса источника;
    • 0 — идентификатор сессии зеркалирования.

Для ВМ источника и ВМ назначения доступен просмотр параметров зеркалирования с помощью команды:

sudo onevm show <vm_id>

Сессии зеркалирования отображаются в разделе NIC MIRRORING.

Настройка зеркалирования трафика ВМ в веб-интерфейсе ПК СВ

Для настройки зеркалирования трафика необходимо, чтобы ВМ источника и ВМ назначения имели хотя бы один подключенный сетевой интерфейс с режимом Open vSwitch.

Чтобы настроить зеркалирование трафика в веб-интерфейсе ПК СВ необходимо:

  1. В левом меню веб-интерфейса выбрать Экземпляры ВМВМ.
  2. На открывшейся странице выбрать из списка виртуальных машин источник для зеркалирования.
  3. На открывшейся странице ВМ:
    1. перейти на вкладку Сеть;
    2. в списке подключенных сетевых интерфейсов в колонке Действия нажать значок Зеркалирование.
  4. В открывшемся окне Добавить новое зеркалирование NIC выбрать Тип зеркалирования:
  5. На открывшейся странице:
    1. выбрать ВМ назначения для зеркалирования;
    2. в столбце Сетевой интерфейс целевой ВМ выбрать сетевой интерфейс точки назначения;
    3. нажать кнопку Добавить.

Созданные сессии зеркалирования отображаются в списке атрибутов NIC, раскрывающемся при нажатии флажка слева от поля идентификатора (ID) подключенного сетевого интерфейса.

Настройка зеркалирования трафика ВМ с помощью шаблона ВМ

Для определения параметров зеркалирования в шаблоне ВМ источника в свойствах сетевого интерфейса (NIC) добавляется новый атрибут MIRRORINGS, задающий идентификатор нового зеркалирования. Параметры зеркалирования задаются в атрибуте NIC_MIRRORING, где указываются идентификаторы ВМ и сетевого интерфейса (NIC) точки назначения, а также идентификатор NIC_MIRRORING_ID, на который ссылается сетевой интерфейс источника:

NIC = [
  MIRRORINGS = "0",
  NETWORK = "ovs_vnet",
  NETWORK_UNAME = "adminbrest",
  SECURITY_GROUPS = "0" ]
NIC_MIRRORING = [
  MIRRORING_DEST_NIC_ID = "0",
  MIRRORING_DEST_VM_ID = "10",
  NIC_MIRRORING_ID = "0" ]
CODE

Особенности конфигурирования

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

  • ПК СВ одновременно поддерживает возможность локального и удаленного зеркалирования. Пользователь может настроить зеркалирование трафика для одного источника в локальное и удаленное назначение одновременно через несколько сессий зеркалирования.
  • Зеркалирование сетевого интерфейса может быть настроено для ВМ в статусе ЗАПУЩЕНО (горячее подключение) и ВЫКЛЮЧЕНО (холодное подключение). 

    При горячем подключении зеркалирования для ВМ в статусе ЗАПУЩЕНО - целевая ВМ также должна быть в статусе ЗАПУЩЕНО.

  • Для корректной работы удаленного зеркалирования (ERSPAN) необходимо обеспечить использование одинакового максимального передаваемого модуля данных (MTU), не меньшего, чем MTU интерфейса-источника, на протяжении всего сетевого маршрута . 

    Для гарантированного избежания потерь пакетов - MTU на интерфейсе назначения должен быть больше MTU источника.

  • При использовании локального зеркалирования (SPAN) необходимо учитывать, что сетевой интерфейс назначения становится неактивным для доступа к целевой ВМ и может использоваться только для захвата сетевых пакетов. Для доступа к целевой ВМ по сети можно подключить и использовать второй сетевой интерфейс (NIC), который не будет иметь ограничений.

Миграция ВМ с настроенным зеркалированием

ВМ (источник/назначение) с настроенным зеркалированием может быть перенесена в Online/Offline режиме на другой сервер виртуализации. Миграция не влияет на настроенное зеркалирование, то есть, тип зеркалирования не меняется при миграции ВМ.

Для локального зеркалирования:

  • если обе ВМ (источник/назначение) мигрировали на один узел виртуализации - зеркалирование продолжает действовать без изменений;
  • если в результате миграции ВМ оказались на разных узлах виртуализации - зеркалирование становится неактивным (но не удаляется), в журнал oned.log выводится информационное сообщение о неактивной сессии зеркалирования.

Для удаленного зеркалирования:

  • если в результате миграции обе ВМ (источник/назначение) оказались на одном узле виртуализации - зеркалирование становится неактивным, в журнал oned.log выводится информационное сообщение о неактивной сессии зеркалирования;
  • если одна из ВМ мигрировала на новый узел виртуализации - зеркалирование становится неактивным, но продолжит работать, как только удаленная ВМ (то есть ВМ, находящаясь на удаленной стороне сессии зеркалирования) будет выключена и включена повторно.

Многоканальные сети VLAN (VLAN транкинг)

VLAN транкинг поддерживается путем добавления тега VLAN_TAGGED_ID: к элементу NIC в шаблоне ВМ или шаблоне виртуальной сети. Тег позволяет указать диапазон сетей VLAN, подлежащий тегированию, например, 1,10,30,32.

Правила OpenFlow

MAC-спуфинг

Данные правила предотвращают выход любого трафика с порта, если был изменен MAC-адрес.

Пример

in_port=<PORT>,dl_src=<MAC>,priority=40000,actions=normal
in_port=<PORT>,priority=39000,actions=normal
CODE


IP-захват

Данные правила предотвращают выход любого трафика с порта для IPv4, если не настроен IP-адрес для ВМ.

Пример

in_port=<PORT>,arp,dl_src=<MAC>priority=45000,actions=drop
in_port=<PORT>,arp,dl_src=<MAC>,nw_src=<IP>,priority=46000,actions=normal
CODE


Черные порты

Применяется одно правило на порт.

Пример

tcp,dl_dst=<MAC>,tp_dst=<PORT>,actions=drop
CODE


ICMP-игнорирование

С помощью данной настройки можно, например, заблокировать ping-запросы к ВМ.

Пример

icmp,dl_dst=<MAC>,actions=drop
CODE