无法在 devstack 节点之外访问 DevStack 实例
DevStack instances can't be reached outside devstack node
关注官方 documentation, I'm trying to deploy a Devstack
on an Ubuntu 18.04 Server
OS on a virtual machine. The devstack node has only one network card (ens160) connected to a network with the following CIDR 10.20.30.40/24
. I need my instances accessible publicly on this network (from 10.20.30.240 to 10.20.30.250). So again the following the official floating-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 并附加一个浮动 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实例内部访问外部世界.
如有任何帮助,我们将不胜感激!
更新
在第二个配置中,在 ping 实例浮动 IP 时检查 tcpdump
上的数据包,我观察到实例浮动 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
那就行了!
干杯!
关注官方 documentation, I'm trying to deploy a Devstack
on an Ubuntu 18.04 Server
OS on a virtual machine. The devstack node has only one network card (ens160) connected to a network with the following CIDR 10.20.30.40/24
. I need my instances accessible publicly on this network (from 10.20.30.240 to 10.20.30.250). So again the following the official floating-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 并附加一个浮动 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实例内部访问外部世界.
如有任何帮助,我们将不胜感激!
更新
在第二个配置中,在 ping 实例浮动 IP 时检查 tcpdump
上的数据包,我观察到实例浮动 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
那就行了!
干杯!