brctl は Bridge Control の略です。
Linux では、このコマンドはイーサネット ブリッジの作成と操作に使用されます。
これは通常、サーバーに複数のイーサネット ネットワークがあり、それらを組み合わせて 1 つの論理ネットワークとして提示する場合に使用されます。
たとえば、eth0 と eth1 がある場合、それらを組み合わせて br0 として表示できます。これにより、ネットワーク トラフィックに eth0 と eth1 の両方が使用されます。
このチュートリアルでは、以下について説明しました:
1. addbr を使用して新しいイーサネット ブリッジを作成します
brctl addbr を使用して、新しいイーサネット ブリッジを作成できます。
次の例では、このサーバーに 3 つのイーサネット ブリッジを作成しました:dev、stage、prod。
brctl addbr dev brctl addbr stage brctl addbr prod
この段階では、これは他のイーサネット ネットワークを持たない単なる空のイーサネット ブリッジであることに注意してください。
この brctl は、以前に説明した Linux EtherChannel NIC ボンディングとは少し異なることに注意してください。
2. show を使用して利用可能なイーサネット ブリッジを表示
brctl show を使用すると、サーバーで利用可能なすべてのイーサネット ブリッジを表示できます。
次の例は、作成したばかりの 3 つのブリッジの現在のインスタンスをすべて表示します。
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no stage 8000.000000000000 no
最後の列「インターフェース」に何もないことに気付いた場合。これは、現在、このブリッジにはイーサネット デバイスが関連付けられていないことを意味します。
関連ノート:イーサネット カードを操作する 9 つの Linux ethtool の例
3. delbr を使用して既存のイーサネット ブリッジを削除する
brctl delbr を使用して、既存のイーサネット ブリッジを削除できます。
次の例では、イーサネット ブリッジの「stage」インスタンスを削除します。
brctl delbr stage
show コマンドからわかるように、「ステージ」イーサネット ブリッジはもう表示されません。
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
ブリッジがアクティブ (つまりアップ) の場合は、それを削除できることに注意してください。まずブリッジを停止してから削除する必要があります。
また、以前の brctl コマンドは brcfg と呼ばれていたことに注意してください。
4.インターフェイスを既存のブリッジに追加
brctl addif を使用して、既存のイーサネット ブリッジにインターフェイスを追加できます。
次の例では、先ほど作成したブリッジ「dev」にイーサネット ネットワーク eth0 を追加します。
警告:何か問題が発生した場合、そのマシンへのネットワーク接続が失われる可能性があるため、重要なマシンではこれを試さないでください。これは、コンソールにアクセスできるテスト インスタンスでのみ試してください。
brctl addif dev eth0
上記では:
- これにより、本当に eth0 がブリッジ「dev」のポートになります。
- したがって、eth0 に到着するすべてのフレームは、実際にブリッジに到着したかのように処理されます。
- また、フレームが「dev」ブリッジで送信される場合、eth0 が使用されます。複数のインターフェースが「dev」ブリッジの一部である場合、eth0 はブリッジから発信フレームを送信する潜在的な候補になります。
eth0 を「dev」ブリッジに追加した後、brctl show コマンドは次のように表示します。
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 prod 8000.000000000000 no
上記の出力からわかるように、最後の列「interfaces」には「dev」ブリッジの eth0 があります。
注:eth0 を「dev」ブリッジに追加する際に問題が発生した場合は、コンソールから次のコマンドを実行して、dev ブリッジを削除してください。
# brctl delbr dev
また、ループバック インターフェイスをブリッジに追加しようとすると、次の無効な引数コマンドが返されることに注意してください。# brctl addif dev lo
ブリッジ dev に lo を追加できません:無効な引数
ご想像のとおり、システムに存在しないインターフェイスをブリッジに追加することはできません。
# brctl addif dev eth2 interface eth2 does not exist!
5.複数のインターフェースを既存のブリッジに追加
上記の例では、イーサネット デバイス (eth0) を 1 つだけブリッジに追加しました。
しかし、ブリッジを使用するという全体的な考え方は、ブリッジにインターフェースを追加することです。
次の例では、eth0 と eth1 の両方をブリッジ「dev」に追加しています。
# brctl addif dev eth0 eth1
次の出力からわかるように、開発ブリッジには 2 つの行が表示されます。最後の列「インターフェイス」には、「dev」イーサネット ブリッジの eth0 と eth1 の両方が表示されます。
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 eth1 prod 8000.000000000000 no
注:特定のイーサネット インターフェイスがすでにブリッジの一部である場合、それを別のブリッジに追加することはできません。
基本的に、1 つのネットワークは 1 つのブリッジのみに属することができます。そうでない場合、別のブリッジに追加しようとすると、次のエラー メッセージが表示されます。
# brctl addif prod eth1 device eth1 is already a member of a bridge; can't enslave it to bridge prod
6. Bridge の MAC アドレスの追跡
brctl showmacs を使用すると、ブリッジのすべての学習済み MAC アドレスを確認できます。
次の例では、現時点で、イーサネット ブリッジ「prod」に接続されている 2 つの MAC アドレスは次のとおりです。このデータは、ブリッジに接続されているものの現在のステータスに応じて変化し続けます。
# brctl showmacs prod port no mac addr is local? ageing timer 1 00:50:56:89:54:bc yes 0.00 2 00:60:50:46:bc:40 no 0.00
7.ブリッジの Mac アドレスのエージング タイムの設定
次の例では、「dev」イーサネット ブリッジで MAC アドレスのエージング タイムを 120 秒に設定しています。
brctl setaging dev 120
上記では:
- dev は、この値を設定するブリッジの名前です
- 120 秒
- したがって、「dev」ブリッジのフレームが 120 秒以内に表示されない場合、「dev」ブリッジは転送データベースから MAC アドレスを削除します。
8.イーサネット ブリッジでのスパニング ツリーのセットアップ
brctl stp を使用して、イーサネット ブリッジにスパニング ツリーをセットアップできます。
ただし、デフォルトでは、ブリッジを作成するときにスパニング ツリーは有効になっていません。
スパニング ツリーは、ネットワーク上に複数のブリッジがある場合に役立ちます。それらはすべて協力して、2 つのイーサネット間の最短パスを見つけることができます。
次の例では、「dev」イーサネット ブリッジでスパニング ツリーを有効にしています。
on または yes を使用して、スパニング ツリーを有効にできます。したがって、次のコマンドは両方ともまったく同じことを行います。
brctl stp dev on brctl stp dev yes
次の show 出力からわかるように、「dev」ブリッジの「STP 有効」列の値は「yes」になりました。
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 yes prod 8000.000000000000 no
イーサネット ブリッジでスパニング ツリーをオフにするには、次の手順を実行します。
# brctl stp dev off # brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
9.ブリッジの STP パラメータ値の表示
STP はスパニング ツリー プロトコルの略です。
ブリッジで stp を有効にすると、以下に示すように showstp を使用して、ブリッジのすべての stp パラメータ値を表示できます。
以下は、「dev」ブリッジの stp パラメータとその現在の値を表示します。
# brctl showstp dev dev bridge id 000a.000000000000 designated root 000a.000000000000 root port 0 path cost 0 max age 19.99 bridge max age 19.99 hello time 1.99 bridge hello time 1.99 forward delay 14.99 bridge forward delay 14.99 ageing time 299.95 hello timer 0.00 tcn timer 0.00 topology change timer 0.00 gc timer 0.00 hash elasticity 4 hash max 512 mc last member count 2 mc init query count 2 mc router 1 mc snooping 1 mc last member timer 0.99 mc membership timer 259.96 mc querier timer 254.96 mc query interval 124.98 mc response interval 9.99 mc init query interval 31.24 flags
10.ブリッジ パラメータ値の変更
特定のブリッジのスパニング ツリー パラメータのデフォルト値を変更できます。作成したブリッジの他のパラメータ値も変更できます。
以下の表に記載されている set コマンドはすべて、brctl で始まります。例:
brctl setageing dev 100
次の表に、brctl で使用できる set コマンドを示します。時間の値は秒単位です。
brctl コマンド | 説明 |
---|---|
ブリッジ時間の設定 | 熟成時間を設定 |
setbridgeprio ブリッジ プリオ | ブリッジの優先度を設定します (0 から 65535 の間) |
setfd ブリッジ時間 | ブリッジ転送遅延の設定 |
セテロ橋時間 | ハロータイムを設定 |
setmaxage ブリッジ時間 | メッセージの最大有効期間を設定する |
setgcint ブリッジ時間 | ガベージ コレクションの間隔を秒単位で設定 |
セサシェル ブリッジ int | ハッシュの弾力性の設定 |
sethashmax ブリッジ int | ハッシュの最大値を設定 |
setmclmc ブリッジ int | マルチキャストの最終メンバー数を設定する |
setmcrouter ブリッジ int | マルチキャスト ルーターの設定 |
setmcsnoop ブリッジ int | マルチキャスト スヌーピングを設定する |
setmcsqc ブリッジ int | マルチキャスト起動クエリ数を設定 |
setmclmi ブリッジ時間 | マルチキャストの最終メンバー間隔を設定 |
setmcmi ブリッジ時間 | マルチキャスト メンバーシップの間隔を設定する |
setmcqpi ブリッジ時間 | マルチキャスト クエリア間隔の設定 |
setmcqi ブリッジ時間 | マルチキャスト クエリ間隔の設定 |
setmcqri ブリッジ時間 | マルチキャスト クエリの応答間隔を設定する |
setmcqri ブリッジ時間 | マルチキャスト起動クエリ間隔を設定 |
setpathcost ブリッジ ポート コスト | パス コストの設定 |
setportprio ブリッジ ポート prio | ポートの優先順位を設定します (0 から 255 の間) |
setportmcrouter ブリッジ ポート int | ポート マルチキャスト ルーターの設定 |
セサシェル ブリッジ int | ハッシュ弾性値を設定 |
.