关注官方documentation ,我正在尝试在虚拟机上的 Ubuntu 18.04 Server
操作系统上部署 Devstack
。 devstack 节点只有一个网卡 (ens160),连接到具有以下 CIDR 10.20.30.40/24
的网络。我需要在此网络上公开访问我的实例(从 10.20.30.240 到 10.20.30.250)。所以再次下面的官方 float IP documentation我设法形成了这个 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
这将导致形成一个具有全局 IP 地址 10.20.30.40
和辅助 IP 地址 10.20.30.1
的 br-ex
(网络上已存在网关;PUBLIC_NETWORK_GATEWAY
参数不是在谈论网络上的真实网关吗?)
现在,成功部署后,禁用 ufw
(根据 this ),创建一个具有适当安全组的 cirros 实例以进行 ping 和 ssh 并附加 float IP,I只能访问我的 devstack 节点上的实例,不能访问整个网络!同样从 cirros 实例内部,我无法访问外部世界(即使我可以从 devstack 节点访问外部世界)
然后观看this视频,我修改了 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 实例内部访问外部世界。
如有任何帮助,我们将不胜感激!
<小时/>更新
在第二个配置中,在 ping 实例 float IP 时检查 tcpdump 上的数据包,我观察到该实例的 float IP 的 who-has
广播数据包实例从网络路由器到达devstack节点;但是不会生成 is-at
回复,因此 ICMP 数据包不会路由到 devstack 节点和实例。
因此,通过一些技巧,我创建了响应,之后一切正常;但这当然不是解决方案,我想 devstack 应该开箱即用,无需任何调整,这可能是因为 devstack 配置错误。
最佳答案
经过 5 天的测试、研究和讲座,我发现了这个:Openstack VM is not accessible on LAN
在 devstack
节点上输入以下命令:
echo 1 > /proc/sys/net/ipv4/conf/ens160/proxy_arp
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
这样就可以了!
干杯!
关于openstack - 无法在 devstack 节点外部访问 DevStack 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821993/