Не удалось пинговать второй IP-адрес в экземпляре openstack

У меня есть среда 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). Циррос получил ip 50.0.0.5. Я могу пинговать 50.0.0.3 из экземпляра cirros, но не IP 50.0.0.4. Если я вручную отключу интерфейс с ip 50.0.0.3 в экземпляре Fedora, то только я могу пинговать 50.0.0.4 из экземпляра cirros. Есть ли ограничение в конфигурации нейтрона, которое запрещает пинг к обоим IP-адресам Fedora экземпляра одновременно? Пожалуйста помоги.


person kuro    schedule 14.04.2016    source источник


Ответы (1)


Это происходит из-за брандмауэра по умолчанию, выполняемого сетью OpenStack (Neutron) - он просто отбрасывает все пакеты, полученные на порт, если исходный адрес пакета не совпадает с IP-адресом, назначенным порту.

Когда экземпляр cirros отправляет ping-пакет на 50.0.0.4, экземпляр Fedora получает его на интерфейсе с IP-адресом 50.0.0.4. Однако, когда он отвечает на IP-адрес cirros 50.0.0.5, сетевой стек linux на вашем компьютере с Fedora имеет два интерфейса на выбор для отправки ответа (поскольку оба этих интерфейса подключены к одной и той же сети). В вашем случае Fedora ответит на 50.0.0.3. Однако исходный IP-адрес в пакете по-прежнему 50.0.0.4, и поэтому сетевой уровень OpenStack просто отбрасывает его.

Общая рекомендация - не иметь несколько интерфейсов в одной сети. Если вам нужно несколько IP-адресов из одной сети для вашей виртуальной машины, вы можете использовать опцию «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-адрес в свой интерфейс с помощью команды «ip addr add» (см. http://www.unixwerk.eu/linux/redhat/ipalias.html):

ip addr add 50.0.0.3/24 brd + dev eth0 label eth0:0
person Praveen Yalagandula    schedule 14.04.2016
comment
Следуя вашему предложению, я попытался добавить два фиксированных IP-адреса в экземпляр fedora. Но даже при этом команда ip addr показывает только один IP-адрес в fedora, а эхо-запрос с cirros также успешно выполняется только для одного IP-адреса. - person kuro; 15.04.2016
comment
На каждом интерфейсе DHCP-сервер в Neutron предлагает только один IP-адрес, поэтому по умолчанию будет настроен только один IP-адрес. Вы можете добавить еще один IP-адрес к своему интерфейсу в Fedora с помощью команды ip addr add. См. ссылку: ip addr add 50.0.0.4/24 brd + dev eth0 label eth0:0 - person Praveen Yalagandula; 15.04.2016
comment
Приносим извинения за задержку с ответом. Ваше решение сработало как шарм. Спасибо - person kuro; 20.04.2016