我已经在带有 neutron 的 centos 6.4 上安装了 openstack (packstack)。openstack 安装在使用 vmware 的单个虚拟机上。
首先我使用以下命令创建外部网络
quantum net-create public --router:external=True
然后我添加了我的外部网络子网(外部网络未使用 IP 池)
然后我创建了路由器
然后我将路由器网关设置为外部网络
我创建了安全组以允许 ssh 和 icmp。
第二步,我创建了启用 dhcp 的私有网络
然后创建路由器接口并将其连接到我的专用网络
第三步,我使用私有网络启动了实例
第四步,我生成了外部网络的浮动 IP,并将其与实例关联
问题陈述:
虚拟机正在从 dhcp 获取 IP(专用网络)并相互通信,但虚拟机上没有互联网
VM 无法 ping 任何外部网络设备。
我使用的是 Centos 6.4。IP 路由显示
192.168.186.0/24 dev eth1 proto kernel scope link src 192.168.186.166 metric 1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
10.16.48.0/22 dev br-ex proto kernel scope link src 10.16.51.208
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev br-ex scope link metric 1017
default via 10.16.48.1 dev br-ex
10.16.48.0/22
我的 eth0 上的外部网络在哪里(用于互联网)
10.16.186.0/24
是 eth1 上的另一个接口
quantum agent-list
节目
----+-------+----------------+
| id | agent_type | host | alive | admin_state_up |
+--------------------------------------+--------------------+-----------------------+-------+----------------+
| 4c709a4c-bf0c-4e03-a0f5-2d938fee7ae1 | L3 agent | localhost.localdomain | :-) | True |
| 960a7806-dc4d-4ab1-99b0-a79dbc31600f | Open vSwitch agent | localhost.localdomain | :-) | True |
| d9f545e2-4a6c-43f4-8037-b807cbe27fc5 | DHCP agent | localhost.localdomain | :-) | True |
+--------------------------------------+--------------------+-----------------------+-------+----------------+
答案1
所以您已经创建了一个 VMWare 虚拟服务器,并且在这个 VM 中安装了 OpenStack,它本身可以托管 VM?
然后,VMWare VM 所连接的虚拟交换机会阻止来自 OpenStack VM 的所有流量。这是一项安全措施,以确保只有 VMWare VM 可以访问虚拟交换机和外部网络。这是一个第 2 层问题,我很确定 OpenStack VM 中的 arp -an 命令不会显示网关。
您所要做的就是允许 VMWare 虚拟交换机接收多个 MAC 地址。
您可以在以下位置找到如何执行此操作这个帖子
编辑您的评论:
我不知道。我认为我知道的是,您无法访问路由器,因此,即使在第 2 层也无法访问外部网络(检查启动 arp -an 命令时网关没有显示 MAC 地址),因为 VSwitch 丢弃了 MAC 地址不是 OpenStack 服务器的数据包。
然后,您可以在 VSwitch 中禁用此功能,或者在 OpenStack 服务器上安装 ARP 代理服务。其目的是伪造虚拟机的 MAC 地址,然后将其作为 OpenStack 服务器本身出现在 VSwitch 上。