🔌

Cumulus Linux でレイヤー2/レイヤー3ポートを構成する手順まとめ (3)

に公開

Cumulus Linux を使っていると、ポートを L2 で使うのか、L3 で使うのか、VLAN と SVI をどう組み合わせるのかで少し混乱しやすいです。

今回は Cumulus Linux 3.5 を前提に、レイヤー2ポート、レイヤー3ポート、VLAN、SVI の基本を整理します。

単にコマンドを並べるだけではなく、どの場面で L2 にするのかどの場面で L3 にするのかブリッジと VLAN をどう考えるか まで含めてまとめます。

まずは考え方を整理する

Cumulus Linux では、ポート設定を始める前に次の整理をしておくと混乱しにくいです。

  • 単純なスイッチポートとして使いたい → L2
  • ルータのように隣接機器と IP でつなぎたい → L3
  • VLAN ごとに IP を持たせたい → SVI

ここが曖昧だと、「とりあえずポートに IP を付ける」「あとからブリッジに入れたくなる」といった形で設定が崩れやすくなります。

データポートを有効にする

Cumulus Linux では、管理ポート eth0 を除くデータプレーンポートは swp1, swp2 のような名前で見えます。

必要に応じてポートを有効にします。

net add interface swp1
net pending
net commit

まとめて有効にする場合は範囲指定もできます。

net add interface swp1-52
net pending
net commit

まずここでポートが管理的に有効になっていないと、その後どんな設定を入れてもリンク確認で止まりやすいです。

リンク状態を確認する

ケーブル接続やインターフェース状態を確認するには、次のようなコマンドを使います。

net show interface swp1

まずはここで、

  • ポートが administratively up か
  • リンクアップしているか
  • 速度や duplex が期待どおりか

を見るのが基本です。

設定が悪いのか、そもそも物理リンクが上がっていないのかを最初に切り分けられるだけでも、かなり楽になります。

レイヤー2ポートとして使う

L2 ポートとして使う場合は、ブリッジにポートを参加させます。

net add bridge bridge ports swp1
net pending
net commit

複数ポートをまとめて追加することもできます。

net add bridge bridge ports swp1-10,12,14-20
net pending
net commit

この構成は、ポートを「同じブロードキャストドメインに属するスイッチポート」として扱いたいときに使います。

レイヤー3ポートとして使う

ポートを L3 のアクセスポートとして使う場合は、直接 IP アドレスを設定します。

net add interface swp1 ip address 10.1.1.1/30
net pending
net commit

これは、ルータ間やスイッチ間でポイントツーポイント接続を作るときに分かりやすい方法です。

L2 にしない代わりに、そのポート自体が L3 インターフェースとしてふるまいます。

L2 と L3 のどちらを選ぶか

ここで迷いやすいので、ざっくりした判断基準を書いておきます。

  • L2 を選ぶ場面

    • アクセスポートやトランクポートとして使いたい
    • VLAN ベースでセグメントを分けたい
    • ブリッジに参加させたい
  • L3 を選ぶ場面

    • 隣接機器とルーティング前提で接続したい
    • /30 や /31 などのポイントツーポイント構成にしたい
    • VLAN を挟まず直接 IP 接続したい

「このポートはスイッチポートなのか、ルータポートなのか」を先に決めるとぶれにくいです。

VLAN と SVI を使う

ブリッジ上で IP を持たせたい場合は、ポートに直接 IP を付けるのではなく、VLAN インターフェース(SVI)を使います。

たとえば VLAN 100 に IP を割り当てる場合は次のようにします。

net add vlan 100 ip address 10.2.2.1/24
net add bridge bridge pvid 100
net pending
net commit

SVI を使うことで、その VLAN に対して L3 ルーティングを持たせられます。

ここでのイメージは、

  • ポートは L2 で VLAN を流す
  • VLAN 自体に IP を持たせる

という形です。

ポートに IP を入れたままブリッジへ入れない

ここは地味にハマりやすいところです。

ポートインターフェースに直接 IP を設定している場合、そのポートをそのままブリッジへ入れることはできません。ブリッジと VLAN を使う構成にしたいなら、ポートではなく VLAN(SVI)側に IP を持たせる方が自然です。

実際には、

  • 最初に L3 ポートとして設定した
  • 後から VLAN を流したくなった
  • そのまま bridge へ入れようとして詰まる

という流れが起こりやすいです。

access と trunk の考え方

Cumulus Linux でも、access ポートと trunk ポートの考え方は一般的なスイッチと同じです。

  • access: 1 つの VLAN を流す
  • trunk: 複数 VLAN を流す

access VLAN を設定する例:

net add interface swp47 bridge access 210

これは、そのポートを VLAN 210 のアクセスポートとして扱うイメージです。

一方、複数 VLAN を流したい場合は trunk 側の発想になります。

net add bridge bridge vids 100-2999

ただし、実際には「bridge 全体に許可する VLAN」と「各ポートでどう扱うか」を分けて見る必要があります。ここを雑に設定すると、VLAN が通るはずなのに通らない、逆に余計な VLAN が流れてしまう、という状態になりやすいです。

よくあるハマり方

個人的にハマりやすいと感じるのは次のパターンです。

  • ポートに IP を入れたまま bridge に入れようとする
  • access と trunk の使い分けが曖昧なまま設定する
  • VLAN を作っただけで通信できると思ってしまう
  • bridge 側とポート側の設定を分けて見ていない

Cumulus Linux はかなり素直な挙動ですが、その分「自分がどのレイヤーを作っているのか」が曖昧だと、設定もそのまま曖昧になります。

よく使う確認コマンド

L2/L3 周りでは、次のコマンドをよく使います。

net show interface all
net show interface swp1
net show bridge vlan
net show bridge bridge
net show bridge link
cat /etc/network/interfaces

設定後は、net show/etc/network/interfaces の両方を見ておくと理解しやすいです。

特に bridge / VLAN 周りは、

  • どのポートが bridge に入っているか
  • どの VLAN が許可されているか
  • どこに IP が付いているか

を分けて見ると追いやすくなります。

まとめ

Cumulus Linux 3.5 でポート設定を整理すると、基本は次のようになります。

  • 単純な L2 接続ならブリッジに参加させる
  • 単純な L3 接続ならポートへ直接 IP を設定する
  • VLAN ごとに IP を持たせたいなら SVI を使う
  • access と trunk を明確に分けて考える

このあたりが整理できると、次の MLAG や LACP の設定もかなり追いやすくなります。

次は、Cumulus Linux で MLAG を構成する手順をまとめます。

VideogLabo

Discussion