云计算百科
云计算领域专业知识百科平台

OpenStack Neutron 网络管理:从原理到实操,看懂云平台软件定义网络

OpenStack Neutron 网络管理:从原理到实操,看懂云平台软件定义网络

摘要:Neutron 作为 OpenStack 的网络组件,实现网络即服务 (NaaS),负责虚拟网络、子网、路由器、浮动 IP、安全组的全生命周期管理。本文结合实际实验环境,拆解核心组件、网络模型、完整实操流程以及故障排查思路,帮你彻底搞懂 OpenStack 虚拟网络。

一、什么是 Neutron?

Neutron 是 OpenStack 软件定义网络(SDN)组件,代号 Networking 服务,对外提供 REST API,允许用户自定义虚拟网络拓扑,不用改动物理交换机配置,就可以创建隔离租户网络、虚拟路由器、浮动 IP、安全组防火墙Research C…。

Neutron 和其他组件交互关系:

  • Keystone:认证鉴权,所有 Neutron API 请求必须携带 Token;
  • Nova:创建虚拟机时,将虚拟机网卡(port)接入指定虚拟网络;虚拟机启停会通知 Neutron 处理端口;
  • Horizon(Dashboard):Web 图形界面,可视化管理网络、子网、路由器、安全组;
  • RabbitMQ 消息队列:neutron‑server 与各个 agent 之间 RPC 通信载体;
  • MySQL 数据库:存储网络、子网、端口、路由器、安全组元数据。
  • 旧版本 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 网段重复,也不会冲突隔离。

    核心资源对象概念

  • Network(网络):二层虚拟网络,相当于虚拟交换机;分为提供者网络 (Provider)和租户自服务网络 (Self‑service)。
  • Subnet(子网):属于某个 Network,定义 IP 网段、网关、DNS、地址分配池,DHCP 基于子网工作。一个网络可以有多个子网(支持 IPv4/IPv6)。
  • Port(端口):虚拟网卡接口,虚拟机网卡、路由器接口本质都是 port,保存 MAC、固定 IP、安全组信息。
  • Router(虚拟路由器):三层设备,连接不同子网,实现内网访问外网,提供浮动 IP(Floating IP)NAT。
  • Floating IP 浮动 IP:外网可访问 IP,做 1‑to‑1 DNAT,绑定虚拟机 port,虚拟机拥有内网固定 IP + 浮动公网 IP。
  • Security Group 安全组:分布式防火墙,基于 iptables,对虚拟机端口做出入向访问控制,是端口级别,不是子网级别。
  • 三、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

    六、虚拟机完整网络访问流程

  • 用户创建虚拟机,Nova 请求 Neutron 创建 port;port 分配固定内网 IP、MAC、绑定安全组;
  • nova‑compute 调用 libvirt,将虚拟机虚拟网卡连接到计算节点 OVS 集成网桥;
  • 虚拟机内部发出 DHCP 请求,报文通过隧道到达网络节点neutron‑dhcp‑agent(dnsmasq),分配 IP;
  • 虚拟机访问外网:报文送到计算节点 OVS,通过 VXLAN 隧道送到网络节点,进入 L3‑agent 的 router 命名空间,执行 SNAT 转发访问外网;
  • 外网访问虚拟机:访问浮动 IP,L3 agent 执行 DNAT 转换为虚拟机内网 IP,报文隧道转发到对应计算节点虚拟机。
  • 七、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、常见故障现象

  • 虚拟机启动拿不到 IP 地址
    • 检查 dhcp‑agent 状态是否 alive;
    • 检查子网是否开启 DHCP;
    • 检查计算节点和网络节点隧道 (VXLAN) 网络互通;
  • 虚拟机内网通,不能访问外网
    • 检查路由器是否设置外部网关;
    • 查看 l3‑agent 日志,看 SNAT iptables 规则是否生成;
  • 浮动 IP 无法访问虚拟机
    • 确认安全组放通对应端口;
    • 确认浮动 IP 已经正确绑定虚拟机 port;
    • 检查物理网络,浮动 IP 网段路由指向网络节点。
  • 4、命名空间调试

    L3、DHCP 都运行在 network namespace,可以用 ip netns 查看:

    ip netns list
    # 进入路由器命名空间调试网络
    ip netns exec qrouter‑xxxx bash

    八、补充:Neutron 与其他 OpenStack 组件协同回顾

  • Keystone:Neutron 所有 API 接口都需要 keystone 做身份认证;
  • Nova:创建实例必须指定 neutron 网络,nova 调用 neutron 分配 port;实例迁移的时候,neutron 负责迁移端口网络配置;
  • Glance:镜像本身不直接参与网络,cloud‑init 镜像依靠 neutron metadata‑agent 获取主机配置;
  • Cinder:块存储和网络解耦,但是虚拟机挂载卷走存储网络,不受 neutron 管理。
  • 九、总结

  • Neutron 提供软件定义网络能力,Network、Subnet、Port、Router、Floating‑IP、Security‑Group 是六大核心资源;
  • 分为 Provider 物理映射网络和 Self‑service Overlay (VXLAN/GRE) 租户网络;Overlay 网络依赖虚拟路由器实现内外网互通;
  • 架构上neutron‑server统一 API 入口,各类 Agent 分布在网络、计算节点完成实际数据面工作,通过 RabbitMQ 消息队列通信;
  • 排错优先看openstack network agent list确认 agent 存活,再看/var/log/neutron日志,结合ip netns进入命名空间抓包调试。
  • 学习建议:在实验环境完整走一遍创建网络、子网、路由器、浮动 IP 流程,故意制造故障(停止 dhcp‑agent),观察虚拟机网络异常现象,加深理解。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » OpenStack Neutron 网络管理:从原理到实操,看懂云平台软件定义网络
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!