Openstack Neutron - виртуальная машина как маршрутизатор между двумя сетями в рамках одного клиента

У меня следующая установка:

VM1 --- NET1 --- VM2 --- NET2 --- VM3

VM2 может пинговать как VM1, так и VM3. Однако при пинге от VM1 к VM3 пакеты пересылаются VM2, но никогда не достигают VM3 (т. Е. Они отбрасываются NET2, поскольку tcpdump показывает, что пакеты отправляются из интерфейса NET2 VM2).

То же самое при пинге с ВМ3 на ВМ1. Пакеты достигают VM2, затем VM2 пересылает их на V1, но они никогда не достигают VM1.

Похоже, NET2 не пропускает пакеты с srcIP из NET1. То же самое с пакетами фильтрации NET1 с srcIP NET2.

Вот как мы создаем каждую сеть в нашем тепловом шаблоне.

net1:
   type: OS::Neutron::Net
   properties:
      name: net1_name

net1_subnet:
   type: OS::Neutron::Subnet
   properties:
     network_id: { get_resource: net1 }
     cidr: { get_param: net1_cidr }

Есть ли способ сделать так, чтобы пакеты передавались из NET1 в NET2 через VM2, которая действует как маршрутизатор?

Спасибо!

========== Обновление ====

Похоже, я нашел решение: добавление IP-адресов VM1 и VM3 в «allowed_address_pairs» портов (Neutron: Port) VM2.

VM2_left_port:
    type: OS::Neutron::Port
    properties:
       allowed_address_pairs: [{"ip_address": { get_param: VM3_IP}}]
       network: ...
       fixed_ips: ...

VM2_right_port:
    type: OS::Neutron::Port
    properties:
       allowed_address_pairs: [{"ip_address": { get_param: VM1_IP }}]
       network: ...
       fixed_ips: ...

Вопрос в том, является ли это правильным способом разрешить маршрутизацию (с использованием ВМ2 в качестве маршрутизатора) между сетями.


person Michael    schedule 13.04.2017    source источник


Ответы (2)


Я думаю, что разрешить взаимодействие между двумя сетевыми интерфейсами в VM2.

эхо 1> / proc / sys / net / ipv4 / ip_forward

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT

sudo iptables -A ВПЕРЕД -i eth1 -o eth0 -j ПРИНЯТЬ

person abhilash_goyal    schedule 21.04.2017
comment
Спасибо за комментарий, но моя проблема заключается не в конфигурации маршрутизации, а в том, что Openstack по умолчанию блокирует трафик между подсетями ... Я нашел решение, опубликую его в качестве ответа. - person Michael; 21.04.2017

Таким образом, проблема заключалась в функции Openstack "port_security", которая блокирует трафик из одной подсети в другую. Чтобы разрешить поток пакетов между подсетями, следующие параметры могут использоваться в качестве альтернативы подходу, который я предложил в вопросе («allowed_address_pairs»).

VM2_left_port:
    type: OS::Neutron::Port
    properties:
       security_groups: []
       port_security_enabled: False
       network: ...
       fixed_ips: ...

VM2_right_port:
    type: OS::Neutron::Port
    properties:
       security_groups: []
       port_security_enabled: False
       network: ...
       fixed_ips: ...
person Michael    schedule 21.04.2017