OpenStack Networking Basics
OpenStack bietet die Möglichkeit Netzwerke nach Belieben zu erstellen. Dabei gibt es virtuelle Konstrukte, wie Network, Subnet, Ports und Router. Diese bilden die physische Struktur virtuell nach. Es können nahezu alle vorstellbaren Konstrukte der echten Welt, virtuell nachgebildet werden. Im Folgenden werden die wichtigsten Resourcen dargestellt.
Network
In einem Netzwerk werden Ports und Subnets gebunden. Das IPv6 Protokoll sieht LinkLokale IP Addressen (fe80::/64) für direkte Erreichbarkeit auf einem Link vor. Daher würde dies bereits reichen, um die Erreichbarkeit mehrerer Server zu gewährleisten. Das ist in den allermeisten Fällen natürlich aber nicht genug, wodurch auf einem Netzwerk mindestens ein Subnet erstellt werden muss.
~ : openstack network create mynetwork
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2025-04-08T13:56:11Z |
| description | |
| dns_domain | |
| id | 46d8a371-4243-4461-8e96-08a7f17d2ea8 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| mtu | 1500 |
| name | mynetwork |
| port_security_enabled | True |
| project_id | f7f8ed8191a048248c38982cd4b3d240 |
| provider:physical_network | None |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | f7f8ed8191a048248c38982cd4b3d240 |
| updated_at | 2025-04-08T13:56:11Z |
+---------------------------+--------------------------------------+
Subnets
IPv6 Subnet
Die Einrichtung eines IPv6 Subnets unterscheidet sich ein wenig von IPv4, da IPv6 kein NAT vorsieht und das Subnetz somit aus einem gobal eindeutigem Präfix bedient werden muss. Wenn Du einen eigenen IPv6 Präfix besitzt und diesen in unserem OpenStack verwenden möchtest, kannst du dies gerne machen. Unser MyEngineer ist gerne bereit, dabei zu unterstützen.
Für die gobalen Präfixe gibt es sogenannte SubnetPools. Diese werden bei der Anlage von Subnets referenziert und beziehen aus dem Pool ein /64-Subnetz. Die Addressierung der Server kann über dhcpv6-stateful, dhcpv6-stateless oder slaac geschehen. Die gängiste Art der Addressierung ist dabei slaac. Es gilt dabei zu beachten, dass per slaac leider aktuell kein Nameserver ausgeliefert werden kann. Dafür ist es notwendig den IPv6 Address Mode und RA Mode auf dhcpv6-stateless zu setzen.
~ : subnetpool=$(openstack subnet pool list -f value -c ID)
~ : openstack subnet create mynet6 \
--network mynetwork \
--ip-version 6 \
--subnet-pool "$subnetpool" \
--ipv6-address-mode slaac --ipv6-ra-mode slaac
+----------------------+----------------------------------------------------------+
| Field | Value |
+----------------------+----------------------------------------------------------+
| allocation_pools | 2a02:ed80:80:101::2-2a02:ed80:80:101:ffff:ffff:ffff:ffff |
| cidr | 2a02:ed80:80:101::/64 |
| created_at | 2025-04-08T13:59:56Z |
| description | |
| dns_nameservers | |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 2a02:ed80:80:101::1 |
| host_routes | |
| id | eba3de1d-831f-423b-96bd-7d593ef36bf2 |
| ip_version | 6 |
| ipv6_address_mode | slaac |
| ipv6_ra_mode | slaac |
| name | mynet6 |
| network_id | 46d8a371-4243-4461-8e96-08a7f17d2ea8 |
| project_id | f7f8ed8191a048248c38982cd4b3d240 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | 21661540-2488-44b2-807d-34a2ab6ab59f |
| tags | |
| updated_at | 2025-04-08T13:59:56Z |
+----------------------+----------------------------------------------------------+
IPv4 subnet
Das Provisionieren eines IPv4 Subnets gestaltet sich ähnlich wie bei IPv6, jedoch muss ein konkretes Subnetz angegeben werden. Aus diesem erhalten dann zukünftige Server ihre IP. Die Nutzung eines SubnetPools ist dennoch möglich und kann das Verwalten von vielen Subnetzen vereinfachen.
~ : openstack subnet create mynet \
--network mynetwork \
--dns-nameserver 8.8.8.8
--subnet-range 192.168.199.0/24 \
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| allocation_pools | 192.168.199.2-192.168.199.254 |
| cidr | 192.168.199.0/24 |
| created_at | 2025-04-08T13:58:05Z |
| description | |
| dns_nameservers | 8.8.8.8 |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 192.168.199.1 |
| host_routes | |
| id | 85ba3173-4f53-4bda-9919-d39ff33f347b |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | mynet |
| network_id | 46d8a371-4243-4461-8e96-08a7f17d2ea8 |
| project_id | f7f8ed8191a048248c38982cd4b3d240 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2025-04-08T13:58:05Z |
+----------------------+--------------------------------------+
Routing
Damit ein angeschlossener Server nun auch das Internet erreichen kann, muss ein Router erstellt und mit dem Netzwerk verbunden werden. Ein Router ist dabei immer an alle Subnetze anzuschließen.
Router Provisioning
~ : openstack router create --external-gateway public-network myrouter
+-------------------------+------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2025-04-09T04:49:31Z |
| description | |
| enable_ndp_proxy | None |
| external_gateway_info | {"network_id": "6f740510-e841-4e8e-8695-23e2e25c8c3d", "external_fixed_ips": [{"subnet_id": |
| | "2bda200d-c066-4e96-a25e-20e9739f8f4b", "ip_address": "185.11.253.52"}, {"subnet_id": "2df4fb3d-1ee5-47f7-b1aa-8aec963aec73",|
| | "ip_address": "2a02:ed80:80:0:f816:3eff:fe91:f845"}], "enable_snat": true} |
| flavor_id | None |
| id | 1e50fbab-5982-43f8-9b83-8c152e5147f8 |
| name | myrouter |
| project_id | f7f8ed8191a048248c38982cd4b3d240 |
| revision_number | 3 |
| routes | |
| status | ACTIVE |
| tags | |
| tenant_id | f7f8ed8191a048248c38982cd4b3d240 |
| updated_at | 2025-04-09T04:49:34Z |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------+
Subnet Attachments
~ : openstack network list --long -c ID -c Name -c Subnets
+--------------------------------------+---------------------------+----------------------------------------------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+---------------------------+----------------------------------------------------------------------------+
| 46d8a371-4243-4461-8e96-08a7f17d2ea8 | mynetwork | 85ba3173-4f53-4bda-9919-d39ff33f347b, eba3de1d-831f-423b-96bd-7d593ef36bf2 |
+--------------------------------------+---------------------------+----------------------------------------------------------------------------+
~ : openstack router add subnet 1e50fbab-5982-43f8-9b83-8c152e5147f8 85ba3173-4f53-4bda-9919-d39ff33f347b
~ : openstack router add subnet 1e50fbab-5982-43f8-9b83-8c152e5147f8 eba3de1d-831f-423b-96bd-7d593ef36bf2