我有一组虚拟机的公共 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