6

按照官方文档,我正在尝试在虚拟机Devstack上的操作系统上部署一个。Ubuntu 18.04 Serverdevstack 节点只有一个网卡 (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在 ping 实例浮动 IP 时检查数据包,我观察到实例浮动 IP 的who-has广播数据包从网络路由器到达 devstack 节点;但是没有is-at生成回复,因此 ICMP 数据包不会路由到 devstack 节点和实例。

因此,通过一些技巧,我创建了响应,之后一切正常;但当然这不是解决方案,我认为 devstack 应该开箱即用,无需任何调整,这可能是因为 devstack 配置错误。

4

1 回答 1

2

经过 5 天的测试、研究和讲座,我发现:Openstack VM is not access on LAN

devstack在节点上输入以下命令:

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

这样就行了!

干杯!

于 2019-12-02T03:13:59.223 回答