找到CS4.3.2手动设置IP的代码与4.0.2版本的差异,4.3.2在默认网络规则会将非vm使用的IP做NAT屏蔽(ebtables),会导致手动设置不生效。而4.0版本是使用默认的ebtables规则(所有IP都可以配置)
实现代码在scripts\vm\network\security_group.py default_network_rules方法
实现代码在scripts\vm\network\security_group.py default_network_rules方法
4.3.2手动设置IP偶尔能生效,是个bug。如果要手动设置IP,先要设置ipset,然后放开ebtables的规则
ipset -A i-2-3-VM 10.6.32.24
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
ipset -A i-2-3-VM 10.6.32.24
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