Bridging mini-Howto

Christopher Cole cole@coledd.com

v1.11, 7 September 1998

柴田(ひ)@福岡 shibata@opost1.netspace.or.jp と 早川 仁 cz8cb01@linux.or.jp

v1.11j, 1999年 6月26日
このドキュメントでは ethernet ブリッジをどのようにセットアップするかについて説明しています。ethernet ブリッジとはサブネットのトラフィック量を減少させるためにデータパケットをコントロールするデバイス(機器)のことです。通常ブリッジは、多くの通信がグループ内だけで行われ多少の通信を他のグループと行う、2つのグループの間に置かれます。(訳注:このグループは一般的にセグメントと表現されます)

1. はじめに

2. セットアップ

3. よくある質問と答え

4. 翻訳について


1. はじめに

たとえば、同一のネットワーク上にある Macintosh マシンのグループと Unix マシンのグループを考えてみましょう。それぞれのグループ内での通信は非常に多く、一方のグループがネットワーク上に流すトラフィックが、他方のグループ内で通信しようとしているマシンにコリジョンを引き起こしてしまいます。これら 2 つのコンピュータグループの境目に、ブリッジを置くことができます。ブリッジは、一つ一つのデータパケットの宛先を調べ、そのパケットをもう一方の Ethernet セグメントに送るかどうかを決定する働きをします。結果としてコリジョンが減少し、ネットワークの使用率は低下して速度が向上することになります。

(訳注:ethernet の世界では、セグメント上の全マシン(実際には NIC)が全パケットを受信し、自分か全員宛(ブロードキャストメッセージ)以外のパケットを破棄するようになっています。ですから、仮にMACとUNIXが1つのセグメント上にあったとすると、MAC→MACといった通信であってもUNIXもこのパケットを受信してしまいます。2台のマシンから同時にパケットを送信した場合コリジョンとなり、両者のパケットは破棄されてしまいます。ブリッジを立てることによって、セグメント内ではコリジョンは発生しますが、セグメント間のトラフィック量は減少することになります)


2. セットアップ

  1. ``Bridge Config''の入手
    http://mirror.nucba.ac.jp/mirror/stampede/pre-0.90/source/net/BRCFG/source/
  2. 使用するマシンで複数の ethernet を扱えるように /etc/lilo.conf に次の行を追加し、lilo を再実行します。
    append = "ether=0,0,eth1"
            
    
    3枚のNICでブリッジを構成するのであれば、かわりとして下記の設定を使います。
    append = "ether=0,0,eth1 ether=0,0,eth2"
            
    
    4 枚以上の NIC を使うのであれば、さらに ether の指定を追加すればいいでしょう。標準の Linux Kernel の動作としては、1 枚の NIC が検出された時点でそれ以上の検出は行いません。上記の設定は 1 枚目の NIC が検出された後も引き続き NIC の検出を行わせるための指定です。 その他にもブート時のパラメータ設定で(NIC が 2 枚の時は)下記のようにも出来ます。
    linux ether=0,0,eth1
            
    
    また NIC が 3 枚の場合は、次のようになります。
    linux ether=0,0,eth1 ether=0,0,eth2
            
    
  3. BRIDGING を有効にして、kernel の再構築を行います。
  4. 通常ブリッジは IP アドレスを持たないものです。持たせることも出来ますが、普通は IP アドレスを必要としません。(RedHat の場合)ブリッジから IP アドレスを取り除くには /etc/sysconfig/network-scripts/ ディレクトリの ifcfg-lo0 を、ifcfg-eth0ifcfg-eth1 としてコピーします。 この 2 つのファイルの中で ``DEVICE=lo''と書かれている行を探して、それぞれ ``DEVICE=eth0'' と ``DEVICE=eth1''に変更します。 その他のディストリビューションでこれとはちょっと違うでしょうから、(そのディストリビューションでの)適切な方法で行ってください。 (訳注: Slackware では、/etc/rc.d/rc.inet1 を編集することになると思います) 3 枚以上の NIC でブリッジを構成するのであれば、同様に適切な設定を行ってください。
  5. リブートします。新しい kernel はブリッジ機能をサポートしています。また NIC に IP アドレスが割り振られていないことに注意してください。
  6. システムが再起動したら、NIC を「無差別透過:promiscuous」モードにします。このモードではすべてのパケットをそれぞれの NIC で透過させます。
    ifconfig eth0 promisc ; ifconfig eth1 promisc
            
    
    これにより、ブリッジを構成するためにネットワークセグメントに接続されている全ての NIC は、無差別透過モードとなります。
  7. brcfg プログラムでブリッジングを ON にします。
    brcfg -ena
            
    
  8. 各 NIC でのトラフィックが異なっていることを確認します。
    tcpdump -i eth0    (こっちのウインドウで見る)
    tcpdump -i eth1    (別のウインドウで見る)
            
    
  9. sniffer(スニッファー)や tcpdump を他のマシンで動かし、構築したブリッジで正しくセグメントが分離されている事を確認します。


3. よくある質問と答え

  1. Question

    ioctl(SIOCGIFBR) failed: Package not installed
    
    と言うメッセージが出ます。これはどういう意味ですか?

    Answer

    kernel のブリッジ機能を有効にしていません。バージョン 2.0 以降の新しい kernel を入手して、BRIDGING を有効にしてカーネルを再構築しましょう。

  2. Question

    ブリッジの一方のセグメントのマシンから、他方のセグメントのマシンに ping できません。

    Answer

    • ``brcfg -ena''として、ブリッジ機能を有効にしましたか? (brcfg は``bridging is ENABLED'' と表示するはずです)
    • NIC を「無差別透過モード」にしましたか? (``ifconfig''で確認して見てください。``PROMISC''フラグがそれぞれの NIC に表示されるはずです)
    • 複数のメディア(10Base-5/2/T)を持つ NIC の場合は、正しいものが有効になっていますか? NIC と一緒に付いてきた設定プログラムを使用する必要があるかもしれません。

  3. Question

    ブリッジから telnet / ftp ができません。なぜでしょうか?

    Answer

    ブリッジの NIC には IP アドレスが割り振られていないからです。ブリッジはネットワーク上の透過的なものですから。

  4. Question

    routing(経路制御)にあたって何をすればいいでしょうか?

    Answer

    何もいりません! kernel 内のブリッジに関するコードですべての経路制御学習機能が実現されています。ブリッジによって学習された Eternet アドレスを見るには brcfg プログラムをデバッグモードで動かしてください。

    brcfg -deb
            
    

  5. Question

    ブリッジは動いているようですが、なぜブリッジが ``traceroute'' でパスの一部分として見えないのでしょうか?

    Answer

    元来のブリッジの意味合いから、``traceroute'' ではブリッジをパスの一部分として見せるべきではありません。ブリッジはネットワーク上の透過的な部品(ケーブルなど)と同様ですから。

  6. Question

    kernel 再構築時に IP_FORWARD を有効にする必要がありますか?

    Answer

    いいえ。ブリッジ機能を実現する kernel 内のコードはパケットを通しているだけです。IP_FORWARD はそれぞれの NIC に IP アドレスを割り振ったゲートウエイとして動作させるためのものです。

  7. Question

    なぜ brcfg によって返されるポート 1 とポート 2 のイーサネット(MAC)アドレスは同じなのですか? 異なるはずではないのですか?

    Answer

    いいえ。ブリッジとして動作させているすべてのポートはブリッジプログラムによって同じイーサネットアドレスが割り振られます。

  8. Question

    BRIDING はカーネルコンフィグの際に出てこないようですが、どのように有効にすればよいのでしょうか?

    Answer

    ``Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]'' に対して 'Y' を設定することにより表示されます。

  9. Question

    (4 個以上の)多くのハブがカスケード接続されている場合、ethernet 上でタイミングの問題を引き起こしますが、ハブがそのように積み重なっているサブネット中にブリッジが存在する場合、どのような影響がありますか? (訳注:物理的な(電気信号的な)仕様により、ハブは 4 個以上カスケード接続できないことになっています。4 個までではなく、4 個以上です)

    Answer

    ブリッジはそのような 3/4/5 個のハブのルールを解決できます。ブリッジはハブと同じ方法でパケットを扱うわけではありませんので、ネットワーク上でのタイミングの問題は引き起こしません。 (訳注:ハブはレイヤ1(物理層)、ブリッジはレイヤ2(データリンク層)でパケットを扱います)

  10. Question

    ブリッジは 10Mb と 100Mb の ethernet セグメントとの間で使用できるのでしょうか? そのような使い方をした場合、早い方(100Mb)の速度は低下してしまわないでしょうか? (訳注:b = bit です。ですから 10Mb = 10M bit となります)

    Answer

    始めの質問の答えは Yes です。ブリッジは 10Mb と 100Mb のセグメントとを結ぶことができます。(ブリッジの)早い方のネットワークの NIC が 100Mb で動作するものである限り、問題ありません。100Mb ネットワークのホストから 10Mb ネットワークのホストへ送られたパケットは 10Mb/s の速度しか出ませんが、100Mb ネットワークの他のトラフィックは 100Mb のまま動作しつづけます。

    (訳注:つまり、100Mb から 10Mb へ投げられたパケットは、ブリッジで 10Mb へ送られる際に 10Mb で動作することになります。よって 100Mb のホスト→ブリッジの速度、及び 100Mb のホスト→ 100Mb のホストは 100Mb で動作するということです)


4. 翻訳について

当文書は柴田(ひ)@福岡氏の翻訳した 1996/08/23 版を、早川が最新版(1998/09/07)の LDP で更新したものです。

日本語訳:柴田(ひ)@福岡 <shibata@opost1.netspace.or.jp> (1997/01/05)
日本語訳:早川 仁  <cz8cb01@linux.or.jp> (1999/06/26)


sgml21html conversion date: Mon Jan 17 11:35:30 JST 2011