Я пытаюсь настроить несколько виртуальных машин на сервере с несколькими сетевыми интерфейсами через KVM и сетевые мосты. Идея состоит в том, чтобы иметь сервер Bind / ISC с IP-адресом на мосту № 1, который назначает IP-адреса и имена хостов различным виртуальным машинам и интерфейсам в одной сети.
Моя настройка выглядит следующим образом:
Internet Access
on eth0 +---------+
+--------------------->+eth0|eth2|
+---------+ Server #1
|eth1|eth3|
+-------+-+
|
+--------------+
| +----------+
+------->+eth0|| |
| +----------+ Server #2
Bind /ISC VM attach- | | || |
ed to eth2 on | +----------+
Server #1 serves IP's|
and Domain Names to |
other devices on an | +----------+
internal network +------->+eth0|| |
(eg. via DHCP) | +----------+ Server #3
| | || |
| +----------+
v
Я использовал сетевые мосты для подключения виртуальных машин на сервере № 1 к сети, чтобы каждая виртуальная машина получала свой собственный IP-адрес. Ранее я запускал мост на eth1 сервера # 1, чтобы подключить Vm к сети с исходящим доступом к Интернету, и при этом DHCP будет работать, и все виртуальные машины, а также мост будут получать IP-адреса от внешнего сервера DHCP на сеть. При этом с мостом на eth3 это не сработает. Подключение моста на eth3 к той же сети, что и доступ в Интернет, не назначит IP-адрес, мост даже не подключится как интерфейс внутри виртуальной машины.
Я использовал netplan для настройки интерфейсов как мостов:
network:
ethernets:
eth0:
dhcp4: true
eth1:
dhcp4: false
eth2:
dhcp4: true
eth3:
dhcp4: false
version: 2
bridges:
kvm-bridge:
interfaces: [ eth1]
dhcp4: yes
parameters:
stp: false #stp (bool) determines wether the bridge should use spanning tree protocol
forward-delay: 0
br-bind9:
interfaces: [ eth3]
dhcp4: yes
parameters:
stp: false
forward-delay: 0
Внутри моей виртуальной машины, когда подключены оба моста (kvm-bridge + br-bind9), будет отображаться только один интерфейс: ( вывод ifconfig)
ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet xx.xx.xx.xx netmask 255.255.255.0 broadcast xx.xx.xx.xx
inet6 fe80::5054:ff:fe94:5f65 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:94:5f:65 txqueuelen 1000 (Ethernet)
RX packets 6187 bytes 9240019 (9.2 MB)
RX errors 0 dropped 1433 overruns 0 frame 0
TX packets 4482 bytes 377955 (377.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 122 bytes 10582 (10.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 122 bytes 10582 (10.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
И я спрашиваю себя, почему. Есть ли лучший способ добиться того, чего я хочу? Мне действительно трудно найти понятные источники или документацию для virtio, для чего я пытаюсь достичь. Опять же, идея состоит в том, чтобы иметь внутреннюю сеть, в которой каждый сервер работал бы на виртуальных машинах вне каждого сетевого интерфейса, так что в основном все сетевые службы, такие как DHCP / DNS, могут быть виртуализированы. Решит ли Vlans мою проблему, вместо того, чтобы вмешиваться в физические связи?