У меня следующая установка:
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 в качестве маршрутизатора) между сетями.