0

我在机器中有 RDO openstack 环境进行测试。RDO 是使用packstack --allinone命令安装的。使用 HOT 我创建了两个实例。一个带有cirros图像,另一个带有Fedora. Fedora实例有两个接口连接到同一个网络,而只有cirros一个接口连接到同一个网络。模板看起来像这样 -

heat_template_version: 2015-10-15
description: Simple template to deploy two compute instances

resources:

   local_net:
     type: OS::Neutron::Net

   local_signalling_subnet:
     type: OS::Neutron::Subnet
     properties:
       network_id: { get_resource: local_net }
       cidr: "50.0.0.0/24"
       ip_version: 4

   fed:
     type: OS::Nova::Server
     properties:
     image: fedora
     flavor: m1.small
     key_name: heat_key
     networks:
        - network: local_net
     networks:
        - port: { get_resource: fed_port1 }
        - port: { get_resource: fed_port2 }

   fed_port1:
     type: OS::Neutron::Port
     properties:
      network_id: { get_resource: local_net }

  fed_port2:
    type: OS::Neutron::Port
    properties:
      network_id: { get_resource: local_net }

  cirr:
    type: OS::Nova::Server
    properties:
       image: cirros
       flavor: m1.tiny
       key_name: heat_key
    networks:
       - network: local_net
    networks:
       - port: { get_resource: cirr_port }

 cirr_port:
    type: OS::Neutron::Port
    properties:
      network_id: { get_resource: local_net }

Fedora 实例有两个 ip(50.0.0.3 和 50.0.0.4)。Cirros 获得了 ip 50.0.0.5。我可以从cirros实例 ping 50.0.0.3,但不能 ping ip 50.0.0.4。如果我在实例中手动关闭 ip 50.0.0.3 的接口Fedora,那么只有我可以从cirros实例 ping 50.0.0.4。neutron 的配置是否有限制,禁止同时 ping 到Fedora实例的两个 ip。请帮忙。

4

1 回答 1

0

发生这种情况是因为 OpenStack 网络(neutron)所做的默认防火墙 - 如果数据包的源地址与分配给端口的 IP 地址不匹配,它只会丢弃在端口上接收到的任何数据包。

当 cirros 实例向 50.0.0.4 发送 ping 数据包时,fedora 实例在 IP 地址为 50.0.0.4 的接口上接收到它。但是,当它响应 cirros 的 IP 地址 50.0.0.5 时,您的 Fedora 机器上的 linux 网络堆栈有两个接口可供选择来发送响应(因为这两个接口都连接到同一个网络)。在您的情况下,fedora 选择在 50.0.0.3 上回复。但是,数据包中的源 IP 地址仍然是 50.0.0.4,因此 OpenStack 网络层简单地丢弃了它。

一般建议是在同一网络上不要有多个接口。如果您想为您的虚拟机使用来自同一网络的多个 IP 地址,您可以在 heat 模板中使用“fixed_ips”选项:

fed_port1:
  type: OS::Neutron::Port
  properties:
    network_id: { get_resource: local_net }
    fixed_ips:
    - ip_address: "50.0.0.4"
    - ip_address: "50.0.0.3"

由于 DHCP 服务器只提供 IP 地址,fedora 将只配置一个 IP。您可以使用“ip addr add”命令将另一个 IP 添加到您的接口(参见http://www.unixwerk.eu/linux/redhat/ipalias.html):

ip addr add 50.0.0.3/24 brd + dev eth0 label eth0:0
于 2016-04-14T22:28:00.297 回答