Экземпляры DevStack недоступны за пределами узла devstack

Следуя официальной документации, я пытаюсь развернутьDevstack на Ubuntu 18.04 ServerОС на виртуальной машине. Узел devstack имеет только одну сетевую карту (ens160), подключенную к сети со следующим CIDR10.20.30.40/24. Мне нужны мои экземпляры, доступные публично в этой сети (с 10.20.30.240 по 10.20.30.250). Таким образом, опять после официальной плавающей IP документации мне удалось сформировать этотlocal.conf файл:

[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

PUBLIC_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.40/24
PUBLIC_NETWORK_GATEWAY=10.20.30.1
Q_FLOATING_ALLOCATION_POOL=start=10.20.30.240,end=10.20.30.250

Это привело бы к формированию br-ex с глобальным IP-адресом 10.20.30.40 и вторичный IP-адрес 10.20.30.1 (Шлюз уже существует в сети; не PUBLIC_NETWORK_GATEWAY параметр говорит о реальном шлюзе в сети?)

Теперь после успешного развертывания отключение ufw(в соответствии с этим), создав экземпляр cirros с соответствующей группой безопасности для ping и ssh и подключив плавающий IP-адрес, я могу получить доступ к своему экземпляру только на моем узле devstack, а не во всей сети! Также из экземпляра cirros я не могу получить доступ к внешнему миру (хотя я могу получить доступ к внешнему миру из узла devstack)

Впоследствии, просмотрев это видео, я изменилlocal.conf файл вроде этого:

[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

FLAT_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.240/28

После успешного развертывания и настройки экземпляра я все еще могу получить доступ к своему экземпляру только на узле devstack, а не извне! Но хорошая новость заключается в том, что я могу получить доступ к внешнему миру из экземпляра cirros.

Любая помощь будет оценена по достоинству!


Обновить

Во второй конфигурации проверка пакетов на tcpdump во время проверки связи с плавающим IP-адресом экземпляра я заметил, что who-hasшироковещательный пакет для плавающего IP-адреса экземпляра достигает узла devstack от сетевого маршрутизатора; однако нетis-at генерируется ответ, и поэтому пакеты ICMP не маршрутизируются на узел devstack и экземпляр.

Итак, с помощью некоторых уловок я создал ответ, и после этого все работает нормально; но, конечно, это не решение, и я полагаю, что стек разработчиков должен работать из коробки без каких-либо настроек, и, вероятно, это из-за неправильной конфигурации стека разработчиков.

1 ответ

Решение

После 5 дней тестов, исследований и лекций я обнаружил следующее: виртуальная машина Openstack недоступна в локальной сети.

Введите следующие команды на devstack узел:

echo 1 > /proc/sys/net/ipv4/conf/ens160/proxy_arp
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE

Это поможет!

Ура!

Другие вопросы по тегам