根据官方文档,我正在尝试在虚拟机Devstack
上的Ubuntu 18.04 Server
OS上部署OS。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
(根据此方法),创建具有用于ping和ssh的适当安全组的cirros实例并附加浮动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执行ping操作时检查数据包,我观察到实例的浮动IP的who-has
广播数据包从网络路由器到达devstack节点。但是不会is-at
生成任何答复,因此ICMP数据包不会路由到devstack节点和实例。
因此,通过一些技巧,我创建了响应,然后一切正常。但这当然不是解决方案,我认为devstack应该开箱即用而无需任何调整,这可能是因为devstack的配置错误。