Skip to content

OPNsense 进阶:VLAN 虚拟局域网的划分与隔离

🌱 创建: 2026/04/04 ⏱️ 更新: 2026/05/22

This content is not available in your language yet.

📖 认识赛博立交桥:单臂路由与 VLAN

Section titled “📖 认识赛博立交桥:单臂路由与 VLAN”

在上一篇文章中,我们已经成功让 OPNsense 接管了整栋大楼的入户网络。现在,我们要开始“分房”了。

VLAN (Virtual Local Area Network) 允许在同一台物理交换机内创建独立的二层网络。这意味着您可以将单个物理网络划分为多个逻辑网络,即使连接到同一台交换机,也能将不同的设备组彼此隔离。 —— 网络工程基础理论

在咱们这种 PVE All-In-One 的架构下,OPNsense 作为一个虚拟机,其实是用单臂路由 (Router on a Stick) 的模式在工作。它通过一根虚拟的“Trunk 树干”(也就是 PVE 的 vmbr0)连接着所有的虚拟机。通过打上不同的 VLAN Tag,赛博交警 OPNsense 就能精准识别并隔离 TrueNAS、Docker 和日常上网的流量。

🤔 为什么要费尽心思划分 VLAN?

Section titled “🤔 为什么要费尽心思划分 VLAN?”

作为一名合格的“赛博包工头”,搭建 赛博工地 绝不能让所有设备都在一个大通铺里混居。为家庭实验室划分 VLAN,主要有以下三大核心诉求:

  1. 🔪 降维打击级的安全隔离 (Security) 如果不划 VLAN,你暴露在公网的 Web 容器(Docker)、不靠谱的智能家居 IoT 设备,以及存放全家重要资产的 NAS 都在同一个网段。一旦某个边缘容器被黑客攻破,他就能利用局域网进行“横向移动”,直捣黄龙。而划分 VLAN 后,被攻破的节点只能在自己的“隔离病房”里打转,绝对摸不到你的核心数据。
  2. 🤫 物理掐断广播噪音 (Broadcast Containment) 在同一个局域网里,设备之间会频繁通过广播包互相大喊大叫(例如 ARP 寻址、DHCP 请求、mDNS 发现等)。随着虚拟机和容器越来越多,这种“广播风暴”会无谓地消耗网络带宽和 PVE 宿主机的 CPU 资源。VLAN 就像一堵堵隔音墙,把广播噪音死死限制在各自独立的房间内。
  3. 🚦 上帝视角的流量管控 (Traffic Control) 划分了 VLAN 之后,不同网段设备之间的互相串门(即 East-West 东西向流量),就无法在底层网桥直接通讯,必须强制上交到路由器(OPNsense)进行中转。这就给了我们“赛博交警”执法的空间——你可以轻松制定防火墙规则:比如允许桌面端随时访问存储网,但存储网绝对不准主动连接互联网,从而从根源上阻断勒索病毒的传播。

在对网络架构挥舞“赛博手术刀”之前,请确保你的指挥中心和实验室环境已经具备了以下条件。千万别在毫无准备的情况下强拆承重墙:

  • 核心门神: 一台已经在 PVE 中稳定运行的 OPNsense 虚拟机,且 LAN 口(父接口)已联通网络,能够正常登录其后台(例如咱们此前的 192.168.100.110),OPNsense安装参考上一篇 OPNsense安装)。
  • 底层地基: 拥有 PVE 宿主机最高管理权限(root),因为一切的物理基础在于我们要先改造 PVE 的虚拟交换机(vmbr0)。
  • 施工图纸: 一份明确的 VLAN ID 和网段划分计划。就像咱们拓扑图里画好的那样(Tag10 给 TrueNAS,Tag30 给 Docker),网段和 ID 必须提前在脑子里对齐,切忌边配边拍脑袋。
  • 保命药丸(极其重要): 为 OPNsense 虚拟机打好一个全新的快照! 如果你在这场手术中切断了大动脉(配错管理网的 VLAN),你可以一键回滚,而不是对着断网的设备流下悔恨的泪水。
  • 科学上网环境: 能避免各种奇怪的问题。

📋 赛博工地勘测表 (VLAN 分房图纸)

Section titled “📋 赛博工地勘测表 (VLAN 分房图纸)”

在正式挥舞赛博手术刀切割网段之前,请务必先将这套“分房方案”在脑海中过一遍,并根据你的实际拓扑图进行调整。

  • 划分 VLAN 前的 PVE 拓扑设计图
root@pve-studio:~# cat /etc/network/vlan-blueprint.yaml
逻辑网段 / 隔离区域寻址参数 (Tag / 网关)角色剧本 & 包工头备注
🛡️ Native VLAN
管理与基础网
Untagged (不打标)
10.0.0.x
👑 中枢神经 (绝对信任区)
PVE 宿主机 (10.0.0.50) 和 OPNsense 的管理口 (192.168.100.247) 都在这里。这是最高权限网段,所有网络崩盘时的最后抢修通道。
🗄️ VLAN 10
存储与集群网
Tag: 10
网关: 10.0.10.1
🏦 地下金库 (重兵把守)
专属数据通道。TrueNAS 存储 (192.168.100.244 准备迁入) 在此网段,Kubernetes 集群的底层存储交互也在这里。禁止主动访问外网。
🐳 VLAN 30
应用容器网
Tag: 30
网关: 10.0.30.1
🏭 黑汗工厂 (隔离运行区)
给 Docker 虚拟机准备的干活场地。这部分服务可能会暴露给公网(如反向代理),如果被黑客攻破,VLAN 墙能把他死死锁在这个网段里。
🤖 VLAN 40
IoT 智能家居网
Tag: 40
网关: 10.0.40.1
🔌 赛博贫民窟 (云端妥协区)
专门收留深度绑定云端(如米家、萤石云)的智能插座与摄像头。仅放行出海访问互联网的权限,死死堵住其访问内部任何其他网段(如 NAS、管理网)的通道,防止其作为跳板向内渗透。
💻 VLAN 50
终端与桌面/访客网
Tag: 50
网关: 10.0.50.1
🛋️ 员工休息室 (日常接入)
预留给 Desktop VM 或未来划分的普通上网设备。可以畅游互联网,但想跨界访问 VLAN 10 的 NAS,必须经过 OPNsense 的严格审批。

关于 802.1Q VLAN PCP(优先级代码点)


📜 官方图纸与施工规范 (Official Resources)

Section titled “📜 官方图纸与施工规范 (Official Resources)”

遇到玄学 Bug 或不知所措时,翻看官方原版说明书永远是最稳妥的保命手段。别总指望搜索引擎里的二手教程,去原产地看一手情报才是正道:

  • 🌐 OPNsense 官网大本营:咱们这座赛博海关总署的开源发源地。
  • 📖 接口参数白皮书 (Interfaces Manual)
    • 包工头点评:。这里极其冷酷、严谨地罗列了 VLAN 每个底层字段的学术定义。如果你对某些高级参数(比如 802.1p)有受虐般的探索欲,请随时查阅这份“字典”。
  • 🛠️ 官方 VLAN 架构实战指南 (How-to Guide)
    • 包工头点评:这是官方手把手教你盖房子的“施工录像”。它不仅举例演示了 VLAN 到底该怎么划分,甚至还附带了如何结合 LAGG (链路聚合) 来榨干多网卡性能的高级玩法。如果你想看看正规军是怎么部署企业级网络的,这篇必读。

🎬 施工演示录像 (Video Walk-through)

Section titled “🎬 施工演示录像 (Video Walk-through)”
正在嗅探浏览器语言并加载赛博录像...

🔨 核心施工流程 (VLAN Setup Steps)

Section titled “🔨 核心施工流程 (VLAN Setup Steps)”

接下来,我们要正式挥舞“赛博手术刀”,在完整的内网大平层中切出独立的安全隔离区。为了防止大家在网段的迷宫里绕晕,包工头把整个浩大的切分工程拆分成了多个极其明确的施工阶段。

请一步一动,严格按图纸施工。

1. 凭空造物 (在 OPNsense 中创建 VLAN 30 标签)

Section titled “1. 凭空造物 (在 OPNsense 中创建 VLAN 30 标签)”

地基浇筑完成后,现在请登录 OPNsense 后台(例如我们的10.0.0.1)。我们要在这个虚拟路由引擎里,正式刻制名为“30”的赛博通行证。

  1. 新建 VLAN 标签 导航至 接口 (Interfaces) -> 设备 (Devices) -> VLAN。点击页面右下角的 + (添加) 按钮。

  2. 参数精准录入 (以 Tag 30 为例) 面对弹出的配置窗口,请对照下表极其严谨地填写。这步操作决定了数据包能否正确挂载“赛博身份证”:

    OPNsense VLAN 配置参数对照表 (以 Tag 30 为例)
    参数名称 (Name)官方释义与底层逻辑 (Meaning)施工建议与写法 (How to write)
    设备
    (Device)
    该虚拟接口在底层的设备名称,通常以 vlanqinq 开头。建议留空。让系统自动按顺序生成(如 vlan0.1.30)。也可手动输入符合规范的名称。
    父接口
    (Parent interface)
    [核心大动脉] 承载 VLAN 流量的底层网卡,Tag 标签将在此接口上流转。必须选择你的内网 LAN 接口!
    ⚠️ 高危警告:认准你分配给内网的网卡(如 vtnet0),绝对不能选成连光猫的 WAN 口!
    VLAN 标签
    (VLAN tag)
    符合 802.1Q 标准的 VLAN ID (1-4094),决定了该接口所属的隔离区域。输入 30
    (严格对应咱们蓝图里给 Docker 规划的 Tag ID)。
    VLAN 优先级
    (VLAN priority)
    即 802.1Q VLAN PCP(优先级代码点),在拥堵时决定谁先排队走。保持默认 Best Effort (0, default)
    家庭实验室暂不需要开启硬核 QoS。
    描述
    (Description)
    给这块虚拟网卡写的“人类备注”。输入 VLAN30_Docker
    备注写得全,未来排错时才不会抓狂。
  3. 落印保存 再次核对 父接口Tag 30 是否匹配。确认无误后,点击右下角的 保存 (Save)

创建 VLAN 30 实操截图

📘 进阶指南:揭秘 802.1Q VLAN PCP (优先级)

Section titled “📘 进阶指南:揭秘 802.1Q VLAN PCP (优先级)”

虽然我们建议保持默认,但作为包工头,咱们得知道这 3 个比特位的“行业潜规则”。

在 802.1Q 标签中,PCP 取值范围为 0-7。交换机会根据这个等级,在网络塞车时决定谁是“救护车”,谁是“私家车”。

root@pve-studio:~# cat /etc/network/qos-8021p.yaml
PCP 值优先级等级流量类型 (Traffic Type)典型应用场景 & 包工头备注
0默认 (Default)尽力而为 (Best Effort)普通网页浏览、常规数据传输。强烈建议:咱们折腾佬保持全部填 0 即可,不要自找麻烦!
1最低后台 (Background)NAS 后台静默同步、大文件异地备份。只在网络完全空闲时才跑,绝不抢网速。
2优秀努力 (Excellent Effort)内部重要但不紧急的业务数据。
3中低关键应用 (Critical Applications)数据库查询、核心业务 API 请求。
4中高视频 (Video)流媒体播放、安防监控视频流(对延迟有一点要求,通常 < 100ms 容忍度)。
5语音 (Voice)VoIP 网络电话、微信语音通话(对延迟极其敏感,通常 < 10ms 容忍度)。
6极高互联网络控制 (Internetwork Control)BGP / OSPF 等路由器之间的底层沟通协议包(防断网生命线)。
7最高网络控制 (Network Control)STP 生成树协议等维护底层物理网络拓扑的数据包。


2. 挂牌营业 (接口分配与 IP 寻址)

Section titled “2. 挂牌营业 (接口分配与 IP 寻址)”

刚才建的只是个虚无的标签,现在我们要把它实体化,变成一块 OPNsense 能管理的“虚拟网卡”,并给它分配网关地址。

  1. 分配逻辑接口

    • 导航至 接口 (Interfaces) -> 分配 (Assignments)
    • 在页面最下方的下拉菜单中,选中刚刚建好的 vlan0.30 接口。
    • 直接在旁边的描述框里,填写你能清楚辨识的名称,例如 VLAN30_Docker,然后点击右侧的 “+” (添加) 按钮。
  2. 配置接口参数与 IP

    • 在左侧菜单栏找到并点击进入刚刚生成的 VLAN30_Docker 接口。
    • 启用接口 (Enable Interface):勾选此项,以激活网卡。
    • 防止接口删除 (Lock):顺便勾选此项。这能锁定该接口,避免日后因误操作删除了接口,导致整个 VLAN 的防火墙和 DHCP 规则连带失效。
    • IPv4 配置类型:选择 静态 IPv4 (Static IPv4)
    • IPv6 配置类型:因为目前暂时不使用 IPv6,所以保持默认的不开启状态(None)即可。
    • MAC 地址与 MTU:这些选项根据你的具体网络需求修改,也可以和我一样直接保持默认。
    • 设置网关 IP:在下方的 IPv4 地址栏输入我们规划好的网关 IP:10.0.30.1,后面的子网掩码选择 24
    • 点击页面最下方的 保存 (Save),然后点击右上角的 应用更改 (Apply changes) 完成配置。
创建 VLAN 30 实操截图 创建 VLAN 30 实操截图

在 OPNsense 中,新建立的接口默认是“拒绝所有 (Deny All)”的状态。为了让 VLAN 30 里的设备能正常访问互联网,我们需要为其添加防火墙放行规则。

  1. 导航至 防火墙 (Firewall) -> 规则 (Rules) -> VLAN30_Docker

  2. 点击 “+” (添加) 按钮,参考默认的 LAN 接口,创建一条全放行规则:

    • 动作 (Action):选择 通过 (Pass)
    • TCP/IP 版本:根据实际网络选择 IPv4IPv4+IPv6
    • 协议 (Protocol):选择 任何 (any)
    • 源地址 (Source):下拉选择 VLAN30_Docker 地址VLAN30_Docker 网络
    • 目标 (Destination):保持默认的 任何 (any)
  3. 点击页面底部的 保存 (Save),然后点击右上角的 应用更改 (Apply changes)

进阶提示:初期配置我们允许了所有出站访问。在实际运行中,你可以根据内网安全需求,自行修改或添加更严格的防火墙规则。

开启 DHCP

在配置好防火墙后,我们需要让 VLAN 30 具备自动分配 IP 的能力。

  1. 绑定 Dnsmasq 监听接口

    • 导航至 服务 (Services) -> Dnsmasq DNS & DHCP -> 常规 (General)
    • 在页面中的 接口 (Interfaces) 下拉框中,找到并选中我们新建的 VLAN30_Docker
    • 滚动到页面底部,点击 保存 (Save) 按钮。
  2. 配置 DHCP 地址范围

    • 在左侧菜单栏,切换到 服务 (Services) -> Dnsmasq -> DHCP 范围 (DHCP Ranges)
    • 点击右下角的 “+” (添加) 按钮。
    • 在弹出的配置窗口中:
      • 接口 (Interface):选中 VLAN30_Docker
      • 起始地址 (Start address)结束地址 (End address):输入你想分配的 IP 范围。例如 10.0.30.10010.0.30.200
      • 描述 (Description):写上这组地址的备注信息,方便日后管理。
      • 其他选项(如网关、DNS服务器等)保持默认,系统会自动下发该 VLAN 的网关 IP。
    • 点击窗口下方的 保存 (Save)
    开启 DHCP 开启 DHCP

至此,VLAN 30 的网络基础建设全部完成!


5. 开启 PVE 网桥的 VLAN 感知 (VLAN Aware)

Section titled “5. 开启 PVE 网桥的 VLAN 感知 (VLAN Aware)”

OPNsense 端的配置虽然完成了,但如果我们的底层宿主机 Proxmox VE 不具备识别 VLAN 标签的能力,流量依然无法连通。

  1. 导航至网络设置

    • 登录 PVE 管理后台,选中你的物理节点(例如 pve)。
    • 点击 系统 (System) -> 网络 (Network)
  2. 配置虚拟网桥 (vmbr0)

    • 找到负责 LAN 口流量的网桥,通常是 vmbr0
    • 双击打开该接口的编辑页面。
    • VLAN 感知 (VLAN Aware):务必 勾选此项 ✅。
      • 核心原理:只有开启了此功能,PVE 的虚拟交换机才会处理并透传带有 VLAN 标签的数据包。如果不勾选,虚拟机将无法通过该网桥与 OPNsense 的 VLAN 接口进行通讯,导致获取不到 IP。
    • 备注 (Comments):在备注字段标注该接口的用途,例如:“Trunk Port to OPNsense & LAN”。
  3. 应用配置

    • 点击 完成 (OK) 返回列表。
    • 确认无误后,点击上方的 应用更改 (Apply Configuration) 让设置立即生效。
    开启 DHCP

    ⚠️ 包工头血泪避坑指南: 强烈建议在点击应用更改后,直接重启一次 PVE 节点! 本包工头第一次配置时,因为偷懒没有重启,导致底层网络模块没有彻底重载 VLAN 配置,新建的虚拟机死活获取不到 DHCP 分配的 IP,排查了半天。为了不走弯路,重启治百病!


6:内网性能测试与 VLAN 规划指南

Section titled “6:内网性能测试与 VLAN 规划指南”

很多朋友喜欢疯狂划分 VLAN,把所有设备都隔离开。但我们必须了解跨 VLAN 通信带来的性能损耗。这里我们用 iperf3 进行三组极限测试。

1. 同 VLAN 虚拟机互测 (二层转发)

Section titled “1. 同 VLAN 虚拟机互测 (二层转发)”
  • 环境:两台 PVE 内部的 Debian 虚拟机,均处于 VLAN 30
  • 结果:测速高达 14.8 Gbps。此时观察 OPNsense 的流量监控,几乎只有百 KB 级别的底噪流量。
  • 原理解析:同网段通信无需经过网关。数据包直接通过 PVE 内部的虚拟交换机(二层网络)完成交换。这个极限速度完全取决于物理机的 CPU 与内存总线性能。

2. 跨 VLAN 虚拟机互测 (三层路由)

Section titled “2. 跨 VLAN 虚拟机互测 (三层路由)”
  • 环境:一台虚拟机在 VLAN 30,另一台修改为 VLAN 10
  • 结果:测速降至 3.5 Gbps 左右。此时 OPNsense 的流量图瞬间飙升,与测速结果完全同步。
  • 原理解析:跨网段通信必须经过网关(OPNsense)。系统需要对每一个数据包进行拆包、检查防火墙规则、重新路由封包。这种计算非常消耗防火墙的 CPU 性能,导致吞吐量下降。

3. 实体机跨网络测速 (物理接口瓶颈)

Section titled “3. 实体机跨网络测速 (物理接口瓶颈)”
  • 环境:使用通过网线连接的实体电脑测试。
  • 结果:稳定在 940 Mbps 左右。
  • 原理解析:受限于实体电脑和交换机之间的千兆物理网口(1000 Mbps)上限。

💡 包工头架构建议: 这组测试给我们的网络规划提供了一个核心依据:频繁进行大文件传输的设备,强烈建议放在同一个 VLAN! 例如你的主力电脑和 NAS。如果将它们分在不同的 VLAN,每一次拷文件都在疯狂榨干软路由的 CPU 性能,且速度会大打折扣。