Mikrotik CRS3xxシリーズスイッチのRouterOSモードでのVLAN設定

はじめに

この記事は中国語からの翻訳です。不自然な点がありましたらご容赦ください。

原記事(中国語)

最近あるプロジェクトで Mikrotik の CRS3xx スイッチを使った VLAN 設定が必要になりました。少し調べてみたところ、自宅で使っている CRS1xx とは設定方法が異なっており、その独特な設定方法をここで共有します。

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 のみ記載しています。実際の設定はより複雑ですが、応用して読んでください

アクセスポート

ether1 = vlan101 = untag

/interface bridge port add bridge=bridge interface=ether1 pvid=101 frame-types=admit-only-untagged-and-priority-tagged

トランクポート

/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

ハイブリッドポート

応用すれば自明です:

pvid=101 frame-types=admit-all

Bridge VLAN ルールの追加

ここの tagged は標準的な Linux のブリッジ VLAN 構文とほぼ同じです。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/print
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="" で存在しないインターフェースにリダイレクトすることでパケットを破棄します。

まとめ

Linux の思考でスイッチを管理するというのは珍しい体験です。さらにスイッチチップによってコマンドが変わるというのはもっと稀なケースです。

なお、この貧弱な CPU にレイヤー3 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] >




以上。






制作・著作
━━━━━
ⒽⓊⒼⒼⓎ