OPNsense 进阶:VLAN 虚拟局域网的划分与隔离
📖 认识赛博立交桥:单臂路由与 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,主要有以下三大核心诉求:
- 🔪 降维打击级的安全隔离 (Security) 如果不划 VLAN,你暴露在公网的 Web 容器(Docker)、不靠谱的智能家居 IoT 设备,以及存放全家重要资产的 NAS 都在同一个网段。一旦某个边缘容器被黑客攻破,他就能利用局域网进行“横向移动”,直捣黄龙。而划分 VLAN 后,被攻破的节点只能在自己的“隔离病房”里打转,绝对摸不到你的核心数据。
- 🤫 物理掐断广播噪音 (Broadcast Containment) 在同一个局域网里,设备之间会频繁通过广播包互相大喊大叫(例如 ARP 寻址、DHCP 请求、mDNS 发现等)。随着虚拟机和容器越来越多,这种“广播风暴”会无谓地消耗网络带宽和 PVE 宿主机的 CPU 资源。VLAN 就像一堵堵隔音墙,把广播噪音死死限制在各自独立的房间内。
- 🚦 上帝视角的流量管控 (Traffic Control) 划分了 VLAN 之后,不同网段设备之间的互相串门(即 East-West 东西向流量),就无法在底层网桥直接通讯,必须强制上交到路由器(OPNsense)进行中转。这就给了我们“赛博交警”执法的空间——你可以轻松制定防火墙规则:比如允许桌面端随时访问存储网,但存储网绝对不准主动连接互联网,从而从根源上阻断勒索病毒的传播。
🧱 施工前置准备 (Requirements)
Section titled “🧱 施工前置准备 (Requirements)”在对网络架构挥舞“赛博手术刀”之前,请确保你的指挥中心和实验室环境已经具备了以下条件。千万别在毫无准备的情况下强拆承重墙:
- 核心门神: 一台已经在 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 拓扑设计图
| 逻辑网段 / 隔离区域 | 寻址参数 (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”的赛博通行证。
-
新建 VLAN 标签 导航至 接口 (Interfaces) -> 设备 (Devices) -> VLAN。点击页面右下角的
+ (添加)按钮。 -
参数精准录入 (以 Tag 30 为例) 面对弹出的配置窗口,请对照下表极其严谨地填写。这步操作决定了数据包能否正确挂载“赛博身份证”:
OPNsense VLAN 配置参数对照表 (以 Tag 30 为例)参数名称 (Name) 官方释义与底层逻辑 (Meaning) 施工建议与写法 (How to write) 设备
(Device)该虚拟接口在底层的设备名称,通常以 vlan或qinq开头。建议留空。让系统自动按顺序生成(如 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。
备注写得全,未来排错时才不会抓狂。 -
落印保存 再次核对 父接口 和 Tag 30 是否匹配。确认无误后,点击右下角的 保存 (Save)。
📘 进阶指南:揭秘 802.1Q VLAN PCP (优先级)
Section titled “📘 进阶指南:揭秘 802.1Q VLAN PCP (优先级)”虽然我们建议保持默认,但作为包工头,咱们得知道这 3 个比特位的“行业潜规则”。
📊 IEEE 802.1p 优先级对照表
Section titled “📊 IEEE 802.1p 优先级对照表”在 802.1Q 标签中,PCP 取值范围为 0-7。交换机会根据这个等级,在网络塞车时决定谁是“救护车”,谁是“私家车”。
| 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 能管理的“虚拟网卡”,并给它分配网关地址。
-
分配逻辑接口
- 导航至 接口 (Interfaces) -> 分配 (Assignments)。
- 在页面最下方的下拉菜单中,选中刚刚建好的
vlan0.30接口。 - 直接在旁边的描述框里,填写你能清楚辨识的名称,例如
VLAN30_Docker,然后点击右侧的 “+” (添加) 按钮。
-
配置接口参数与 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) 完成配置。
- 在左侧菜单栏找到并点击进入刚刚生成的
3.配置基础防火墙规则
Section titled “3.配置基础防火墙规则”在 OPNsense 中,新建立的接口默认是“拒绝所有 (Deny All)”的状态。为了让 VLAN 30 里的设备能正常访问互联网,我们需要为其添加防火墙放行规则。
-
导航至 防火墙 (Firewall) -> 规则 (Rules) -> VLAN30_Docker。
-
点击 “+” (添加) 按钮,参考默认的 LAN 接口,创建一条全放行规则:
- 动作 (Action):选择
通过 (Pass)。 - TCP/IP 版本:根据实际网络选择
IPv4或IPv4+IPv6。 - 协议 (Protocol):选择
任何 (any)。 - 源地址 (Source):下拉选择
VLAN30_Docker 地址和VLAN30_Docker 网络 - 目标 (Destination):保持默认的
任何 (any)。
- 动作 (Action):选择
-
点击页面底部的 保存 (Save),然后点击右上角的 应用更改 (Apply changes)。
进阶提示:初期配置我们允许了所有出站访问。在实际运行中,你可以根据内网安全需求,自行修改或添加更严格的防火墙规则。
4.配置 Dnsmasq 自动分配 IP
Section titled “4.配置 Dnsmasq 自动分配 IP”在配置好防火墙后,我们需要让 VLAN 30 具备自动分配 IP 的能力。
-
绑定 Dnsmasq 监听接口
- 导航至 服务 (Services) -> Dnsmasq DNS & DHCP -> 常规 (General)。
- 在页面中的 接口 (Interfaces) 下拉框中,找到并选中我们新建的
VLAN30_Docker。 - 滚动到页面底部,点击 保存 (Save) 按钮。
-
配置 DHCP 地址范围
- 在左侧菜单栏,切换到 服务 (Services) -> Dnsmasq -> DHCP 范围 (DHCP Ranges)。
- 点击右下角的 “+” (添加) 按钮。
- 在弹出的配置窗口中:
- 接口 (Interface):选中
VLAN30_Docker。 - 起始地址 (Start address) 与 结束地址 (End address):输入你想分配的 IP 范围。例如
10.0.30.100和10.0.30.200。 - 描述 (Description):写上这组地址的备注信息,方便日后管理。
- 其他选项(如网关、DNS服务器等)保持默认,系统会自动下发该 VLAN 的网关 IP。
- 接口 (Interface):选中
- 点击窗口下方的 保存 (Save)。
至此,VLAN 30 的网络基础建设全部完成!
5. 开启 PVE 网桥的 VLAN 感知 (VLAN Aware)
Section titled “5. 开启 PVE 网桥的 VLAN 感知 (VLAN Aware)”OPNsense 端的配置虽然完成了,但如果我们的底层宿主机 Proxmox VE 不具备识别 VLAN 标签的能力,流量依然无法连通。
-
导航至网络设置
- 登录 PVE 管理后台,选中你的物理节点(例如
pve)。 - 点击 系统 (System) -> 网络 (Network)。
- 登录 PVE 管理后台,选中你的物理节点(例如
-
配置虚拟网桥 (vmbr0)
- 找到负责 LAN 口流量的网桥,通常是
vmbr0。 - 双击打开该接口的编辑页面。
- VLAN 感知 (VLAN Aware):务必 勾选此项 ✅。
- 核心原理:只有开启了此功能,PVE 的虚拟交换机才会处理并透传带有 VLAN 标签的数据包。如果不勾选,虚拟机将无法通过该网桥与 OPNsense 的 VLAN 接口进行通讯,导致获取不到 IP。
- 备注 (Comments):在备注字段标注该接口的用途,例如:“Trunk Port to OPNsense & LAN”。
- 找到负责 LAN 口流量的网桥,通常是
-
应用配置
- 点击 完成 (OK) 返回列表。
- 确认无误后,点击上方的 应用更改 (Apply Configuration) 让设置立即生效。
⚠️ 包工头血泪避坑指南: 强烈建议在点击应用更改后,直接重启一次 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 性能,且速度会大打折扣。
➡️ 下一步 (Next Steps)
Section titled “➡️ 下一步 (Next Steps)”- 创建虚拟机并验证:创建虚拟机并使用VLAN。