У меня голый металлический сервер с двумя сетевыми адаптерами (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-файл, который вы затем загружаете) и создаете клиентские интерфейсы.