Mikrotik CRS 3xx 系列交换机 RouterOS 模式下的 vlan 配置

开篇废话

最近有个案件需求大概是这样的,使用 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] >