在正式使用documentation之后,我正在尝试在虚拟机上的Devstack OS上部署Ubuntu 18.04 Server。 devstack节点只有一个网卡(ens160)通过以下CIDR 10.20.30.40/24连接到网络。我需要在此网络上公开访问我的实例(从10.20.30.240到10.20.30.250)。因此,下面我再次设法形成了这个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地址br-ex和辅助IP地址10.20.30.4010.20.30.1(网关已存在于网络上; PUBLIC_NETWORK_GATEWAY参数不是在谈论网络上的真实网关吗?)

现在,在成功部署之后,禁用ufw(根据documentation),创建一个具有用于ping和ssh的适当安全组的cirros实例,并附加一个 float IP,,我只能在我的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实例内部访问外部世界。

任何帮助,将不胜感激!

更新

在第二种配置中,在对实例 float IP执行ping操作时检查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/

10-12 21:38