Как правильно настроить виртуальную сеть?

Добрый день. <br/> У меня есть несколько групп виртуальных машин, например: группа 1 включает веб-сервер, базу данных и брокера сообщений; группа 2 состоит из балансировщика, нескольких веб-серверов и базы данных. <br/> Все виртуальные машины подключены к мосту Open vSwitch и получают IP-адреса из хост-сети 192.168.1.0/24. <br/> Я хотел бы изолировать каждую из групп в отдельные виртуальные локальные сети, чтобы машины в одной группе могли общаться друг с другом, но не имели доступа к другим группам. При этом машины в группах должны получать адреса по DHCP из своих подсетей (например, 192.168.2.0/24 для группы 1 и 192.168.3.0/24 для группы 2). Также мне нужно, чтобы при необходимости можно было вывести машины в хост-сеть (например, балансировщик или веб-сервер) и обеспечить доступ к ним. Возможно ли это реализовать, и если да, то как?
  • 27 октября 2024 г. 15:52
Ответы на вопрос 3
Добрый день!

Да, ваша задача вполне реализуема. Для настройки изолированных виртуальных локальных сетей для разных групп виртуальных машин, вы можете использовать Open vSwitch вместе с VLAN или отдельными виртуальными сетями (например, с использованием tap-устройств). Давайте рассмотрим оба подхода:

### Подход с VLAN

1. **Создание VLAN**: Выберите уникальные VLAN ID для каждой группы. Например:
   - Группа 1: VLAN 10 (192.168.2.0/24)
   - Группа 2: VLAN 20 (192.168.3.0/24)

2. **Настройка Open vSwitch**: Создайте виртуальные порты с соответствующими VLAN ID. Например:
   ```bash
   ovs-vsctl add-br br-vlan10
   ovs-vsctl set bridge br-vlan10 vlan_mode=native-tagged
   ovs-vsctl add-port br-vlan10 vm_port1 tag=10
   ```

3. **Конфигурация DHCP**: Настройте DHCP-сервер для каждой из VLAN, чтобы выдавать IP-адреса в соответствующих подсетях:
   - Для VLAN 10 (группа 1) — 192.168.2.0/24
   - Для VLAN 20 (группа 2) — 192.168.3.0/24

4. **Изоляция сетей**: Поскольку VLAN обеспечивает уровень изоляции, виртуальные машины в одной VLAN не смогут общаться с виртуальными машинами в другой VLAN.

5. **Доступ к хост-сети**: Для доступа к хост-сети вам нужно будет настроить маршрутизатор или использовать анти-обратный NAT (если Open vSwitch находится на хосте) для достижения этих виртуальных машин из хост-сети. Альтернативно, вы можете создать дополнительный интерфейс на хосте с IP в одной из подсетей и настроить маршруты.

### Подход без VLAN

Если вы не хотите использовать VLAN, вы можете создать отдельные виртуальные сети с помощью Open vSwitch:

1. **Создание виртуальных сетей**:
   ```bash
   ovs-vsctl add-br br-group1
   ovs-vsctl add-br br-group2
   ```

2. **Добавление портов в мосты**:
   Для каждой виртуальной машины добавьте её к нужному мосту:
   ```bash
   ovs-vsctl add-port br-group1 vm1
   ovs-vsctl add-port br-group1 db1
   ovs-vsctl add-port br-group1 msg_broker
   
   ovs-vsctl add-port br-group2 lb1
   ovs-vsctl add-port br-group2 vm2
   ovs-vsctl add-port br-group2 db2
   ```

3. **Конфигурация DHCP**: Настройте отдельные DHCP-серверы для каждой из сетей, аналогично описанному выше.

4. **Маршрутизация для доступа к хост-сети**: Для доступа к хост-сети вам нужно будет настроить некоторые маршруты или использовать NAT.

### Использование NAT для доступа наружу

Если виртуальные машины в группах должны иметь возможность выходить в интернет или к хост-сети, вам придется потратить немного времени на настройку NAT на хосте. Обычно это делается с помощью iptables:

```bash
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
```

### Заключение

Таким образом, вы можете выбрать подходящий метод реализации изоляции сетей в зависимости от ваших нужд. VLAN часто предпочтительнее из-за большей гибкости и управления, но вы можете использовать и второй метод, если у вас есть ограничения по оборудованию или программному обеспечению. Не забудьте также установить правильные правила брандмауэра, если это необходимо.
Vlan же
СДСМ - курите.
Похожие вопросы