Skip to content

Reserve Public Subnets

Infomaniak Public Cloud allows users to reserve contiguous IP address blocks. This simplifies firewall configuration and remote access rules.

Warning

This feature is intended for advanced users. To request access to Subnet Pool, contact Infomaniak Support.


View Available Subnet Pools

List available IPv4 and IPv6 subnet pools:

$ openstack subnet pool list
+--------------------------------------+---------------------+-------------------+
| ID                                   | Name                | Prefixes          |
+--------------------------------------+---------------------+-------------------+
| a7c19bf9-37a9-4355-b47d-e5d9f24c3d1b | poolv6-selfservice1 | 2001:1600:11::/48 |
| ef6303c9-8614-4f3e-9c8a-346900b6c85b | poolv4-selfservice1 | 195.15.248.0/22   |
+--------------------------------------+---------------------+-------------------+

Reserve and Use an IPv4 Subnet

IPv4 self-service subnets support /28 (12 usable IPs) and /29 (4 usable IPs).
This is because:

  • One IP will be assigned to the virtual router (gateway).
  • Another IP will be used for DHCP.

For larger ranges, please contact Support.

Create Network and Subnet

# Create network
$ openstack network create mynetwork

# Create subnet from pool
$ openstack subnet create mysubnet \
  --network mynetwork \
  --subnet-pool poolv4-selfservice1 \
  --prefix-length 28 \
  --dns-nameserver 83.166.143.51 \
  --dns-nameserver 83.166.143.52 \
  --dhcp

Verify Subnet Configuration

$ openstack subnet show mysubnet \
  -c Name \
  -c cidr \
  -c allocation_pools \
  -c gateway_ip \
  -c enable_dhcp \
  -c dns_nameservers
+------------------+----------------------------+
| Field            | Value                      |
+------------------+----------------------------+
| allocation_pools | 195.15.248.2-195.15.248.14 |
| cidr             | 195.15.248.0/28            |
| dns_nameservers  | 83.166.143.51 83.166.143.52|
| enable_dhcp      | True                       |
| gateway_ip       | 195.15.248.1               |
+------------------+----------------------------+

Warning

The network is not routed until a virtual router is configured.

Configure Virtual Router

# Create router
$ openstack router create myrouter

# Associate subnet
$ openstack router add subnet myrouter mysubnet

# Set external gateway
$ openstack router set --external-gateway ext-provider1 myrouter

The ext-provider1 network is an externally routable provider network managed by Infomaniak.

List External Networks

$ openstack network list --external
+--------------------------------------+---------------+----------------------------------------------------------------------------+
| ID                                   | Name          | Subnets                                                                    |
+--------------------------------------+---------------+----------------------------------------------------------------------------+
| 0f9c3806-bd21-490f-918d-4a6d1c648489 | ext-floating1 | 209ce11b-68c0-465a-9938-1aba36b785fc, b724c3e2-3f08-4d09-ba65-7c41bf0f7872 |
| d4c06bf9-7cad-4a64-9a57-7882a3a3843d | ext-provider1 | 1ea84a3a-2989-4413-9517-b30570e657da, a9a293dc-95f2-4d48-b2e0-b2d298f86bdf |
+--------------------------------------+---------------+----------------------------------------------------------------------------+

Launch Instance

$ openstack server create \
  --network mynetwork \
  myinstance-1 \
  --key-name mykeypair \
  --flavor a1-ram2-disk20-perf1 \
  --image "Debian 11 bullseye"

Verify Instance Reachability

$ openstack server show myinstance-1 \
  -c name \
  -c addresses \
  -c image \
  -c id \
  -c status
+-----------+---------------------------------------+
| Field     | Value                                 |
+-----------+---------------------------------------+
| addresses | mynetwork=195.15.248.6                |
| id        | 8038dce0-bb19-4e03-9fe1-ad20c260c4aa  |
| image     | Debian 11 bullseye               |
| name      | myinstance-1                          |
| status    | ACTIVE                                |
+-----------+---------------------------------------+

$ ping 195.15.248.6
PING 195.15.248.6 (195.15.248.6) 56(84) bytes of data.
64 bytes from 195.15.248.6: icmp_seq=1 ttl=58 time=37.2 ms

View IP Usage

$ openstack port list \
  --network mynetwork \
  --long \
  -c ID \
  -c 'Fixed IP Addresses' \
  -c Status \
  -c 'Device Owner'
+--------------------------------------+-----------------------------------------------------------------------------+--------+--------------------------+
| ID                                   | Fixed IP Addresses                                                          | Status | Device Owner             |
+--------------------------------------+-----------------------------------------------------------------------------+--------+--------------------------+
| 2044bdd8-60f2-4338-bb9f-af9de4d57421 | ip_address='195.15.248.1', subnet_id='8ad80ee2-5e7e-4b97-a8ff-db11ffd4c4fe' | ACTIVE | network:router_interface |
| 42a10611-e668-44c6-a8a2-af06a6a87e60 | ip_address='195.15.248.2', subnet_id='8ad80ee2-5e7e-4b97-a8ff-db11ffd4c4fe' | ACTIVE | network:dhcp             |
| 564b3ac0-fea2-457b-964c-db815274f4dc | ip_address='195.15.248.6', subnet_id='8ad80ee2-5e7e-4b97-a8ff-db11ffd4c4fe' | ACTIVE | compute:nova             |
+--------------------------------------+-----------------------------------------------------------------------------+--------+--------------------------+

Billing Note

IPv4 subnets are billed upon reservation, regardless of usage. Gateway and DHCP IPs are included in the count.

Release Subnet

$ openstack subnet delete mysubnet

Note

Delete all associated ports before removing the subnet.


Reserve and Use an IPv6 Subnet

IPv6 subnet pools are free and support /64 subnets (18,446,744,073,709,551,616 IPs).

Create Network and Subnet

# Create network
$ openstack network create mynetwork-6

# Create IPv6 subnet
$ openstack subnet create mysubnet-6 \
  --ip-version 6 \
  --network mynetwork-6 \
  --use-default-subnet-pool \
  --dns-nameserver 2001:1600:0:aaaa::53:5 \
  --dns-nameserver 2001:1600:0:aaaa::53:6 \
  --ipv6-ra-mode dhcpv6-stateful \
  --ipv6-address-mode dhcpv6-stateful

Verify Subnet

+----------------------+------------------------------------------------------+
| allocation_pools     | 2001:1600:11:7::2-2001:1600:11:7:ffff:ffff:ffff:ffff |
| cidr                 | 2001:1600:11:7::/64                                  |
| dns_nameservers      | 2001:1600:0:aaaa::53:5, 2001:1600:0:aaaa::53:6       |
| enable_dhcp          | True                                                 |
| gateway_ip           | 2001:1600:11:7::1                                    |
| ipv6_address_mode    | dhcpv6-stateful                                      |
| ipv6_ra_mode         | dhcpv6-stateful                                      |
| name                 | mysubnet-6                                           |
| subnetpool_id        | a7c19bf9-37a9-4355-b47d-e5d9f24c3d1b                 |
+----------------------+------------------------------------------------------+

Warning

The network is not routed until a virtual router is configured.

Configure Virtual Router

# Create router
$ openstack router create myrouter-6

# Associate subnet
$ openstack router add subnet myrouter-6 mysubnet-6

# Set the external gateway
$ openstack router set --external-gateway ext-provider1 myrouter-6

Launch Instance

$ openstack server create \
  --key-name mykeypair \
  --flavor a1-ram2-disk20-perf1 \
  --image "Debian 11 bullseye" \
  --network mynetwork-6 \
  myinstance-2

Verify Instance

$ openstack server show myinstance-2 \
  -c name \
  -c addresses \
  -c image \
  -c id \
  -c status
+-----------+---------------------------------------+
| Field     | Value                                 |
+-----------+---------------------------------------+
| addresses | mynetwork-v6=2001:abc:abcd:cafe::1ed  |
| id        | 503737e8-cea4-4dbd-ace7-a080e57d825f  |
| image     | Debian 11 bullseye               |
| name      | myinstance-2                          |
| status    | ACTIVE                                |
+-----------+---------------------------------------+

Tip

Some OS images may not support IPv6 or DHCPv6. Use config-drive, user-data scripts, or SLAAC mode to assign IPv6 addresses at boot.


Reserve and Use a Dual-Stack Subnet

Combine IPv4 and IPv6 subnets in one network. IPv4 is billed; IPv6 is free.

Create Network and Subnets

# Create network
$ openstack network create mynetwork-2

# Create IPv4 subnet
$ openstack subnet create mysubnet-4 \
  --ip-version 4 \
  --network mynetwork-2 \
  --use-default-subnet-pool \
  --prefix-length 28 \
  --dns-nameserver 83.166.143.51 \
  --dns-nameserver 83.166.143.52 \
  --dhcp

# Create IPv6 subnet
$ openstack subnet create mysubnet-6 \
  --ip-version 6 \
  --network mynetwork-2 \
  --use-default-subnet-pool \
  --dns-nameserver 2001:1600:0:aaaa::53:5 \
  --dns-nameserver 2001:1600:0:aaaa::53:6 \
  --ipv6-ra-mode dhcpv6-stateful \
  --ipv6-address-mode dhcpv6-stateful

Verify Network

$ openstack network show mynetwork-2 \
  -c name \
  -c subnets \
  -c status
+---------+----------------------------------------------------------------------------+
| Field   | Value                                                                      |
+---------+----------------------------------------------------------------------------+
| name    | mynetwork-2                                                                |
| status  | ACTIVE                                                                     |
| subnets | 7018547e-9ab5-406f-8309-d123df768e0a, 7ddb5e56-5ce2-4bf3-bfaa-fc07bc11f529 |
+---------+----------------------------------------------------------------------------+

$ openstack subnet list --network mynetwork-2
+--------------------------------------+------------+--------------------------------------+---------------------+
| ID                                   | Name       | Network                              | Subnet              |
+--------------------------------------+------------+--------------------------------------+---------------------+
| 7018547e-9ab5-406f-8309-d123df768e0a | mysubnet-4 | 13c895bd-fdd3-4cd1-836c-9ff2c2b71bde | 195.15.248.16/28    |
| 7ddb5e56-5ce2-4bf3-bfaa-fc07bc11f529 | mysubnet-6 | 13c895bd-fdd3-4cd1-836c-9ff2c2b71bde | 2001:1600:11:2::/64 |
+--------------------------------------+------------+--------------------------------------+---------------------+

Configure Virtual Router

# Create router
$ openstack router create myrouter-2

# Associate both subnets
$ openstack router add subnet myrouter-2 mysubnet-4
$ openstack router add subnet myrouter-2 mysubnet-6

# Set external gateway
$ openstack router set --external-gateway ext-provider1 myrouter-2

The ext-provider1 network supports dual-stack routing.

Launch Instance

$ openstack server create \
  --key-name mykeypair \
  --flavor a1-ram2-disk20-perf1 \
  --image "Debian 11 bullseye" \
  --network mynetwork-2 \
  myinstance-3

Verify Instance

$ openstack server show myinstance-3 \
  -c name \
  -c addresses \
  -c image \
  -c id \
  -c status
+-----------+---------------------------------------------------+
| Field     | Value                                             |
+-----------+---------------------------------------------------+
| addresses | mynetwork-2=195.15.248.25, 2001:1600:11:2::134    |
| id        | a23a9aca-b6bf-40d4-984d-600b85b6cab0              |
| image     | Debian 11 bullseye                           |
| name      | myinstance-3                                      |
| status    | ACTIVE                                            |
+-----------+---------------------------------------------------+

Tip

Dual-stack is optional. You can assign a single IPv4 or IPv6 address by creating a specific port.

Create Single IPv6 Port

# Create port
$ openstack port create \
  --network mynetwork-2 \
  --fixed-ip subnet=mysubnet-6,ip-address=2001:1600:11:2::beef \
  v6-port1

# Launch instance using port
$ openstack server create \
  --key-name mykeypair \
  --flavor a1-ram2-disk20-perf1 \
  --image "Debian 11 bullseye" \
  --port v6-port1 \
  myinstance-4

Verify Single IPv6 Instance

$ openstack server show myinstance-4 \
  -c name \
  -c addresses \
  -c image \
  -c id \
  -c status
+-----------+---------------------------------------------------+
| Field     | Value                                             |
+-----------+---------------------------------------------------+
| addresses | mynetwork-2=2001:1600:11:2::beef                  |
| id        | 1f8f5022-e47d-4f53-8673-7ef6af0aad84              |
| image     | Debian 11 bullseye                           |
| name      | myinstance-4                                      |
| status    | ACTIVE                                            |
+-----------+---------------------------------------------------+