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

Следуя официальной документации, я пытаюсь развернуть Devstack на Ubuntu 18.04 Server ОС на виртуальном машина. Узел devstack имеет только одну сетевую карту (ens160), подключенную к сети со следующим CIDR 10.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 (согласно this), создав экземпляр 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-адреса экземпляра достигает узла стека разработки от сетевого маршрутизатора; однако ответ is-at не генерируется, и поэтому пакеты ICMP не маршрутизируются на узел стека разработки и экземпляр.

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


person S. Saeid Hosseini    schedule 12.11.2019    source источник


Ответы (1)


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

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

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

Это поможет!

Ваше здоровье!

person marcio    schedule 02.12.2019
comment
Уважаемый @marcio, это фактически решает проблему поверх второго local.conf. Спасибо! Похоже, твоя репутация уже не так уж плоха :-D - person S. Saeid Hosseini; 03.12.2019
comment
Спасибо! Моя репутация была низкой, чтобы оставлять комментарии, и рецензенты не разрешили мне повторно опубликовать ни одного вопроса. Какие уловки вы использовали для решения проблемы ?! - person marcio; 03.12.2019
comment
Посмотрите и на это: stackoverflow.com/questions/59109557/ - person marcio; 05.12.2019