柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: 云计算
2017-06-10 14:04:12
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。