MikroTik RouterOS VLAN 隔离实战避坑指南

发布于2026-08-02 11:11 阅读13次 手把手教你用 RouterOS VLAN 实现多网段隔离,详解 Bridge VLAN Filtering 配置、Access/Trunk/Hybrid 端口区别、以及常见的 VLAN 不通排查思路。附完整配置命令,适合中小企业网络管理维护参考。
# MikroTik RouterOS VLAN 隔离实战避坑指南
## 前言
在中小型企业网络管理中,VLAN 隔离是刚需——办公网、访客WiFi、监控网、服务器区需要彼此隔离但又共享同一套交换机设备。
MikroTik RouterOS 的 VLAN 配置灵活度很高,但正因如此,也埋了不少坑。本文记录一次实际部署中的完整配置过程和踩坑经验。
## 场景需求
某办公室网络通过一台 RB4011 路由器 + CRS328 交换机,需要划分以下 VLAN:
| VLAN ID | 名称 | 网段 | 用途 |
|---------|------|------|------|
| 1 | MGMT | 192.168.1.0/24 | 设备管理 |
| 10 | Office | 192.168.10.0/24 | 办公网络 |
| 20 | Guest | 192.168.20.0/24 | 访客WiFi(仅上网) |
| 30 | Camera | 192.168.30.0/24 | 监控(完全隔离) |
要求:
- 办公网可访问互联网,但不可访问监控网
- 访客网只能访问互联网,不能访问内网任何网段
- 监控网完全隔离,仅 NVR 可达
## 第一步:创建 VLAN 接口
```bash
# 在路由器上创建各 VLAN 接口
/interface vlan
add name=vlan10 vlan-id=10 interface=bridge
add name=vlan20 vlan-id=20 interface=bridge
add name=vlan30 vlan-id=30 interface=bridge
# 给各 VLAN 配置 IP(作为各网段网关)
/ip address
add address=192.168.1.1/24 interface=bridge
add address=192.168.10.1/24 interface=vlan10
add address=192.168.20.1/24 interface=vlan20
add address=192.168.30.1/24 interface=vlan30
```
## 第二步:配置 Bridge VLAN Filtering ⚠️ 大坑所在
很多教程只教你创建 VLAN 接口但不说 Bridge VLAN Filtering,这是不通的最大原因。
```bash
# 开启桥的 VLAN 过滤(这是关键!)
/interface bridge set bridge vlan-filtering=yes
# 配置 Bridge VLAN 表
/interface bridge vlan
add bridge=bridge tagged=bridge vlan-ids=1
add bridge=bridge tagged=bridge,ether2 vlan-ids=10
add bridge=bridge tagged=bridge,ether2 vlan-ids=20
add bridge=bridge tagged=bridge,ether3 vlan-ids=30
# 端口 PVID 设置
/interface bridge port
set [find interface=ether2] pvid=10 # 办公接入端口
set [find interface=ether3] pvid=30 # 监控接入端口
```
### 坑 1:忘记把 bridge 本身加入 tagged 列表
`bridge` 接口本身必须作为 tagged 端口出现在每个 VLAN 的 tagged 列表中,否则三层路由不通!因为 VLAN 接口是挂在 bridge 上的,数据包需要经由 bridge 接口进入 VLAN 子接口做三层转发。
典型症状:同一 VLAN 内设备互 ping 正常,但跨 VLAN ping 网关不通。
### 坑 2:Access 端口的 PVID 必须和 untagged 一致
如果一个端口是 Access 模式(只属于一个 VLAN),要同时设置:
```bash
/interface bridge port set ether2 pvid=10
/interface bridge vlan add bridge=bridge untagged=ether2 vlan-ids=10
```
只设 PVID 不设 untagged,进来的无标签帧会被打上 VLAN 10 标签,但出去的帧不会去掉标签,导致终端设备收到带标签的帧直接丢弃。
## 第三步:配置 DHCP Server
```bash
# 为每个 VLAN 创建 DHCP 地址池
/ip pool
add name=pool-office ranges=192.168.10.100-192.168.10.200
add name=pool-guest ranges=192.168.20.100-192.168.20.200
add name=pool-camera ranges=192.168.30.100-192.168.30.200
# 创建 DHCP Server
/ip dhcp-server
add name=dhcp-office interface=vlan10 address-pool=pool-office
add name=dhcp-guest interface=vlan20 address-pool=pool-guest
add name=dhcp-camera interface=vlan30 address-pool=pool-camera
# DHCP 网络参数
/ip dhcp-server network
add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=223.5.5.5
add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=223.5.5.5
add address=192.168.30.0/24 gateway=192.168.30.1
```
### 坑 3:DHCP Server 绑在 VLAN 接口上不是 bridge 上
RouterOS 的 DHCP Server 要绑定到对应 VLAN 子接口而非物理接口或 bridge。如果绑错,客户端在错误的广播域发包,永远收不到 DHCP Offer。
## 第四步:防火墙规则实现隔离
```bash
/ip firewall filter
# 禁止访客网访问内网(除 DNS 和 DHCP)
add chain=forward src-address=192.168.20.0/24 dst-address=192.168.0.0/16 \
action=drop comment="Guest block LAN"
# 允许访客 DNS(放前面)
add chain=forward src-address=192.168.20.0/24 dst-address=192.168.1.1 \
protocol=udp dst-port=53 action=accept
# 禁止办公网访问监控网
add chain=forward src-address=192.168.10.0/24 dst-address=192.168.30.0/24 \
action=drop comment="Office block Camera"
# 禁止监控网访问外网
add chain=forward src-address=192.168.30.0/24 out-interface=pppoe-out1 \
action=drop comment="Camera block WAN"
```
## 排查思路总结
当 VLAN 不通时,按以下顺序排查:
1. **检查 Bridge VLAN Filtering 是否开启** → `/interface bridge print`
2. **检查 VLAN 表中 tagged/untagged 端口是否正确** → `/interface bridge vlan print`
3. **检查端口 PVID** → `/interface bridge port print`
4. **检查网关 ARP** → 从终端 ping 网关看是否有回应
5. **检查防火墙规则** → 暂时禁用所有 filter 规则测试是否防火墙误拦
6. **抓包确认** → `/tool sniffer quick interface=bridge port=67` 看 DHCP 包走向
## 小结
RouterOS VLAN 配置的核心是理解 Bridge VLAN Filtering 的 tagged/untagged/PVID 三者的关系:
- **tagged**:端口发出的帧带 VLAN 标签
- **untagged**:端口发出的帧去掉 VLAN 标签(终端设备用)
- **PVID**:端口收到无标签帧时,打上哪个 VLAN ID
把这三角关系搞清楚了,RouterOS 的 VLAN 配置就能游刃有余。