OpenStack Neutron 网络管理:从原理到实操,看懂云平台软件定义网络
摘要:Neutron 作为 OpenStack 的网络组件,实现网络即服务 (NaaS),负责虚拟网络、子网、路由器、浮动 IP、安全组的全生命周期管理。本文结合实际实验环境,拆解核心组件、网络模型、完整实操流程以及故障排查思路,帮你彻底搞懂 OpenStack 虚拟网络。
一、什么是 Neutron?
Neutron 是 OpenStack 软件定义网络(SDN)组件,代号 Networking 服务,对外提供 REST API,允许用户自定义虚拟网络拓扑,不用改动物理交换机配置,就可以创建隔离租户网络、虚拟路由器、浮动 IP、安全组防火墙Research C…。
Neutron 和其他组件交互关系:
旧版本 OpenStack 使用 nova‑network,功能简单、隔离能力弱,已经完全被 Neutron 替代。
二、Neutron 核心组件拆解

Neutron 采用Server‑Agent 分布式架构,控制节点运行neutron‑server,控制节点 / 计算节点部署各类 Agent,通过消息队列完成通信OpenStack …。
表格
| neutron‑server | 控制节点 | 接收 REST API 请求,数据库读写,下发任务给各个 Agent |
| neutron‑openvswitch‑agent | 所有计算 / 网络节点 | 数据平面,管理 OVS 网桥,处理二层流量转发 |
| neutron‑dhcp‑agent | 网络节点 | 通过 dnsmasq 为虚拟子网提供 DHCP,给虚拟机分配 IP |
| neutron‑l3‑agent | 网络节点 | 实现虚拟路由器,NAT、浮动 IP、租户内外网互通,使用 Linux network namespace 隔离不同租户路由器 |
| neutron‑metadata‑agent | 网络 / 计算节点 | 处理虚拟机元数据请求,云主机获取 cloud‑init 配置 |
关键知识点:Namespace 网络命名空间,不同租户的路由器、DHCP 服务运行在独立命名空间,即使 IP 网段重复,也不会冲突隔离。
核心资源对象概念
三、OpenStack 支持的网络模型
1. Provider Network(提供者网络)
直接映射物理网络,租户网络和物理二层打通,有三种模式:
- Flat:无 VLAN 标签,所有实例在同一个物理二层,没有隔离。
- VLAN:802.1Q 标签,每个虚拟网络对应物理交换机一个 VLAN,适合物理网络规划充分的环境。
2. Self‑service 租户 Overlay 网络(覆盖网络)
不需要物理交换机做配置,通过封装隧道实现跨节点二层隔离,多租户最常用,支持 VXLAN、GRE 协议OpenStack …。
- VXLAN:现在主流,UDP 封装,VNI 区分不同租户网络,支持上万虚拟网络;注意 MTU 要调小,因为隧道增加报文头部,否则会出现分片丢包。
- GRE:IP 封装,性能弱于 VXLAN,现在逐步淘汰。
Overlay 租户网络虚拟机本身只有内网 IP,必须借助 Neutron 虚拟路由器才能访问外网,或者被外网访问(绑定浮动 IP)。
四、实验实操:完整创建租户网络环境

实验环境:Packstack 部署 OpenStack,控制节点192.168.108.10,执行前先加载管理员环境变量
source keystonerc_admin
整体流程:创建私有网络 → 创建私有子网 → 创建虚拟路由器 → 路由器添加内网子网接口 → 设置路由器外网网关 → 创建虚拟机接入网络 → 绑定浮动IP访问虚拟机OpenStack …。
1、命令行创建私有网络
# 创建租户私有网络neiwang
openstack network create neiwang
2、创建子网(网段 172.16.0.0/24,网关 172.16.0.1,DNS 114.114.114.114)
openstack subnet create subnet172 \\
–network neiwang \\
–subnet-range 172.16.0.0/24 \\
–gateway 172.16.0.1 \\
–dns-nameserver 114.114.114.114
3、创建虚拟路由器
openstack router create vrouter
4、路由器添加内网子网接口(把私有子网挂到路由器)
openstack router add subnet vrouter subnet172
5、设置路由器外部网关,连接外网提供者网络
public是环境已经存在的外网 provider 网络名称
openstack router set –external-gateway public vrouter
6、查看网络资源验证
openstack network list
openstack subnet list
openstack router list
openstack port list
7、Dashboard 页面操作路径
登录 Horizon:项目 → 网络 → 网络,图形界面同样可以完成上面全部操作:创建网络→添加子网→创建路由器→添加接口、设置外部网关。
8、启动虚拟机接入该网络,绑定浮动 IP
# 启动实例,指定网络
openstack server create vm-test –image cirros-0.5.2 –flavor m1.tiny –nic net-id=neiwang的UUID
# 创建浮动IP,从外网public网络分配
openstack floating ip create public
# 将浮动IP绑定到虚拟机
openstack server add floating ip vm-test 10.0.0.23
完成后,虚拟机内部网卡获取172.16.0.x内网 IP;外部可以用浮动 IP 访问实例。
五、安全组详解(虚拟防火墙)

安全组作用在虚拟机端口层面,底层是 iptables 规则。
- 默认安全组策略:拒绝入方向流量,允许全部出方向;
- 可以添加规则:允许 ICMP (ping)、SSH (22)、HTTP (80) 等端口;
- 安全组是应用在 port,不是子网:同一子网不同虚拟机可以挂载不同安全组。
命令示例:
# 查看安全组列表
openstack security group list
# 允许ping入站
openstack security group rule create –proto icmp –ingress default
# 允许22端口ssh访问
openstack security group rule create –proto tcp –dst-port 22 –ingress default
六、虚拟机完整网络访问流程
七、Neutron 故障排查指南

1、查看服务状态
source keystonerc_admin
openstack network agent list
# 所有agent状态必须为Alive;如果是dead,网络功能异常
2、日志位置
所有 neutron 日志统一存放在 /var/log/neutron/ 目录下
- neutron‑server.log:API 接口错误
- neutron‑l3‑agent.log:路由器、浮动 IP、NAT 故障
- neutron‑dhcp‑agent.log:虚拟机拿不到 IP 优先看这个日志
- openvswitch‑agent.log:二层 OVS 转发问题
排错技巧:可以修改/etc/neutron/neutron.conf开启debug=True,重启 neutron 服务,日志输出详细交互信息,生产环境不要长期开启 debug,会消耗磁盘和 CPU。
3、常见故障现象
- 检查 dhcp‑agent 状态是否 alive;
- 检查子网是否开启 DHCP;
- 检查计算节点和网络节点隧道 (VXLAN) 网络互通;
- 检查路由器是否设置外部网关;
- 查看 l3‑agent 日志,看 SNAT iptables 规则是否生成;
- 确认安全组放通对应端口;
- 确认浮动 IP 已经正确绑定虚拟机 port;
- 检查物理网络,浮动 IP 网段路由指向网络节点。
4、命名空间调试
L3、DHCP 都运行在 network namespace,可以用 ip netns 查看:
ip netns list
# 进入路由器命名空间调试网络
ip netns exec qrouter‑xxxx bash
八、补充:Neutron 与其他 OpenStack 组件协同回顾
九、总结
学习建议:在实验环境完整走一遍创建网络、子网、路由器、浮动 IP 流程,故意制造故障(停止 dhcp‑agent),观察虚拟机网络异常现象,加深理解。
网硕互联帮助中心





![【BAS】规范精讲[1]: 一块电池一个实例?六种设备形态与电池热插拔上报全流程-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/11/20261101224102-6ae7bffe0d7c8-220x150.png)

评论前必须登录!
注册