CloudStack4.3.2手动设置虚拟机IP总结

CloudStack手动设置虚拟机IP总结

一、现象

CloudStack 4.2.0版本及后续版本,在界面增加每个虚拟可以设置辅助IP的功能。如果不在界面中设置辅助IP,而是直接在虚拟机手动设置IP,会导致该IP不生效的问题。

在CloudStack 4.2.0之前的版本是可以手动设置任意可用的IP。

二、实现机制

引起这个差异就是4.2.0版本的辅助IP功能引入的。4.2.0的实现机制是,默认网络规则会通过ebtables策略将非vm使用的IP做NAT屏蔽,这会导致若不配置ebtables规则,手动设置IP无效。而4.0版本则无该限制。

ebtables的规则实现代码在scripts\vm\network\security_group.py文件 default_network_rules方法。

三、实验

该实验就是模拟CloudStack配置辅助IP的步骤。

虚拟机i-2-3-VM通过DHCP获得的IP为10.6.32.19,现修改为10.6.32.24。

1、通过ipset增加第二个IP

ipset -A i-2-3-VM 10.6.32.24

通过ipsetlist命令查询

2、配置ebtables

ebtables-t nat -I i-2-3-VM-in-ips -p ARP --arp-ip-src 10.6.32.24 -j RETURN

ebtables-t nat -I i-2-3-VM-out-ips -p ARP --arp-ip-dst 10.6.32.24 -j RETURN

查询ebtables的nat表配置。

ebtables -t nat -L

3、手动将虚拟的IP修改为10.6.32.24,配置完成后,该IP可用。

四、结论

CloudStack 4.2.0及以后版本所管理的虚拟机,若需要手动设置IP,建议使用设置辅助IP功能;或者手动添加ipset和ebtablse的规则,再配置IP。

你可能感兴趣的:(cloudstack)