{"id":19008,"date":"2023-11-01T00:52:42","date_gmt":"2023-10-31T21:52:42","guid":{"rendered":"https:\/\/kifarunix.com\/?p=19008"},"modified":"2024-05-01T22:18:39","modified_gmt":"2024-05-01T19:18:39","slug":"how-to-configure-openstack-networks-for-internet-access","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/how-to-configure-openstack-networks-for-internet-access\/","title":{"rendered":"How to Configure OpenStack Networks for Internet Access"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1062\" height=\"596\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access-1.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" class=\"wp-image-19080\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access-1.png?v=1698814805 1062w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access-1-768x431.png?v=1698814805 768w\" sizes=\"(max-width: 1062px) 100vw, 1062px\" \/><\/figure>\n\n\n\n<p>How would you configure <a href=\"https:\/\/docs.openstack.org\/neutron\/rocky\/admin\/intro-os-networking.html\" target=\"_blank\" rel=\"noreferrer noopener\">OpenStack networks <\/a>for Internet access? Internet access is crucial for various reasons within an OpenStack environment. VMs may need to download updates, access external repositories, or communicate with external services. Additionally, users and administrators often require internet connectivity for management and monitoring tasks. Therefore, establishing a robust network configuration that allows for secure and efficient internet access is fundamental to the overall functionality and usability of an OpenStack deployment. The purpose of this guide is to offer a comprehensive step-by-step explanation of the process involved in configuring OpenStack networks to enable Internet access, thereby guaranteeing complete connectivity and accessibility within your cloud infrastructure.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#configuring-open-stack-networks-for-internet-access\">Configuring OpenStack Networks for Internet Access<\/a><ul><li><a href=\"#key-components-involved\">Key Components Involved:<\/a><\/li><li><a href=\"#deploy-open-stack\">Deploy OpenStack<\/a><\/li><li><a href=\"#network-topology\">Network Topology<\/a><\/li><li><a href=\"#open-stack-nodes-network-configuration\">OpenStack Nodes Network Configuration<\/a><\/li><li><a href=\"#create-open-stack-networks\">Create OpenStack Networks<\/a><ul><li><a href=\"#create-open-stack-external-network\">Create OpenStack External Network<\/a><\/li><li><a href=\"#create-open-stack-internal-project-network\">Create OpenStack Internal Project Network<\/a><\/li><\/ul><\/li><li><a href=\"#create-open-stack-network-router\">Create OpenStack Network Router<\/a><\/li><li><a href=\"#attach-open-stack-networks-to-open-stack-router\">Attach OpenStack Networks to OpenStack Router<\/a><\/li><li><a href=\"#open-stack-network-namespaces\">OpenStack Network Namespaces<\/a><\/li><li><a href=\"#verify-open-stack-instances-internet-access\">Verify OpenStack Instances Internet Access<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"configuring-open-stack-networks-for-internet-access\">Configuring OpenStack Networks for Internet Access<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"key-components-involved\">Key Components Involved:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Neutron Networking Service:<\/strong>\n<ul class=\"wp-block-list\">\n<li>OpenStack Neutron is the networking component responsible for managing the networks and IP addresses used by VMs. Understanding Neutron&#8217;s features and capabilities is essential for effective network configuration.<\/li>\n\n\n\n<li>In an OpenStack deployment architecture, you have seperate nodes dedicated to host the OpenStack networking services. In our demo setup, we are hosting our OpenStack neutron on the controller node.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Router Setup:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Routers in OpenStack play a pivotal role in connecting internal networks to external networks, including the internet. This guide will delve into configuring routers to enable traffic flow between internal networks and the internet.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Floating IPs:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Floating IPs are public IP addresses assigned to VMs, enabling them to communicate with external networks. Proper allocation and management of floating IPs are crucial for internet connectivity.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Security Groups:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Security Groups act as virtual firewalls for VMs, controlling inbound and outbound traffic. Configuring security groups is integral to ensuring secure internet access while protecting the VMs from unauthorized access.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"deploy-open-stack\">Deploy OpenStack<\/h3>\n\n\n\n<p>For the purposes of demo, we are running a three node Openstack in our environment deployed using Kolla-Ansible.<\/p>\n\n\n\n<p>Check the guides below if you need setup OpenStack using Kolla-Ansible.<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/?s=deploy+kolla-ansible+openstack\" target=\"_blank\" rel=\"noreferrer noopener\">How to deploy OpenStack using Kolla-Ansible<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"network-topology\">Network Topology<\/h3>\n\n\n\n<p>In our basic multinode deployment, our architecture is depicted by the screenshot below;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"773\" height=\"509\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networking.png\" alt=\"\" class=\"wp-image-19059\" style=\"aspect-ratio:1.5513245033112584;width:820px;height:auto\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networking.png?v=1698727626 773w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networking-768x506.png?v=1698727626 768w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure>\n\n\n\n<p>We have the management network as 192.168.200.0\/24 and the network we will use to provide floating IPs as 10.100.0.0\/24.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"open-stack-nodes-network-configuration\">OpenStack Nodes Network Configuration<\/h3>\n\n\n\n<p>You can check our previous post on how deploy multinode OpenStack using Kolla-Ansible for <a href=\"https:\/\/kifarunix.com\/deploy-multinode-openstack-using-kolla-ansible\/#network-configurations-on-the-nodes\" target=\"_blank\" rel=\"noreferrer noopener\">how to setup networking on the OpenStack nodes<\/a>.<\/p>\n\n\n\n<p>Note that, we have also configured the controller node to act as a Linux router. If you are looking at how to configure a Linux system to function as Linux router, check our guide below;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/?s=linux+router\" target=\"_blank\" rel=\"noreferrer noopener\">Configure Linux as a Linux Router<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-open-stack-networks\">Create OpenStack Networks<\/h3>\n\n\n\n<p>There are different types of OpenStack networks each serving different purpose.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Provider Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Provider networks, also known as external networks, are connected to the physical network infrastructure outside the OpenStack environment. These networks are typically used for connecting VMs to the external world, such as the internet or other networks.<\/li>\n\n\n\n<li>Provider networks are essential for enabling VMs to access external resources, download updates, or communicate with external services.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Tenant (Project) Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Tenant networks are internal networks created by users or projects within OpenStack. Each project can have its own set of isolated networks. These networks are often associated with private IP address ranges, allowing VMs within the same project to communicate while being isolated from other projects.<\/li>\n\n\n\n<li>Tenant networks provide isolation between different projects or tenants within the OpenStack environment. They are suitable for creating segregated environments for different users or applications.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Flat Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>In a flat network, all devices share the same network segment and address space. VMs in a flat network can communicate with each other without the need for network address translation (NAT).<\/li>\n\n\n\n<li>Flat networks can be suitable for specific use cases where simplicity and flat addressing are preferred, such as in testing environments.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>VLAN (Virtual LAN) Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>VLAN networks use IEEE 802.1Q VLAN tagging to segment network traffic on the physical network. Each VLAN represents a separate logical network within a physical network, allowing multiple isolated networks to coexist on the same physical infrastructure.<\/li>\n\n\n\n<li>VLAN networks are commonly used when there is a need for network segmentation to enhance security and performance. They are widely used in enterprise environments.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>VXLAN (Virtual Extensible LAN) Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>VXLAN is a network virtualization technology that allows the creation of logical networks over an existing physical network. It extends Layer 2 networks beyond their traditional boundaries, providing network isolation for VMs.<\/li>\n\n\n\n<li>VXLAN networks are often used in scenarios where a large number of isolated networks are required, such as in multi-tenant environments. They help overcome the limitations of VLANs.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>GRE (Generic Routing Encapsulation) Networks:<\/strong>\n<ul class=\"wp-block-list\">\n<li>GRE is another network encapsulation protocol that creates tunnels for carrying network traffic between different locations. It allows the creation of overlay networks, similar to VXLAN.<\/li>\n\n\n\n<li>GRE networks are used when there is a need for overlay networks that can span across physical network boundaries. They are commonly used in virtual private cloud (VPC) setups.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-open-stack-external-network\">Create OpenStack External Network<\/h4>\n\n\n\n<p>You can create a network from Horizon dashboard or from the command line. To create an external network from horizon;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Login to the horizon dashboard<\/li>\n\n\n\n<li>Select the appropriate project from the drop down menu at the top left. <strong>Since we are creating an external network, we will use admin project<\/strong>.<\/li>\n\n\n\n<li>Thus, navigate to <strong>Admin<\/strong> &gt; <strong>Network<\/strong> &gt; <strong>Networks<\/strong> &gt; <strong>Create Network<\/strong>.<\/li>\n\n\n\n<li>In the&nbsp;Create Network&nbsp;Wizard;\n\n\n\n\n\n\n\n\n\n\n\n\n<ul class=\"wp-block-list\">\n<li>Network&nbsp;tab\n<ul class=\"wp-block-list\">\n<li>Network Name: define the name of the network<\/li>\n\n\n\n<li>Shared: Define whether the network can be shared with other projects. Only admin users are allowed to create shared networks.<\/li>\n\n\n\n<li>Provider network type. Various types of networks are stated above. So here, we will use <strong>flat<\/strong> network type.<\/li>\n\n\n\n<li>Physical network: Here, you need to define a physical network defined in the neutron. For example, we will use <strong>physnet1<\/strong>. This physical network (<strong>physnet1<\/strong>) is associated with our Linux bridge interface, br-ex, which we will use to provide floating IPs. See diagram above. This is also defined under the neutron <strong><code>\/etc\/kolla\/neutron-openvswitch-agent\/openvswitch_agent.ini<\/code><\/strong> config file, under <strong>[ovs]<\/strong> section as <strong><code>bridge_mappings = physnet1:br-ex<\/code><\/strong>.<\/li>\n\n\n\n<li>Admin State: The state to start the network in.<\/li>\n\n\n\n<li>Create Subnet: Select this check box to create a subnet.<\/li>\n\n\n\n<li>Specify the availability zone (nova by default).<\/li>\n\n\n\n<li>Leave MTU blank to use the default values.<br><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"660\" class=\"wp-image-19015\" style=\"width: 1080px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networks.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networks.png?v=1697518101 1454w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-networks-768x469.png?v=1697518101 768w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Subnet&nbsp;tab\n<ul class=\"wp-block-list\">\n<li>Creates a subnet associated with the network. You need to enter <strong>subnet name<\/strong>,  a valid &#8220;<strong>Network Address<\/strong>&#8221; and &#8220;<strong>Gateway IP<\/strong>&#8220;.<\/li>\n\n\n\n<li>If you did not enter the &#8220;<strong>Gateway IP<\/strong>&#8220;, the first value of a network will be assigned by default. Remember we are using our controller node, which also doubles up as the internal router as the gateway for this network.<\/li>\n\n\n\n<li>If you do not want gateway please check the &#8220;<strong>Disable Gateway<\/strong>&#8221; checkbox. For internet access, you definitely will need this!<br><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"421\" class=\"wp-image-19017\" style=\"width: 1080px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-network-subnet.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-network-subnet.png?v=1697518218 1650w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-network-subnet-768x299.png?v=1697518218 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-network-subnet-1536x599.png?v=1697518218 1536w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/li>\n\n\n\n<li>If you noticed, we set the gateway to our controller node ip. Remember we had set our controller to also act as a Linux route. Thus, ensure you configure the right gateway for your provider network. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Subnet Details&nbsp;tab\n<ul class=\"wp-block-list\">\n<li>Enable DHCP and define IP addresses allocation pool<\/li>\n\n\n\n<li>Set the DNS Name Servers<\/li>\n\n\n\n<li>If you have any custom routes, then define Host Routes.<br><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"517\" class=\"wp-image-19018\" style=\"width: 1080px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/network-subnet-details.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/network-subnet-details.png?v=1697518253 1598w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/network-subnet-details-768x368.png?v=1697518253 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/network-subnet-details-1536x735.png?v=1697518253 1536w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click <strong>Create<\/strong> to create the network.<\/li>\n<\/ul>\n\n\n\n<p>Your network will now appear under your networks section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1902\" height=\"491\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-external-networks.png\" alt=\"\" class=\"wp-image-19021\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-external-networks.png?v=1697518526 1902w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-external-networks-768x198.png?v=1697518526 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/openstack-external-networks-1536x397.png?v=1697518526 1536w\" sizes=\"(max-width: 1902px) 100vw, 1902px\" \/><\/figure>\n\n\n\n<p>Click on the network name to view more details.<\/p>\n\n\n\n<p>You can confirm the same from command line;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source $HOME\/kolla-ansible\/bin\/activate<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>source \/etc\/kolla\/admin-openrc.sh<\/code><\/pre>\n\n\n\n<p>List available networks;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack network list<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>+--------------------------------------+---------+--------------------------------------+\n| ID                                   | Name    | Subnets                              |\n+--------------------------------------+---------+--------------------------------------+\n| 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 | EXT_NET | f28bf31f-65d4-4ba0-b933-aa6e48366fb0 |\n+--------------------------------------+---------+--------------------------------------+\n<\/code><\/pre>\n\n\n\n<p>To see more details, get the ID of the network and show the details using <code><strong>openstack network show &lt;ID&gt;<\/strong><\/code> command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack network show 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+---------------------------+--------------------------------------+\n| Field                     | Value                                |\n+---------------------------+--------------------------------------+\n| admin_state_up            | UP                                   |\n| availability_zone_hints   |                                      |\n| availability_zones        | nova                                 |\n| created_at                | 2023-10-31T18:51:14Z                 |\n| description               |                                      |\n| dns_domain                | None                                 |\n| id                        | 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 |\n| ipv4_address_scope        | None                                 |\n| ipv6_address_scope        | None                                 |\n| is_default                | False                                |\n| is_vlan_transparent       | None                                 |\n| mtu                       | 1500                                 |\n| name                      | EXT_NET                              |\n| port_security_enabled     | True                                 |\n| project_id                | b06556ca186746ff97b6b51faf83129b     |\n| provider:network_type     | flat                                 |\n| provider:physical_network | physnet1                             |\n| provider:segmentation_id  | None                                 |\n| qos_policy_id             | None                                 |\n| revision_number           | 2                                    |\n| router:external           | External                             |\n| segments                  | None                                 |\n| shared                    | True                                 |\n| status                    | ACTIVE                               |\n| subnets                   | f28bf31f-65d4-4ba0-b933-aa6e48366fb0 |\n| tags                      |                                      |\n| tenant_id                 | b06556ca186746ff97b6b51faf83129b     |\n| updated_at                | 2023-10-31T18:51:14Z                 |\n+---------------------------+--------------------------------------+\n<\/code><\/pre>\n\n\n\n<p>Check the subnets;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack subnet list<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>+--------------------------------------+------------+--------------------------------------+---------------+\n| ID                                   | Name       | Network                              | Subnet        |\n+--------------------------------------+------------+--------------------------------------+---------------+\n| f28bf31f-65d4-4ba0-b933-aa6e48366fb0 | EXT_SUBNET | 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 | 10.100.0.0\/24 |\n+--------------------------------------+------------+--------------------------------------+---------------+\n<\/code><\/pre>\n\n\n\n<p>To see more details, use the command, <strong><code>openstack subnet show &lt;ID&gt;<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack subnet show f28bf31f-65d4-4ba0-b933-aa6e48366fb0<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+----------------------+--------------------------------------+\n| Field                | Value                                |\n+----------------------+--------------------------------------+\n| allocation_pools     | 10.100.0.150-10.100.0.250            |\n| cidr                 | 10.100.0.0\/24                        |\n| created_at           | 2023-10-31T18:51:14Z                 |\n| description          |                                      |\n| dns_nameservers      | 8.8.8.8                              |\n| dns_publish_fixed_ip | None                                 |\n| enable_dhcp          | True                                 |\n| gateway_ip           | 10.100.0.100                         |\n| host_routes          |                                      |\n| id                   | f28bf31f-65d4-4ba0-b933-aa6e48366fb0 |\n| ip_version           | 4                                    |\n| ipv6_address_mode    | None                                 |\n| ipv6_ra_mode         | None                                 |\n| name                 | EXT_SUBNET                           |\n| network_id           | 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 |\n| project_id           | b06556ca186746ff97b6b51faf83129b     |\n| revision_number      | 0                                    |\n| segment_id           | None                                 |\n| service_types        |                                      |\n| subnetpool_id        | None                                 |\n| tags                 |                                      |\n| updated_at           | 2023-10-31T18:51:14Z                 |\n+----------------------+--------------------------------------+\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-open-stack-internal-project-network\">Create OpenStack Internal Project Network<\/h4>\n\n\n\n<p>Next, you need to create internal networks for your respective projects. Project networks provide isolation between different projects or tenants. This ensures that the resources (e.g., instances, routers, and networks) created within a project are segregated from those in other projects.<\/p>\n\n\n\n<p>To create an internal network:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Select your appropriate project<\/li>\n\n\n\n<li>Navigate to <strong>Networks<\/strong> &gt; <strong>Network<\/strong> &gt; <strong>Create Network<\/strong>.<\/li>\n\n\n\n<li>Network tab:\n<ul class=\"wp-block-list\">\n<li>Define the name of the network<\/li>\n\n\n\n<li>Check the &#8220;Enable admin state&#8221; to enable the network<\/li>\n\n\n\n<li>Leave shared as unchecked.<\/li>\n\n\n\n<li>Enable Create Subnet.<\/li>\n\n\n\n<li>Leave MTU blank to use defaults.<br><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"389\" class=\"wp-image-19024\" style=\"width: 820px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network.png?v=1697519802 1476w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-768x364.png?v=1697519802 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Subnet tab\n<ul class=\"wp-block-list\">\n<li>Define the subnet<\/li>\n\n\n\n<li>The network address CIDR<\/li>\n\n\n\n<li>IP version<\/li>\n\n\n\n<li>Default gateway. We leave this blank so it uses <strong>.1<\/strong> of the network automatically.<br><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"347\" class=\"wp-image-19025\" style=\"width: 820px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet.png\" alt=\"\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet.png?v=1697519831 1528w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet-768x325.png?v=1697519831 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Subnet Details&nbsp;tab\n<ul class=\"wp-block-list\">\n<li>Enable DHCP and define IP addresses allocation pool<\/li>\n\n\n\n<li>Set the DNS Name Servers<\/li>\n\n\n\n<li>If you have any custom routes, then define Host Routes.<br><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"424\" class=\"wp-image-19026\" style=\"width: 820px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet-details.png\" alt=\"\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet-details.png?v=1697519850 1395w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-internal-network-subnet-details-768x397.png?v=1697519850 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click <strong>Create<\/strong> to create the network.<\/li>\n<\/ul>\n\n\n\n<p>The network will now appear under Networks section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1896\" height=\"509\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/networks.png\" alt=\"\" class=\"wp-image-19029\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/networks.png?v=1697520024 1896w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/networks-768x206.png?v=1697520024 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/networks-1536x412.png?v=1697520024 1536w\" sizes=\"(max-width: 1896px) 100vw, 1896px\" \/><\/figure>\n\n\n\n<p>You can check the details from the command line as shown above.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-open-stack-network-router\">Create OpenStack Network Router<\/h3>\n\n\n\n<p>Next, we need a router to connect internal networks to the external network.<\/p>\n\n\n\n<p>Thus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Select your appropriate project and navigate to project &gt; <strong>Networks<\/strong> &gt; <strong>Routers<\/strong> &gt; <strong>Create Router<\/strong>.<\/li>\n\n\n\n<li>Enter the name of the router and enable it.<\/li>\n\n\n\n<li>Select the external network and enable SNAT.<\/li>\n\n\n\n<li>Create the router.<br><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"321\" class=\"wp-image-19030\" style=\"width: 820px;\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-a-network-router.png\" alt=\"\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-a-network-router.png?v=1697538820 1495w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/create-a-network-router-768x301.png?v=1697538820 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click <strong>Create<\/strong> to create the network router.<\/li>\n<\/ul>\n\n\n\n<p>Your router should now be listed under routers section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1894\" height=\"478\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/routers.png\" alt=\"\" class=\"wp-image-19031\" style=\"aspect-ratio:3.9623430962343096;width:820px;height:auto\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/routers.png?v=1697538919 1894w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/routers-768x194.png?v=1697538919 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/routers-1536x388.png?v=1697538919 1536w\" sizes=\"(max-width: 1894px) 100vw, 1894px\" \/><\/figure>\n\n\n\n<p>Click on the name of the router to view more details.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1871\" height=\"591\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/router-details.png\" alt=\"\" class=\"wp-image-19032\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/router-details.png?v=1697539450 1871w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/router-details-768x243.png?v=1697539450 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/router-details-1536x485.png?v=1697539450 1536w\" sizes=\"(max-width: 1871px) 100vw, 1871px\" \/><\/figure>\n\n\n\n<p>Similarly, you can use command line to get a list of routers you have;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack router list<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>+--------------------------------------+---------+--------+-------+----------------------------------+-------------+-------+\n| ID                                   | Name    | Status | State | Project                          | Distributed | HA    |\n+--------------------------------------+---------+--------+-------+----------------------------------+-------------+-------+\n| 1dd5ffa8-3a81-47ce-af13-c61eb5511f2a | DEMO_R1 | ACTIVE | UP    | b06556ca186746ff97b6b51faf83129b | False       | False |\n+--------------------------------------+---------+--------+-------+----------------------------------+-------------+-------+\n<\/code><\/pre>\n\n\n\n<p>To list more details (Replace the ID accordingly);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack router show 1dd5ffa8-3a81-47ce-af13-c61eb5511f2a<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Field                   | Value                                                                                                                                                                                    |\n+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| admin_state_up          | UP                                                                                                                                                                                       |\n| availability_zone_hints |                                                                                                                                                                                          |\n| availability_zones      | nova                                                                                                                                                                                     |\n| created_at              | 2023-10-31T19:18:51Z                                                                                                                                                                     |\n| description             |                                                                                                                                                                                          |\n| distributed             | False                                                                                                                                                                                    |\n| enable_ndp_proxy        | None                                                                                                                                                                                     |\n| external_gateway_info   | {\"network_id\": \"6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41\", \"external_fixed_ips\": [{\"subnet_id\": \"f28bf31f-65d4-4ba0-b933-aa6e48366fb0\", \"ip_address\": \"10.100.0.176\"}], \"enable_snat\": true} |\n| flavor_id               | None                                                                                                                                                                                     |\n| ha                      | False                                                                                                                                                                                    |\n| id                      | 1dd5ffa8-3a81-47ce-af13-c61eb5511f2a                                                                                                                                                     |\n| interfaces_info         | []                                                                                                                                                                                       |\n| name                    | DEMO_R1                                                                                                                                                                                  |\n| project_id              | b06556ca186746ff97b6b51faf83129b                                                                                                                                                         |\n| revision_number         | 3                                                                                                                                                                                        |\n| routes                  |                                                                                                                                                                                          |\n| status                  | ACTIVE                                                                                                                                                                                   |\n| tags                    |                                                                                                                                                                                          |\n| tenant_id               | b06556ca186746ff97b6b51faf83129b                                                                                                                                                         |\n| updated_at              | 2023-10-31T19:18:51Z                                                                                                                                                                     |\n+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"attach-open-stack-networks-to-open-stack-router\">Attach OpenStack Networks to OpenStack Router<\/h3>\n\n\n\n<p>Next, you need to attach internal network interface to the route. As you can see above, an IP in the external network has already been assigned to the router.<\/p>\n\n\n\n<p>To attach an internal network interface with an IP from that network to the router, <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click the name of the respective router to open more settings.<\/li>\n\n\n\n<li>Click on <strong>Interfaces<\/strong> tab &gt; <strong>Add Interface<\/strong>.<\/li>\n\n\n\n<li>Select the network subnet on which to attach an interface<\/li>\n\n\n\n<li>Set the IP address of the interface. If you don&#8217;t specify an IP address here, the gateway&#8217;s IP address of the selected subnet will be used as the IP address of the newly created interface of the router.<\/li>\n\n\n\n<li><strong>Submit<\/strong> when done.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1889\" height=\"553\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/attach-internal-network-to-the-router.png\" alt=\"\" class=\"wp-image-19033\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/attach-internal-network-to-the-router.png?v=1697539690 1889w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/attach-internal-network-to-the-router-768x225.png?v=1697539690 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/attach-internal-network-to-the-router-1536x450.png?v=1697539690 1536w\" sizes=\"(max-width: 1889px) 100vw, 1889px\" \/><\/figure>\n\n\n\n<p>So, you now have a router that can connect internal OpenStack instances and external network.<\/p>\n\n\n\n<p>From the command line, you can confirm that the routers\/networks and their respective namespaces have been created.<\/p>\n\n\n\n<p>List the routers;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack router list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack router show &lt;ROUTER_ID&gt;<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Field                   | Value                                                                                                                                                                                    |\n+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| admin_state_up          | UP                                                                                                                                                                                       |\n| availability_zone_hints |                                                                                                                                                                                          |\n| availability_zones      | nova                                                                                                                                                                                     |\n| created_at              | 2023-10-31T19:18:51Z                                                                                                                                                                     |\n| description             |                                                                                                                                                                                          |\n| distributed             | False                                                                                                                                                                                    |\n| enable_ndp_proxy        | None                                                                                                                                                                                     |\n| external_gateway_info   | {\"network_id\": \"6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41\", \"external_fixed_ips\": [{\"subnet_id\": \"f28bf31f-65d4-4ba0-b933-aa6e48366fb0\", \"ip_address\": \"10.100.0.176\"}], \"enable_snat\": true} |\n| flavor_id               | None                                                                                                                                                                                     |\n| ha                      | False                                                                                                                                                                                    |\n| id                      | 1dd5ffa8-3a81-47ce-af13-c61eb5511f2a                                                                                                                                                     |\n| interfaces_info         | [{\"port_id\": \"735cb47e-e814-47d4-a8a0-1cf5de673fb2\", \"ip_address\": \"192.168.50.1\", \"subnet_id\": \"568de42e-89ab-40df-86f4-5b99fd95014a\"}]                                                 |\n| name                    | DEMO_R1                                                                                                                                                                                  |\n| project_id              | b06556ca186746ff97b6b51faf83129b                                                                                                                                                         |\n| revision_number         | 4                                                                                                                                                                                        |\n| routes                  |                                                                                                                                                                                          |\n| status                  | ACTIVE                                                                                                                                                                                   |\n| tags                    |                                                                                                                                                                                          |\n| tenant_id               | b06556ca186746ff97b6b51faf83129b                                                                                                                                                         |\n| updated_at              | 2023-10-31T19:47:20Z                                                                                                                                                                     |\n+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"open-stack-network-namespaces\">OpenStack Network Namespaces<\/h3>\n\n\n\n<p>When you create networks\/routers, associated namespaces are created as well. In OpenStack, network namespaces are used to provide network isolation for different projects, users, or services. They are a crucial feature for achieving multi-tenancy and ensuring that each project or user&#8217;s network resources are isolated from others. They allow you to create separate network environments within a shared OpenStack infrastructure.<\/p>\n\n\n\n<p>You can list available network namespaces using the command <strong><code>ip netns<\/code><\/strong> or <strong><code>ip netns list<\/code><\/strong>. You need to execute these commands on the controller node;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip netns<\/code><\/pre>\n\n\n\n<p>Sample  output;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qrouter-1dd5ffa8-3a81-47ce-af13-c61eb5511f2a (id: 2)\nqdhcp-58cd571f-4b2e-41ca-a836-8708c19a6d47 (id: 1)\nqdhcp-6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 (id: 0)<\/code><\/pre>\n\n\n\n<p>See, qrouter-ROUTER-ID, or qdhcp-NETWORK-ID, as can be seen in the openstack commands above.<\/p>\n\n\n\n<p>To check the router IP details from the namespace;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ip netns exec qrouter-1dd5ffa8-3a81-47ce-af13-c61eb5511f2a ip a<\/code><\/pre>\n\n\n\n<p>Sample output;<\/p>\n\n\n\n<pre class=\"scroll-box\">1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host \n       valid_lft forever preferred_lft forever\n18: qg-eace66fa-f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/ether fa:16:3e:b4:dd:f1 brd ff:ff:ff:ff:ff:ff\n    inet 10.100.0.176\/24 brd 10.100.0.255 scope global qg-eace66fa-f1\n       valid_lft forever preferred_lft forever\n    inet6 fe80::f816:3eff:feb4:ddf1\/64 scope link \n       valid_lft forever preferred_lft forever\n19: qr-735cb47e-e8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/ether fa:16:3e:db:d7:9b brd ff:ff:ff:ff:ff:ff\n    inet 192.168.50.1\/24 brd 192.168.50.255 scope global qr-735cb47e-e8\n       valid_lft forever preferred_lft forever\n    inet6 fe80::f816:3eff:fedb:d79b\/64 scope link \n       valid_lft forever preferred_lft forever\n<\/pre>\n\n\n\n<p>Try to ping outside from the router itself;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ip netns exec qrouter-1dd5ffa8-3a81-47ce-af13-c61eb5511f2a ping -c 4 8.8.8.8<\/code><\/pre>\n\n\n\n<p>Sample output;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.\n64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=6.82 ms\n64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=5.58 ms\n64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=5.31 ms\n64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=5.28 ms\n\n--- 8.8.8.8 ping statistics ---\n4 packets transmitted, 4 received, 0% packet loss, time 3005ms\nrtt min\/avg\/max\/mdev = 5.284\/5.749\/6.823\/0.630 ms\n<\/code><\/pre>\n\n\n\n<p>As you can see, the router has Internet access. As such, any instances that will be using this router as their gateway should as well have Internet access.<\/p>\n\n\n\n<p>If you want to login to namespace router;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ip netns exec qrouter-1dd5ffa8-3a81-47ce-af13-c61eb5511f2a <strong>bash<\/strong><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"verify-open-stack-instances-internet-access\">Verify OpenStack Instances Internet Access<\/h3>\n\n\n\n<p>Now, the networking part is done. Let&#8217;s create an a simple instance to verify external network connectivity.<\/p>\n\n\n\n<p>Thus, select your respective project where you want to create an instance, and create an instance.<\/p>\n\n\n\n<p>To create an instance, you need to have already <strong>uploaded an image<\/strong> you want to use and have flavors ready. You can check other guides on how to do that.<\/p>\n\n\n\n<p>While creating an instance, we attached it to internal network;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1440\" height=\"804\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/image.webp\" alt=\"\" class=\"wp-image-19070\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/image.webp 1440w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/image-768x429.webp 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/figure>\n\n\n\n<p>When created, it is assigned an IP automatically from the DHCP pool defined on the network attached.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1895\" height=\"571\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/instance-network-details.png\" alt=\"How to Configure OpenStack Networks for Internet Access\" class=\"wp-image-19069\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/instance-network-details.png?v=1698785143 1895w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/instance-network-details-768x231.png?v=1698785143 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/10\/instance-network-details-1536x463.png?v=1698785143 1536w\" sizes=\"(max-width: 1895px) 100vw, 1895px\" \/><\/figure>\n\n\n\n<p>When the instance is running, open it and launch its console;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1471\" height=\"914\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/instance-console-networking.png\" alt=\"\" class=\"wp-image-19072\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/instance-console-networking.png?v=1698787174 1471w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/instance-console-networking-768x477.png?v=1698787174 768w\" sizes=\"(max-width: 1471px) 100vw, 1471px\" \/><\/figure>\n\n\n\n<p>Let&#8217;s ping 8.8.8.8;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ping -c 4 8.8.8.8<\/code><\/pre>\n\n\n\n<p>or;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ping -c google.com<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1272\" height=\"891\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access.png\" alt=\"\" class=\"wp-image-19073\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access.png?v=1698787791 1272w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/openstack-instance-internet-access-768x538.png?v=1698787791 768w\" sizes=\"(max-width: 1272px) 100vw, 1272px\" \/><\/figure>\n\n\n\n<p>And that is it!<\/p>\n\n\n\n<p>Based on our deployment architecture, you have been able to configure OpenStack and enable internet access fort the instances.<\/p>\n\n\n\n<p>That brings us to the end of our tutorial on configuring OpenStack networks for Internet access.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How would you configure OpenStack networks for Internet access? Internet access is crucial for various reasons within an OpenStack environment. VMs may need to download<\/p>\n","protected":false},"author":10,"featured_media":19080,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,1886,36],"tags":[7275,7274,7273],"class_list":["post-19008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-openstack","category-virtualization","tag-internet-access-openstack","tag-openstack-instances-intenet-access","tag-openstack-internet-access","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19008"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=19008"}],"version-history":[{"count":30,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19008\/revisions"}],"predecessor-version":[{"id":22360,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19008\/revisions\/22360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/19080"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=19008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=19008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=19008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}