Я использовал 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 на другой машине, это не удается. Я надеюсь получить доступ к экземпляру ВМ за пределами хоста, так что мне делать, чтобы исправить это?
Любая помощь будет принята с благодарностью! Спасибо.
Не удается пропинговать экземпляры машины OpenStack из внешней сети
Ответы (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, чтобы убедиться, что не осталось нежелательных конфигураций из вашей текущей установки.