Назад | Перейти на главную страницу

Отдельная сеть LAN / DHCP для каждой виртуальной машины под одной и той же физической сетевой картой

У меня голый металлический сервер с двумя сетевыми адаптерами (eth0 и eth1). eth0 подключен к Интернету, а eth1 - к локальной сети (DHCP должен). Теперь мне нужно несколько таких серверов. Поэтому я решил перейти на виртуальную машину. Я установил 5 виртуальных машин под этим голым железом, каждая из них использует eth0 для Интернета и eth1 для LAN (DHCP).

Проблема здесь в том, что каждая виртуальная машина (eth1) предоставляет DHCP / IP всем устройствам под физическим eth1. Я хочу виртуализировать эту часть. Каждая виртуальная машина будет иметь отдельную сеть LAN DHCP eth1. Как этого добиться?

В зависимости от настройки (я не могу комментировать, но OP необходимо добавить детали, такие как используемая система виртуальной машины (VMWare, QEMU KVM и т. Д.), Сетевые интерфейсы или файлы netplan yaml для хоста и клиента), я предполагаю, что OP хочет, чтобы каждая виртуальная машина имела другой IP-адрес в одной сети.

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

Подход с использованием сетевых интерфейсов:

# Do not set an IP - bind IP to bridge
auto eno2
iface eno2 inet manual

# Bridge interface
auto br26eno2
iface br26eno2 inet static
      address 172.26.0.10
      netmask 255.255.255.0
      bridge_ports eno2
      gateway 172.26.0.201
      # Options for VM's:
      bridge_fd 0
      bridge_stp off
      bridge_fd 0
      bridge_maxwait 0

Netplan (в котором есть некоторые приколы относительно мостов, поэтому в основном для производства мы отключили и вместо этого использовали networkd):

ethernets:
    eno2:
      dhcp4: yes
      dhcp6: no
      # Don't wait for it to come up during boot.
      optional: true

bridges:
    br8eno1:
      interfaces: [ eno2 ]
      dhcp4: no
      dhcp6: no

Затем вы добавляете мосты к хосту виртуальной машины (libvirt использует XML-файл, который вы затем загружаете) и создаете клиентские интерфейсы.