Цель работы
Изучить принципы сегментации сети с помощью технологии VLAN, освоить установку и настройку Open vSwitch на отдельной виртуальной машине под управлением ALT Linux, а также получить практические навыки организации связи и изоляции между несколькими виртуальными машинами в среде Proxmox VE.
В ходе выполнения практической работы необходимо:
VLAN (Virtual Local Area Network) — технология логического разделения сети на отдельные сегменты.
Узлы в одной VLAN могут обмениваться трафиком, а узлы в разных VLAN без маршрутизации — нет.
Open vSwitch — программный коммутатор, который может работать на Linux-машине как полноценный сетевой коммутатор:
В данной работе одна виртуальная машина будет выполнять роль виртуального коммутатора.
Ожидается:
+----------------------------------+
| VM-SW (ALT Linux) |
| Open vSwitch br0 |
| |
| eth1 ---- Port VLAN 10 ---- VM1 |
| eth2 ---- Port VLAN 10 ---- VM2 |
| eth3 ---- Port VLAN 20 ---- VM3 |
+----------------------------------+
| Имя ВМ | Назначение | Количество сетевых интерфейсов |
|---|---|---|
| VM-SW | Коммутатор OVS | 4 |
| VM1 | Клиент 1 | 1 |
| VM2 | Клиент 2 | 1 |
| VM3 | Клиент 3 | 1 |
| Интерфейс VM-SW | Назначение |
|---|---|
| eth0 | Управление, доступ к сети/интернету |
| eth1 | Линия к VM1 |
| eth2 | Линия к VM2 |
| eth3 | Линия к VM3 |
| ВМ | VLAN | IP-адрес | Маска |
|---|---|---|---|
| VM1 | 10 | 192.168.10.11 | /24 |
| VM2 | 10 | 192.168.10.12 | /24 |
| VM3 | 20 | 192.168.20.13 | /24 |
Так как OVS должен быть отдельной виртуальной машиной, необходимо организовать отдельные каналы связи между:
Проще всего сделать это через три отдельные внутренние Linux Bridge в Proxmox, которые будут играть роль отдельных кабелей Ethernet.
Если все машины подключить к одному bridge PVE, они смогут общаться напрямую через гипервизор, что нарушит идею работы.
Поэтому для каждой клиентской ВМ создаётся свой отдельный внутренний мост, через который она будет подключаться только к VM-SW.
В веб-интерфейсе Proxmox:
vmbr10Нажмите Create.
Аналогично создайте ещё два моста:
vmbr11vmbr12Нажмите Apply Configuration.
Теперь у нас есть три изолированные сети:
vmbr10 — линия между VM-SW и VM1;vmbr11 — линия между VM-SW и VM2;vmbr12 — линия между VM-SW и VM3.Создайте новую виртуальную машину:
100vm-swУстановите на неё ALT Linux.
Для VM-SW необходимо добавить 4 сетевых интерфейса:
vmbr0Этот интерфейс нужен для:
vmbr10vmbr11vmbr12Если интерфейс при создании был только один, добавьте остальные через:
VM-SW → Hardware → Add → Network Device
Создайте виртуальную машину:
101vm1Установите ALT Linux.
vmbr10Создайте:
102vm2Сетевой интерфейс:
vmbr11Создайте:
103vm3Сетевой интерфейс:
vmbr12После этого схема должна быть такой:
vmbr10: соединяет только VM-SW (eth1) и VM1vmbr11: соединяет только VM-SW (eth2) и VM2vmbr12: соединяет только VM-SW (eth3) и VM3То есть VM1, VM2 и VM3 не могут общаться друг с другом напрямую через PVE — только через VM-SW.
Запустите VM-SW и войдите в систему.
Обновите список пакетов и установите OVS:
apt-get update
apt-get install openvswitch
Запустите службу:
systemctl enable --now openvswitch
Проверьте состояние:
systemctl status openvswitch
На VM-SW выполните:
ip a
Необходимо определить:
Предположим:
eth0 — управление через vmbr0eth1 — линия к VM1eth2 — линия к VM2eth3 — линия к VM3Если имена другие, замените их в командах ниже.
Создайте мост br0:
ovs-vsctl add-br br0
Проверьте:
ovs-vsctl show
Подключим три клиентских интерфейса к коммутатору:
ovs-vsctl add-port br0 eth1
ovs-vsctl add-port br0 eth2
ovs-vsctl add-port br0 eth3
Проверьте:
ovs-vsctl show
Теперь зададим VLAN:
eth1 → VLAN 10eth2 → VLAN 10eth3 → VLAN 20Команды:
ovs-vsctl set port eth1 tag=10
ovs-vsctl set port eth2 tag=10
ovs-vsctl set port eth3 tag=20
Проверим:
ovs-vsctl show
Ожидаемый вывод:
Bridge br0
Port eth1
tag: 10
Port eth2
tag: 10
Port eth3
tag: 20
На VM1 выполните:
ip a
Определите имя интерфейса, например eth0.
Создайте каталог:
mkdir -p /etc/net/ifaces/eth0
Создайте файл options:
vim /etc/net/ifaces/eth0/options
Содержимое:
BOOTPROTO=static
ONBOOT=yes
TYPE=eth
Создайте файл ipv4address:
vim /etc/net/ifaces/eth0/ipv4address
Содержимое:
192.168.10.11/24
Примените:
systemctl restart network
Проверка:
ip a
На VM2:
mkdir -p /etc/net/ifaces/eth0
vim /etc/net/ifaces/eth0/options
Содержимое:
BOOTPROTO=static
ONBOOT=yes
TYPE=eth
vim /etc/net/ifaces/eth0/ipv4address
Содержимое:
192.168.10.12/24
Применение:
systemctl restart network
На VM3:
mkdir -p /etc/net/ifaces/eth0
vim /etc/net/ifaces/eth0/options
Содержимое:
BOOTPROTO=static
ONBOOT=yes
TYPE=eth
vim /etc/net/ifaces/eth0/ipv4address
Содержимое:
192.168.20.13/24
Примените:
systemctl restart network
На VM1 выполните:
ping 192.168.10.12
Ожидаемый результат:
На VM2:
ping 192.168.10.11
Ожидаемый результат:
На VM1:
ping 192.168.20.13
Ожидаемый результат:
На VM2:
ping 192.168.20.13
Ожидаемый результат:
На VM3:
ping 192.168.10.11
ping 192.168.10.12
Ожидаемый результат:
На VM-SW выполните:
ovs-vsctl show
Также:
ip link show
После выполнения работы студент должен получить:
Изменить VLAN для порта eth3 на VLAN 10:
ovs-vsctl set port eth3 tag=10
После этого проверить, что VM3 сможет обмениваться пакетами с VM1 и VM2.
Добавить ещё одну клиентскую ВМ в VLAN 20.
Настроить межвлановую маршрутизацию через отдельную ВМ-маршрутизатор.
vmbr10, vmbr11, vmbr12?ovs-vsctl set port eth1 tag=10?br0 внутри VM-SW?