openstack devstack pike版本安装好后,测试网络都很顺利,vm机器能ping通外网,但要外网默认的外网是 172.24.4.0/24,而单位的所在网络是172.16.10.0/24 ,问题来了,vm可以访问外面,但外面要访问vm,需要绑定浮点ip,因此,openstack设置的外网不能是172.24.4.0/24,而应该是外网端口连接的 172.16.10.0/24 网络,因此,只能删除可用的public网络定义,重新建立一个虚拟网络,但新建的172.16.10.0/24网络总是不通,vm不能访问外网。
经查网络,终于解决问题,关键点在于外网的设置要与实际的网络绑定。有如下几点:
1. 查看安装时的 local.conf安装配置文件
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
有如上几行,说明使用的是 linuxbridge 桥接技术,物理网络是 default
2. 查看/etc/neutron/plugins/ml2/ml2_conf.ini 文件
里面有如下几行
[ml2]
tenant_network_types = vxlan
extension_drivers = port_security
mechanism_drivers = openvswitch,linuxbridge
//两种桥接技术openvswitch,linuxbridge都支持
...
[ml2_type_flat]
flat_networks = default,public,
支持default和public名称的实际网络接口
....
[linux_bridge]
physical_interface_mappings = default:eno3
bridge_mappings = public:br-ex
default映射到eno3网卡
3. 有了以上信息,在openstack dashboard 界面创建外网网络
网络类型为flat,物理网络要和上面查到的信息对应,是default,绑定到外网网卡eno3上去了
4.点击下一步创建子网public_sub
注意,这个外网是openstack所在的外部网络,可以是internet,也可以是单位内的网络,网络地址和网关地址是单位所在网络的真实网关地址
5.点击下一步设置dhcp,地址范围可以限定在未使用的一段
建议还是要设置dhcp,因为连接路由设置接口时通过自动分配的ip才能成功,反正我这里是这种情况。
6. 建立好外部网络定义后,就可以把外网连接上路由器,可以新创建路由器或连接到现有路由器上
新建路由器,设置路由器的外网是public,设置网关,我这是选择public外网后,自动分配一个如172.16.10.182(在上面dhcp指定范围的网址)作为路由public网络的接口ip,这里我选创建一个接口,再把这个接口指定为路由接口,总是不通,而自动分配的ip作为接口就一切ok
7. 把vm所在的local虚拟网络连接上路由,在虚拟机上可以测试ping外网,ok