OpenStack VLAN网络类型实训案例
一、 案例需求与目标
-
需求背景:
某公司计划在OpenStack云平台上为两个部门(研发部、财务部)部署业务系统。出于安全和管理需求,要求两个部门的网络在二层上完全隔离,但都可以访问互联网,并且云平台管理员能够清晰地管理这些网络。 -
实现需求:
- 创建两个租户项目(
project-dev
,project-finance
),模拟两个部门。 - 在每个项目中创建各自的VLAN类型私有网络(
vlan-net-dev
,vlan-net-finance
)。 - 为每个网络创建子网,并配置DHCP服务自动分配IP地址。
- 在每个网络中启动云实例(虚拟机)。
- 验证:同一VLAN网络内的实例可以互通;不同VLAN网络的实例不能互通。
- 验证:所有实例均可以通过浮动IP访问外部网络(互联网)。
- 创建两个租户项目(
-
实训目标:
- 理解VLAN在OpenStack中实现多租户网络隔离的原理。
- 掌握使用OpenStack Dashboard (Horizon) 和命令行 (CLI) 两种方式创建和管理VLAN网络。
- 学会创建路由器并连接外部网络,使租户网络具备NAT能力。
- 掌握通过安全组策略和网络连通性测试来验证网络设计。
二、 逻辑拓扑图
下图清晰地展示了本实训案例的逻辑网络结构:
拓扑说明:
- 物理层面:计算节点和控制节点的物理网卡(如
eth1
)通过Trunk链路连接到物理交换机,允许携带VLAN标签(如VLAN 101, 102)的流量通过。 - 虚拟层面:
- OpenStack Neutron通过Open vSwitch (OVS) 创建了集成桥(
br-int
)和外部桥(br-ex
)。 - 每个租户的VLAN网络在
br-int
上被分配了唯一的内部VLAN标签,用于隔离。 - 虚拟路由器作为每个租户网络的网关,并连接到共享的“外部网络”(提供商网络)。路由器执行SNAT(让虚拟机访问互联网)和DNAT(浮动IP映射)。
- OpenStack Neutron通过Open vSwitch (OVS) 创建了集成桥(
三、 实施步骤
前提条件:
- 一个已部署好的OpenStack环境(如Victoria、Wallaby版本),至少包含1控制节点+1计算节点。
- 管理员已创建好一个名为
provider
的“外部网络”(Flat或VLAN类型),并配置了物理网络对接。 - 已安装OpenStack命令行客户端工具并配置好管理员权限的
openrc
文件。
步骤一:创建租户和用户(管理员操作)
- 登录OpenStack控制节点或通过Dashboard(管理员身份)。
- CLI命令:
# 创建两个项目 openstack project create project-dev openstack project create project-finance# 创建用户(可选,也可使用现有用户) openstack user create user-dev --password password openstack user create user-finance --password password# 将用户赋予对应项目,赋予 member 角色 openstack role add --project project-dev --user user-dev member openstack role add --project project-finance --user user-finance member
步骤二:创建VLAN类型租户网络(以租户用户身份操作)
- 获取
user-dev
用户的openrc
文件并导入环境变量。 - CLI命令(user-dev):
# 在 project-dev 项目中创建 VLAN 网络 openstack network create --project project-dev --provider-network-type vlan --provider-physical-network provider --provider-segment 101 vlan-net-dev # 创建子网 openstack subnet create --project project-dev --network vlan-net-dev --subnet-range 192.168.101.0/24 --gateway 192.168.101.1 --dhcp dev-subnet# 在 project-finance 项目中创建 VLAN 网络 (使用 user-finance 用户) # ... 过程类似,VLAN ID 改为 102,网段改为 192.168.102.0/24
- Dashboard操作(user-dev):
- 以
user-dev
身份登录Dashboard。 - 导航到【网络】->【网络】->【创建网络】。
- 名称:
vlan-net-dev
。 - 【高级选项】->提供商网络类型:
VLAN
;物理网络:provider
(与ml2_conf.ini
中配置的相同);段ID:101
。 - 下一步,创建子网:
192.168.101.0/24
。
- 以
步骤三:创建路由器并连接网络
- CLI命令(user-dev):
# 创建路由器 openstack router create dev-router # 将路由器接口连接到租户网络 openstack router add subnet dev-router dev-subnet # 将路由器网关设置为外部网络(通常是 public 或 provider) openstack router set dev-router --external-gateway public
- Dashboard操作(user-dev):
- 导航到【网络】->【路由器】->【创建路由器】。
- 名称:
dev-router
,连接到外部网络:public
。 - 进入路由器详情页,在【接口】标签页中点击【添加接口】,选择
vlan-net-dev
的子网。
步骤四:启动实例
- CLI命令(user-dev):
# 创建安全组规则,允许ICMP(ping)和SSH openstack security group rule create --protocol icmp --remote-ip 0.0.0.0/0 default openstack security group rule create --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0 default# 启动实例,并将其放入 vlan-net-dev 网络 openstack server create --flavor <flavor-name> --image <image-name> --network vlan-net-dev dev-vm1
- Dashboard操作(user-dev):
- 导航到【计算】->【实例】->【启动实例】。
- 选择镜像、规格,在网络选项中选择
vlan-net-dev
。
为财务部门(project-finance)重复步骤二、三、四,创建vlan-net-finance
(VLAN 102)、finance-router
和实例finance-vm1
。
步骤五:分配浮动IP(Floating IP)
- CLI命令:
# 申请浮动IP openstack floating ip create public # 将浮动IP关联到实例 openstack server add floating ip dev-vm1 <floating-ip-address>
- Dashboard操作:
- 在【计算】->【实例】页面,找到目标实例,在操作下拉菜单中选择【关联浮动IP】。
四、 验证步骤
-
验证同一VLAN内通信:
- 在
project-dev
项目中再启动一个实例dev-vm2
,其IP为192.168.101.x
。 - 登录
dev-vm1
(通过控制台或浮动IP SSH),尝试ping
同一网络内的dev-vm2
的内部IP。 - 预期结果:ping通,说明同一VLAN内二层互通。
- 在
-
验证不同VLAN间隔离:
- 登录
dev-vm1
,尝试ping
财务部实例finance-vm1
的内部IP(192.168.102.x
)。 - 预期结果:ping不通,请求超时。说明VLAN实现了二层网络隔离。即使知道了对方IP地址,也无法直接通信。
- 登录
-
验证外部网络访问(SNAT):
- 登录
dev-vm1
,尝试ping
一个外部地址(如8.8.8.8
)或执行curl ifconfig.me
获取公网IP。 - 预期结果:可以ping通外部地址,且查出的公网IP是路由器的外部网关IP,而不是实例的私有IP。说明路由器SNAT工作正常。
- 登录
-
验证浮动IP访问(DNAT):
- 从一台可以访问外部网络的外部电脑(如你的实训PC),尝试
ping
或ssh
到分配给dev-vm1
的浮动IP。 - 预期结果:可以成功连接到
dev-vm1
。说明路由器DNAT(端口转发)工作正常。
- 从一台可以访问外部网络的外部电脑(如你的实训PC),尝试
五、 最终结论
通过本实训案例,我们成功设计、部署并验证了OpenStack中的VLAN网络类型:
- 隔离性 Achieved:通过为不同租户(项目)分配不同的VLAN ID(101和102),成功在数据链路层实现了网络流量的严格隔离。研发部和财务部的虚拟机无法直接通信,满足了企业网络安全隔离的基本需求。
- 连通性 Achieved:通过创建虚拟路由器并将其分别连接到租户网络和外部网络,为每个隔离的VLAN网络提供了三层网关和NAT服务。实例可以访问互联网,外部用户也可以通过浮动IP访问特定实例。
- 自动化与管理性:充分利用了OpenStack Neutron的优势,网络、子网、路由器的创建和关联全部通过API/UI自动化完成,DHCP服务也自动提供,极大地简化了传统VLAN网络繁琐的物理配置。
本案例证明了OpenStack VLAN提供商网络是一种高效、灵活且安全的多租户网络解决方案,非常适合用于构建需要严格隔离的企业私有云环境。