IP地址管理

IP地址管理

每个实例都有一个私有固定的IP地址,也可以有一个公共浮动的IP地址。私有IP地址用于实例之间的通信,公共地址用于与云外的网络通信,包括互联网。

当您新建一个实例时,其便获得了一个永不变更的私有IP地址直到您明确的终结了该实例。重启一个实例不会影响其私有IP地址

浮动IP地址池在Openstack计算节点上由云管理员配置。项目额定定义了您可以分配给项目的浮动IP地址的最大数目。在您将一个浮动的IP地址分配给一个项目后,您可以:

  • 将浮动IP地址与项目实例相关联。在任何时候仅有一个浮动IP地址可以分配给实例。
  • 从项目实例中释放一个浮动IP地址
  • 从该项目中删除一个浮动IP,该项目会自动删除该IP的关联信息

使用:command:`openstack`命令管理浮动IP地址。

Create an external network

  1. Create an external network named public:
$ openstack network create public --external

+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2017-05-18T05:06:06Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | 5a6c74b9-5659-4b9e-951e-85ffca212139 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| mtu                       | 1450                                 |
| name                      | public                               |
| port_security_enabled     | False                                |
| project_id                | b3abf186ac64462e85741315376e9ca7     |
| provider:network_type     | vxlan                                |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 9                                    |
| qos_policy_id             | None                                 |
| revision_number           | 3                                    |
| router:external           | External                             |
| segments                  | None                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| updated_at                | 2017-05-18T05:06:06Z                 |
+---------------------------+--------------------------------------+
  1. Create a subnet of the public external network:
$ openstack subnet create --network public --subnet-range 172.24.4.0/24 public_subnet

+-------------------------+--------------------------------------+
| Field                   | Value                                |
+-------------------------+--------------------------------------+
| allocation_pools        | 172.24.4.2-172.24.4.254              |
| cidr                    | 172.24.4.0/24                        |
| created_at              | 2017-05-18T05:16:46Z                 |
| description             |                                      |
| dns_nameservers         |                                      |
| enable_dhcp             | True                                 |
| gateway_ip              | 172.24.4.1                           |
| host_routes             |                                      |
| id                      | f61a73b3-6097-48ff-b7ef-98da203e6b18 |
| ip_version              | 4                                    |
| ipv6_address_mode       | None                                 |
| ipv6_ra_mode            | None                                 |
| name                    | public_subnet                        |
| network_id              | 5a6c74b9-5659-4b9e-951e-85ffca212139 |
| project_id              | b3abf186ac64462e85741315376e9ca7     |
| revision_number         | 2                                    |
| segment_id              | None                                 |
| service_types           |                                      |
| subnetpool_id           | None                                 |
| updated_at              | 2017-05-18T05:16:46Z                 |
| use_default_subnet_pool | None                                 |
+-------------------------+--------------------------------------+

列出浮动IP地址信息

列出浮动IP池中提供的所有浮动IP地址,运行:

$ openstack floating ip pool list
+--------+
| name   |
+--------+
| public |
| test   |
+--------+

注解

If this list is empty, the cloud administrator must configure a pool of floating IP addresses. This command is only available in nova-network. If you use the OpenStack Networking service, run the following command to list external networks:

$ openstack network list --external

+--------------------------------------+-------------+--------------------------------------+
| ID                                   | Name        | Subnets                              |
+--------------------------------------+-------------+--------------------------------------+
| 5a6c74b9-5659-4b9e-951e-85ffca212139 | public      | f61a73b3-6097-48ff-b7ef-98da203e6b18 |
| 9839a22d-33b7-4173-9708-985f091bb892 | public1     | 19f1fbb4-f411-4465-8ed9-b641c7fc73d0 |
+--------------------------------------+-------------+--------------------------------------+

列出分配给当前项目的所有浮动的IP地址,运行:

$ openstack floating ip list
+--------------------------------------+---------------------+------------------+------+
| ID                                   | Floating IP Address | Fixed IP Address | Port |
+--------------------------------------+---------------------+------------------+------+
| 760963b2-779c-4a49-a50d-f073c1ca5b9e | 172.24.4.228        | None             | None |
| 89532684-13e1-4af3-bd79-f434c9920cc3 | 172.24.4.235        | None             | None |
| ea3ebc6d-a146-47cd-aaa8-35f06e1e8c3d | 172.24.4.229        | None             | None |
+--------------------------------------+---------------------+------------------+------+

对于分配给当前项目的每个浮动IP地址,命令输出浮动的IP地址,浮动IP地址被分配的实例的标识,相关的固定IP地址,以及分配浮动IP地址的地址池。

关联浮动IP地址

你可以将一个浮动IP地址分配给一个项目和一个云主机

  1. 通过以下命令将浮动IP分配到当前项目。默认情况下,浮动IP是从公共IP池中分配的。命令输入分配的IP:

    $ openstack floating ip create public
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | created_at          | 2017-03-30T12:35:25Z                 |
    | description         |                                      |
    | fixed_ip_address    | None                                 |
    | floating_ip_address | 172.24.4.230                        |
    | floating_network_id | c213f520-aade-42eb-8bf1-6826505d74bb |
    | id                  | 1e777f9e-4fc8-4df8-be6f-89f5caba3c0f |
    | name                | None                                 |
    | port_id             | None                                 |
    | project_id          | b3abf186ac64462e85741315376e9ca7     |
    | revision_number     | 1                                    |
    | router_id           | None                                 |
    | status              | DOWN                                 |
    | updated_at          | 2017-03-30T12:35:25Z                 |
    +---------------------+--------------------------------------+
    
  2. 列出所有项目下可以分配浮动IP的实例

    $ openstack server list
    +---------------------+------+---------+------------+-------------+------------------+------------+
    | ID                  | Name | Status  | Task State | Power State | Networks         | Image Name |
    +---------------------+------+---------+------------+-------------+------------------+------------+
    | d5c854f9-d3e5-4f... | VM1  | ACTIVE  | -          | Running     | private=10.0.0.3 | cirros     |
    | 42290b01-0968-43... | VM2  | SHUTOFF | -          | Shutdown    | private=10.0.0.4 | centos     |
    +---------------------+------+---------+------------+-------------+------------------+------------+
    
  3. 将IP地址与项目实例关联起来,如下:

    $ openstack server add floating ip INSTANCE_NAME_OR_ID FLOATING_IP_ADDRESS
    

    例如:

    $ openstack server add floating ip VM1 172.24.4.225
    

    该实例现与两个IP地址相关联

    $ openstack server list
    +------------------+------+--------+------------+-------------+-------------------------------+------------+
    | ID               | Name | Status | Task State | Power State | Networks                      | Image Name |
    +------------------+------+--------+------------+-------------+-------------------------------+------------+
    | d5c854f9-d3e5... | VM1  | ACTIVE | -          | Running     | private=10.0.0.3, 172.24.4.225| cirros     |
    | 42290b01-0968... | VM2  | SHUTOFF| -          | Shutdown    | private=10.0.0.4              | centos     |
    +------------------+------+--------+------------+-------------+-------------------------------+------------+
    

    在你为实例建立关联IP地址并配置安全组规则之后,该实例将在浮动IP地址池中公开可用。

    注解

    The openstack server command does not allow users to associate a floating IP address with a specific fixed IP address using the optional --fixed-address parameter, which legacy commands required as an argument.

释放浮动IP地址

从实例中将浮动IP地址释放出来

$ openstack server remove floating ip INSTANCE_NAME_OR_ID FLOATING_IP_ADDRESS

从项目中移除浮动IP地址

$ openstack floating ip delete FLOATING_IP_ADDRESS

返回到IP地址池中的IP地址可用于所有项目。如果IP地址仍与运行中的实例相关联,它会自动从实例中释放出来

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.