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

назначить общедоступные IP-адреса гостевым виртуальным машинам

У меня есть набор общедоступных IP-адресов для виртуальных машин. Каждый уникальный общедоступный IP-адрес должен быть назначен уникальному гостю. В мостовой сети я использую eth0 для KVM-машин.

Файл ifcfg-eth0 имеет конфигурацию:

DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
HWADDR=b8:ac:6f:65:31:e5
DNS1=8.8.8.8
TYPE=Ethernet

Файл ifcfg-br0 имеет конфигурацию:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=121.33.7.1
GATEWAY=121.33.7.0
NETMASK=255.255.255.0
DELAY=0
DNS1=8.8.8.8

Я использую сетевой файл libvirt по умолчанию, возвращается сводка по мосту

bridge name   bridge id         STP enabled interfaces
br0           8000.705240103540 no          eth0
                                            virtual-machine-0
                                            virtual-machine-1
                                            virtual-machine-2
                                            virtual-machine-3

Он отлично работает для гостя как с входящими, так и с исходящими подключениями. Но проблема с конфигурацией заключается в том, что если гость изменяет свой сетевой файл в виртуальной машине на другой доступный общедоступный IP-адрес, он сможет получить IP-адрес, который изначально не назначен его виртуальной машине. Как назначить конкретный публичный IP-адрес гостевому сетевому интерфейсу?

Просто нашел правильный способ сделать это. Добавьте команду etables, чтобы гостевая виртуальная машина с интерфейсом virtual-machine-0 могла использовать только ip 121.33.7.5.

ebtables -A FORWARD -i virtual-machine-0 -p IPv4 --ip-src ! 121.33.7.5 -j DROP