【问题标题】:Cannot ping instances of OpenStack machine from external net无法从外部网络 ping OpenStack 机器的实例
【发布时间】:2021-03-24 10:03:01
【问题描述】:

我使用 DevStack(维多利亚分支)在我的 Ubuntu-20.04 系统上快速部署 OpenStack 一体机。这台机器在接口eno1上有一个公网ip地址222.XXX.XXX.XXX,DevStack脚本已经自动在这台机器上添加了br-exvirbr0接口。这是我的配置。
#ifconfig
br-ex: inet 172.24.4.1 netmask 255.255.255.0 broadcast 0.0.0.0
eno1: inet 222.XXX.XXX.XXX netmask 255.255.255.128 broadcast 222.XXX.XXX.XXX
virbr0: inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
现在我在图像cirros 上创建了一个VM 实例。在我的 OpenStack 仪表板上,我创建了一个 vxlan 类型的专用网络 demo-net,它有一个子网“demo-subnet”,CIDR 为 10.56.1.0/24,网关为 10.56.1.1。 DHCP 选项已打开。
同时,DevStack 已经创建了一个 public 网络,其 CIDR 为 172.24.4.0/24(绑定到 br-ex)和网关 172.24.4.1。
有一个路由器连接 demo-netpublic 网络。
我在 public 网络的池中为这个实例分配了一个浮动 IP 172.24.4.124。我可以在这台机器上ping这个IP,反之亦然。但问题是,当我在另一台机器上 ping 172.24.4.124 时,它失败了。我希望访问宿主机外的VM实例,我该如何解决呢?
任何帮助将不胜感激!谢谢。

【问题讨论】:

    标签: networking cloud virtual-machine openstack devstack


    【解决方案1】:

    默认情况下,Devstack 创建一个隔离的“外部”网络,它称为public。您只能从 Devstack 主机连接到该网络以及连接到该网络的所有虚拟网络。您可以尝试在 Devstack 主机上配置端口转发(iptables 命令),但真正的解决方案如下。

    您需要配置 Devstack 以便它使用您的外部网络 222.XXX.XXX.XXX。完成此操作的方式记录在 https://docs.openstack.org/devstack/latest/networking.html#shared-guest-interface(假设您的 Devstack 主机有一个 NIC eno1)。在你的情况下,你需要把它放在 local.conf 中:

    PUBLIC_INTERFACE=eno1
    HOST_IP=222.x.x.x
    FLOATING_RANGE=222.x.y.z/PREFIX
    PUBLIC_NETWORK_GATEWAY=your router, probably 222.something
    Q_FLOATING_ALLOCATION_POOL=start=222.a.b.c,end=222.d.e.f
    

    FLOATING_RANGE 是eno1 连接的子网的CIDR,PREFIX 是eno1 使用的前缀。 Q_FLOATING_ALLOCATION_POOL 是您要用于浮动 IP 的 222.x.x.x 网络中的 IP 地址范围。

    您将不得不重新创建一个 Devstack(尽管可能会更改当前云的配置,但我不知道如何)。在您这样做之前,我还强烈建议您重新安装 Ubuntu,以确保不会保留当前设置中不需要的配置。

    【讨论】:

    • 哇,谢谢您的回复!这似乎是解决我的问题的好方法。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    相关资源
    最近更新 更多