开篇废话
最近有个案件需求大概是这样的,使用 Mikrotik 家的 CRS3xx 交换机进行 vlan 设置,稍微研究了下,和我之前自用的 1XX 配置又不一样了,所以在这里分享下奇奇怪怪的配置办法
CRS1XX 的话参考我去年的文章: 我的家里网络配置 - 交换机篇
总所周知 RouterOS 底层就是 Linux ,所以才出现了各个交换机配置不太一样的情况…. 就是这种奇妙情况,然后发现 GPT 不太好使,所以在这里记录下(
本文由于可能截图到不能截图的部分,所以全程口述
正文
别抄错机型了
首先我们看一下是不是这款交换芯片的机器:
[admin@MikroTik] > /interface/ethernet/switch/print
Columns: NAME, TYPE, L3-HW-OFFLOADING, QOS-HW-OFFLOADING
# NAME TYPE L3-HW-OFFLOADING QOS-HW-OFFLOADING
0 switch1 Marvell-98DX3257 no no
1 switch2 Atheros-8227 no no
[admin@MikroTik] >
如果是的话可以放心继续,当然我的型号是:
[admin@MikroTik] > /system/routerboard/print
routerboard: yes
model: CRS354-48G-4S+2Q+
revision: r4
serial-number: xxx
firmware-type: qca9531L
factory-firmware: 7.18.2
current-firmware: 7.18.2
upgrade-firmware: 7.21.3
[admin@MikroTik] >
也可以给个参考。
创建 bridge
这个和 CRS1XX 也差不多,先要有一个软件桥接器,然后把想要沟通的 vlan 都扔进去:
/interface bridge add name=bridge vlan-filtering=yes pvid=1
/interface vlan add interface=bridge name=MGNT vlan-id=888 disabled=no
/interface vlan add interface=bridge name=WAN vlan-id=101 disabled=no
/interface vlan add interface=bridge name=LAN vlan-id=1001 disabled=no
添加 vlan 规则
这里偷懒就只写 101 了,实际配置比较复杂,凑合看
access
ether1 = vlan101 = untag
/interface bridge port add bridge=bridge interface=ether1 pvid=101 frame-types=admit-only-untagged-and-priority-tagged
trunk
/interface bridge port add bridge=bridge interface=sfp-sfpplus1 frame-types=admit-only-vlan-tagged
/interface bridge port add bridge=bridge interface=sfp-sfpplus2 frame-types=admit-only-vlan-tagged
/interface bridge port add bridge=bridge interface=sfp-sfpplus3 frame-types=admit-only-vlan-tagged
/interface bridge port add bridge=bridge interface=sfp-sfpplus4 frame-types=admit-only-vlan-tagged
hybrid
举一反三
pvid=101 frame-types=admit-all
添加 bridge 规则
这里的 tagged 就约等于标准的 Linux 语法了,然后 untagged 可以不用加,会自动根据前面设置的 pvid 设定(我事后研究配置才发现的),当然加了最好
/interface bridge vlan add bridge=bridge vlan-ids=101 tagged=sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3,sfp-sfpplus4 untagged=ether1
简单 ACL
当然这玩意可以增加有限的 ACL 规则,研究了下大概是这个套路:
我们先研究下 bridge 走了哪个交换机芯片,当然大概率是 switch1
ether49 是管理口,单独走了个交换机芯片:
[admin@MikroTik]> /interface/ethernet/switch/port/prin
t
Flags: R - RUNNING
Columns: NAME, SWITCH, L3-HW-OFFLOADING, STORM-RATE
# NAME SWITCH L3-HW-OFFLOADING STORM-RATE
0 qsfpplus1-1 switch1 yes 100
...
8 R sfp-sfpplus1 switch1 yes 100
...
12 R ether1 switch1 yes 100
...
60 R ether49 switch2 yes 100
所以基本上这个套路,所以我们可以对着 switch1 增加 ACL 规则来实现非常浅的4层过滤功能:
/interface/ethernet/switch/rule add switch=switch1 protocol=tcp dst-port=23 new-dst-ports="" comment="ban telnet anywhere"
对的,这里没有什么明显的 drop / reject ,而是把匹配的流量用 new-dst-ports="" 导航不存在的 interface 然后包就被丢弃了。
总结
反正这玩意还是很奇妙的,毕竟用 Linux 的思维管理交换机还是太少见了,这种因为交换机硬件不同而命令不一样的更罕见了。。。
然后别指望这破 CPU 跑三层 NAT:
[admin@MikroTik] > /system/resource/print
uptime: 8m56s
version: 7.21.3 (stable)
build-time: 2026-02-12 13:10:04
factory-software: 7.16.2
free-memory: 75.4MiB
total-memory: 128.0MiB
cpu: MIPS 24Kc V7.4
cpu-count: 1
cpu-frequency: 650MHz
cpu-load: 100%
free-hdd-space: 19.8MiB
total-hdd-space: 32.0MiB
write-sect-since-reboot: 385
write-sect-total: 5750
architecture-name: mipsbe
board-name: CRS354-48G-4S+2Q+
platform: MikroTik
[admin@MikroTik] >
完