Не удается пропинговать экземпляры машины OpenStack из внешней сети

Я использовал DevStack (ветвь Виктории) для быстрого развертывания OpenStack «все в одном» в моей системе Ubuntu-20.04. Эта машина имеет общедоступный IP-адрес 222.XXX.XXX.XXX на интерфейсе eno1, и скрипт DevStack автоматически добавил на эту машину интерфейсы br-ex и virbr0. Вот мой конфиг.
#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. На панели управления OpenStack я создал частную сеть demo-net типа vxlan, и у нее есть подсеть 'demo-subnet' с CIDR 10.56.1.0/24 и шлюзом 10.56.1.1. Параметр DHCP включен.
Тем временем DevStack уже создал общедоступную сеть с CIDR 172.24.4.0/24 (привязан к br-ex) и шлюзом 172.24.4.1.
Существует маршрутизатор, соединяющий демо-сеть и общедоступную сеть.
Я выделил плавающий IP-адрес 172.24.4.124 в пуле общедоступной сети для этот экземпляр. Я могу пропинговать этот IP на этой машине и наоборот. Но проблема в том, что когда я пингую 172.24.4.124 на другой машине, это не удается. Я надеюсь получить доступ к экземпляру ВМ за пределами хоста, так что мне делать, чтобы исправить это?
Любая помощь будет принята с благодарностью! Спасибо.


person shengjiang    schedule 24.03.2021    source источник


Ответы (1)


По умолчанию Devstack создает изолированную внешнюю сеть, которую называет public. Вы можете подключиться к этой сети и ко всем подключенным к ней виртуальным сетям только с хоста Devstack. Вы можете попробовать настроить переадресацию портов (команда iptables) на хосте Devstack, но настоящее решение приведено ниже.

Вам нужно настроить Devstack так, чтобы он использовал вашу внешнюю сеть 222.XXX.XXX.XXX. Как это делается, описано на странице https://docs.openstack.org/devstack/latest/networking.html#shared-guest-interface (при условии, что ваш хост Devstack имеет одну сетевую карту 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 — это CIDR для подсети, к которой подключен eno1, а PREFIX — это префикс, используемый eno1. Q_FLOATING_ALLOCATION_POOL — это диапазон IP-адресов в сети 222.x.x.x, которые вы хотите использовать для плавающих IP-адресов.

Вам придется пересоздать Devstack (хотя, возможно, можно будет изменить конфигурацию текущего облака, я не знаю, как это сделать). Прежде чем вы это сделаете, я также настоятельно рекомендую переустановить Ubuntu, чтобы убедиться, что не осталось нежелательных конфигураций из вашей текущей установки.

person berndbausch    schedule 25.03.2021
comment
вау, спасибо за ваш ответ! кажется, это хороший способ решить мою проблему. :) - person shengjiang; 25.03.2021