为虚拟机客户机分配公共 IP

为虚拟机客户机分配公共 IP

我有一组虚拟机的公共 IP。每个唯一的公共 IP 都将分配给唯一的客户机。通过桥接网络,我与 KVM 机器共享 eth0。

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 分配给来宾网络接口?

答案1

刚刚找到了正确的方法。添加一个 etables 规则,以便具有接口 virtual-machine-0 的 vm guest 只能使用 ip 121.33.7.5。

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

相关内容