Every virtual instance is automatically assigned a private IP address. You may optionally assign public IP addresses to instances. OpenStack uses the term "floating IP" to refer to an IP address (typically public) that can be dynamically added to a running virtual instance. OpenStack Compute uses Network Address Translation (NAT) to assign floating IPs to virtual instances.
If you plan to use this feature, you must add the
following to your nova.conf file
to specify which interface the nova-network service
will bind public IP addresses to:
public_interface=vlan100
Restart the nova-network service if you change
nova.conf while the service
is running.
By default, the IP forwarding is disabled on most of Linux distributions. The "floating IP" feature requires the IP forwarding enabled in order to work, you can check if the forwarding is enabled by running the following command:
$ cat /proc/sys/net/ipv4/ip_forward
0
Or using sysctl
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
In this example, the IP forwarding is disabled. You can enable it on the fly by running the following command:
$ sysctl -w net.ipv4.ip_forward=1
or
$ echo 1 > /proc/sys/net/ipv4/ip_forward
In order to make the changes permanent, edit the
/etc/sysctl.conf and update
the IP forwarding setting :
net.ipv4.ip_forward = 1
Save the file and run the following command in order to apply the changes :
$ sysctl -p
It is also possible to update the setting by restarting the network service. Here's an example for Ubuntu:
$/etc/init.d/procps.sh restart
Here's an example for RHEL/Fedora/CentOS:
$ service network restart
Nova maintains a list of floating IP addresses that are available for assigning to instances. Use the nova-manage floating create command to add entries to this list, as root.
For example:
# nova-manage floating create --ip_range=68.99.26.170/31
The following nova-manage commands apply to floating IPs.
nova-manage floating list: List the floating IP addresses in the pool.
nova-manage floating create [cidr]: Create specific floating IPs for either a single address or a subnet.
nova-manage floating delete [cidr]: Remove floating IP addresses using the same parameters as the create command.
Adding a floating IP to an instance is a two step process:
nova floating-ip-create: Allocate a floating IP address from the list of available addresses.
nova add-floating-ip: Add an allocated floating IP address to a running instance.
Here's an example of how to add a floating IP to a running instance with an ID of 12
$ nova floating-ip-create
+-----------------+-------------+----------+------+
| Ip | Instance Id | Fixed Ip | Pool |
+-----------------+-------------+----------+------+
| 68.99.26.170 | None | None | |
+-----------------+-------------+----------+------+
$ nova add-floating-ip 12 68.99.26.170
If the instance no longer needs a public address, remove the floating IP address from the instance and de-allocate the address:
$ nova remove-floating-ip 12 68.99.26.170
$ nova floating-ip-delete 68.99.26.170
The nova-network service can be configured to automatically allocate and assign a floating IP address to virtual instances when they are launched. Add the following line to nova.conf and restart the nova-network service
auto_assign_floating_ip=True
Note that if this option is enabled and all of the floating IP addresses have already been allocated, the nova boot command will fail with an error.

