【问题标题】:How can I configure Openstack Packstack Juno to work with external network on Centos 7如何配置 Openstack Packstack Juno 以在 Centos 7 上使用外部网络
【发布时间】:2015-03-02 19:41:24
【问题描述】:

我首先在 Centos 7 x86_64 最小安装上禁用了 NetworkManager 和 selinux。

我已按照 Red Hat 说明在此处使用 Packstack 部署 Openstack: https://openstack.redhat.com/Running_an_instance_with_Neutron

启动 Cirros 实例后,我的浮动 ip 与我设置的 DHCP 池匹配,但默认情况下它没有分配给 eth0。

我登录了虚拟机,并配置了 eth0 以匹配浮动 ip,但它仍然无法访问,即使我使用路由设置了默认网关。

安全组在 0.0.0.0/0 上有 tcp 和 IMCP 的入口规则,因此我的理解是,如果已配置,我应该能够访问它。

我已经启动了一个 Centos7 映像,但我怀疑它有同样的问题,因为我无法连接。

有人可以告诉我如何调试吗?我在这台服务器上使用 neutron 并按照 T

的说明进行操作

我的网络是 192.168.1.0/24

# neutron net-show public
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | cfe5a8cc-1ece-4d63-85ea-6bd8803f2997 |
| name                      | public                               |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 10                                   |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | 9b14aa61-eea9-43e0-b03c-7767adc4cd62 |
| tenant_id                 | 75505125ed474a3a8e904f6ea8638cf0     |
+---------------------------+--------------------------------------+
# neutron subnet-show public_subnet
+-------------------+----------------------------------------------------+
| Field             | Value                                              |
+-------------------+----------------------------------------------------+
| allocation_pools  | {"start": "192.168.1.100", "end": "192.168.1.220"} |
| cidr              | 192.168.1.0/24                                     |
| dns_nameservers   |                                                    |
| enable_dhcp       | False                                              |
| gateway_ip        | 192.168.1.1                                        |
| host_routes       |                                                    |
| id                | 9b14aa61-eea9-43e0-b03c-7767adc4cd62               |
| ip_version        | 4                                                  |
| ipv6_address_mode |                                                    |
| ipv6_ra_mode      |                                                    |
| name              | public_subnet                                      |
| network_id        | cfe5a8cc-1ece-4d63-85ea-6bd8803f2997               |
| tenant_id         | 75505125ed474a3a8e904f6ea8638cf0                   |
+-------------------+----------------------------------------------------+
# neutron router-show router1
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                                                                                                     |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                                                                                                                      |
| distributed           | False                                                                                                                                                                                     |
| external_gateway_info | {"network_id": "cfe5a8cc-1ece-4d63-85ea-6bd8803f2997", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.100"}]} |
| ha                    | False                                                                                                                                                                                     |
| id                    | ce896a71-3d7a-4849-bf67-0e61f96740d9                                                                                                                                                      |
| name                  | router1                                                                                                                                                                                   |
| routes                |                                                                                                                                                                                           |
| status                | ACTIVE                                                                                                                                                                                    |
| tenant_id             |                                                                                                                                                                                           |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
# neutron port-list
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                            |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| 5dddaf6c-7aa3-4b59-943c-65c7f05f8597 |      | fa:16:3e:b0:8b:29 | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.101"} |
| 6ce2580c-4967-488b-a803-a0f9289fe096 |      | fa:16:3e:50:2f:de | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.100"} |
| 920a7b64-76c0-48a0-a682-5a0051271252 |      | fa:16:3e:85:33:9a | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.102"} |
| 9636c04a-c3b0-4dde-936d-4a9470c9fd53 |      | fa:16:3e:8b:f2:0b | {"subnet_id": "892beeef-0e1c-4b61-94ac-e8e94943d485", "ip_address": "10.0.0.2"}      |
| 982f6394-c188-4eab-87ea-954345ede0a3 |      | fa:16:3e:de:7e:dd | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.103"} |
| d88af8b3-bf39-4304-aeae-59cc39589ed9 |      | fa:16:3e:23:b8:c5 | {"subnet_id": "892beeef-0e1c-4b61-94ac-e8e94943d485", "ip_address": "10.0.0.1"}      |

我可以从我的本地网络 ping Neutron 创建的网关:

# ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.063 ms

但是,当我在来宾 vm 中配置此网关时,我无法 ping 通此网关。

使用 ovsctl,我看到网桥在那里并且在我的第二个 NIC 上正确设置了它的外部端口:

[root@server neutron]# ovs-vsctl list-br
br-ex
br-int
br-tun
[root@server neutron]# ovs-vsctl list-ports br-ex
enp6s0f1

【问题讨论】:

    标签: openstack openstack-neutron


    【解决方案1】:

    首先,您可能对它应该如何工作有一个误解:

    启动 Cirros 实例后,我的浮动 ip 与我设置的 DHCP > 池匹配,但默认情况下它没有分配给 eth0。

    浮动 IP 地址永远不会直接分配给您的实例。您的实例接收来自内部网络的地址(您使用 neutron net-createneutron subnet-create 等创建的)。

    当您将浮动 ip 与实例关联时:

    nova floating-ip-create <external_network_name>
    nova floating-ip-associate <instance_name_or_id> <ip_address>
    

    此地址在 neutron 路由器内配置,neutron 创建 NAT 规则,将此地址映射到您的实例的内部地址。

    考虑到这一点:

    默认的packstack 调解设置将在中子中配置的两个网络中生成结果,名为publicprivate。实例应附加到private 网络;如果您使用admin 用户的凭据,则需要通过将--nic net-id=nnnnn 传递给nova boot 命令来明确这一点。

    如果您以demo 用户身份启动实例,这将自动发生,因为private 网络归demo 租户所有,并且是该租户唯一可见的非外部网络。

    您的实例应该从private 网络接收到一个IP 地址,对于默认的packstack 配置,该IP 地址将是10.0.0.0/24 网络。

    如果您的实例没有收到 IP 地址

    某处存在配置问题,阻止源自您的实例的 dhcp 请求到达您的专用网络的 dhcp 服务器,该专用网络在您的控制器上名为 dhcp-nnnn 的网络命名空间中运行,其中 nnnn 是 UUID private 网络。在从实例到 dhcp 命名空间的路径上的各个点应用 tcpdump 是目前诊断问题的好方法。

    This article(免责声明:我是作者)详细介绍了 Neutron 环境中各种组件的连接方式。它有点长(例如,它不包括 DVR 或 HA 路由器等新功能),但它仍然很好地概述了什么连接到什么。

    如果您的实例确实收到了 IP 地址

    如果您的实例确实收到来自private 网络的 IP 地址,那么您需要将注意力集中在中子路由器和外部网络的配置上。

    中子路由器被实现为名为@9​​87654341@的网络命名空间,其中nnnn是关联中子路由器的UUID。您可以使用ip netns 命令检查此命名空间。例如,给定:

    $ neutron router-list
    +--------------------------------------+------------+...
    | id                                   | name       |...
    +--------------------------------------+------------+...
    | 92a5e69a-8dcf-400a-a2c2-46c775aee06b | router-nat |...
    +--------------------------------------+------------+...
    

    你可以运行:

    # ip netns exec qrouter-92a5e69a-8dcf-400a-a2c2-46c775aee06b ip addr
    

    并查看路由器的接口配置:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    10: qr-416ca0b2-c8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
        link/ether fa:16:3e:54:51:50 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.1/24 brd 10.0.0.255 scope global qr-416ca0b2-c8
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fe54:5150/64 scope link 
           valid_lft forever preferred_lft forever
    13: qg-2cad0370-bb: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
        link/ether fa:16:3e:f8:f4:c4 brd ff:ff:ff:ff:ff:ff
        inet 192.168.200.10/24 brd 192.168.200.255 scope global qg-2cad0370-bb
           valid_lft forever preferred_lft forever
        inet 192.168.200.2/32 brd 192.168.200.2 scope global qg-2cad0370-bb
           valid_lft forever preferred_lft forever
        inet 192.168.200.202/32 brd 192.168.200.202 scope global qg-2cad0370-bb
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fef8:f4c4/64 scope link 
           valid_lft forever preferred_lft forever
    

    您还可以使用ip netns 在内部执行ping 之类的操作 路由器命名空间来验证与外部地址的连接。这 实际上是一个很好的起点——确保你有功能 在您之前从路由器命名空间内的出站连接 开始尝试从您的 Nova 实例中进行测试。

    您应该会在qg-nnnn 界面上看到一个或多个地址 在浮动 IP 网络的 CIDR 范围内。如果你在命名空间内运行ip route

    # ip netns exec qrouter-92a5e69a-8dcf-400a-a2c2-46c775aee06b ip route
    default via 192.168.200.1 dev qg-2cad0370-bb 
    10.0.0.0/24 dev qr-416ca0b2-c8  proto kernel  scope link  src 10.0.0.1 
    192.168.200.0/24 dev qg-2cad0370-bb  proto kernel  scope link  src 192.168.200.10 
    

    您应该会看到使用适当网关地址的默认路由 用于您的浮动 IP 网络。

    我要在这里暂停一下。如果您通过其中一些诊断程序发现问题或有疑问,请告诉我,我会尝试适当地更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多