Configure manualmente uma VM para IP flutuante OpenStack

Às vezes preciso iniciar manualmente uma máquina virtual, mas fornecer a ela um IP flutuante como se fosse entregue pelo OpenStack (usando nova-network). Isso é apenas para testes rápidos e sujos.

Suponha que você tenha uma máquina virtual com o endereço IP 10.40.1.101 e deseja que ela tenha o endereço IP 10.20.0.101. Isso é o que você faria no controlador, presumindo que sua interface pública seja a eth3:

ip addr add 10.20.0.101/32 dev eth3
iptables
-t nat -A nova-network-OUTPUT -d 10.20.0.101/32 -j DNAT --to-destination 10.40.1.101
iptables
-t nat -A nova-network-PREROUTING -d 10.20.0.101/32 -j DNAT --to-destination 10.40.1.101
iptables
-t nat -A nova-network-float-snat -s 10.40.1.101/32 -o eth3 -j SNAT --to-source 10.20.0.101

Nota: Como o OpenStack não sabe que você entregou esse IP, ele pode entregá-lo a outra instância.