cole@coledd.com
shibata@opost1.netspace.or.jp
と 早川 仁
cz8cb01@linux.or.jp
たとえば、同一のネットワーク上にある Macintosh マシンのグループと Unix マシンのグループを考えてみましょう。それぞれのグループ内での通信は非常に多く、一方のグループがネットワーク上に流すトラフィックが、他方のグループ内で通信しようとしているマシンにコリジョンを引き起こしてしまいます。これら 2 つのコンピュータグループの境目に、ブリッジを置くことができます。ブリッジは、一つ一つのデータパケットの宛先を調べ、そのパケットをもう一方の Ethernet セグメントに送るかどうかを決定する働きをします。結果としてコリジョンが減少し、ネットワークの使用率は低下して速度が向上することになります。
(訳注:ethernet の世界では、セグメント上の全マシン(実際には NIC)が全パケットを受信し、自分か全員宛(ブロードキャストメッセージ)以外のパケットを破棄するようになっています。ですから、仮にMACとUNIXが1つのセグメント上にあったとすると、MAC→MACといった通信であってもUNIXもこのパケットを受信してしまいます。2台のマシンから同時にパケットを送信した場合コリジョンとなり、両者のパケットは破棄されてしまいます。ブリッジを立てることによって、セグメント内ではコリジョンは発生しますが、セグメント間のトラフィック量は減少することになります)
ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz
/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
BRIDGING
を有効にして、kernel の再構築を行います。
/etc/sysconfig/network-scripts/
ディレクトリの ifcfg-lo0
を、ifcfg-eth0
と ifcfg-eth1
としてコピーします。
この 2 つのファイルの中で ``DEVICE=lo
''と書かれている行を探して、それぞれ ``DEVICE=eth0
'' と ``DEVICE=eth1
''に変更します。
その他のディストリビューションでこれとはちょっと違うでしょうから、(そのディストリビューションでの)適切な方法で行ってください。
(訳注: Slackware では、/etc/rc.d/rc.inet1 を編集することになると思います)
3 枚以上の NIC でブリッジを構成するのであれば、同様に適切な設定を行ってください。
ifconfig eth0 promisc ; ifconfig eth1 promisc
これにより、ブリッジを構成するためにネットワークセグメントに接続されている全ての NIC は、無差別透過モードとなります。
brcfg
プログラムでブリッジングを ON にします。
brcfg -ena
tcpdump -i eth0 (こっちのウインドウで見る)
tcpdump -i eth1 (別のウインドウで見る)
tcpdump
を他のマシンで動かし、構築したブリッジで正しくセグメントが分離されている事を確認します。
ioctl(SIOCGIFBR) failed: Package not installed
と言うメッセージが出ます。これはどういう意味ですか?
kernel のブリッジ機能を有効にしていません。バージョン 2.0 以降の新しい kernel を入手して、BRIDGING
を有効にしてカーネルを再構築しましょう。
ブリッジの一方のセグメントのマシンから、他方のセグメントのマシンに ping できません。
brcfg -ena
''として、ブリッジ機能を有効にしましたか?
(brcfg
は``bridging is ENABLED
'' と表示するはずです)ifconfig
''で確認して見てください。``PROMISC
''フラグがそれぞれの NIC に表示されるはずです)ブリッジから telnet
/ ftp
ができません。なぜでしょうか?
ブリッジの NIC には IP アドレスが割り振られていないからです。ブリッジはネットワーク上の透過的なものですから。
routing(経路制御)にあたって何をすればいいでしょうか?
何もいりません! kernel 内のブリッジに関するコードですべての経路制御学習機能が実現されています。ブリッジによって学習された Eternet アドレスを見るには brcfg
プログラムをデバッグモードで動かしてください。
brcfg -deb
ブリッジは動いているようですが、なぜブリッジが ``traceroute'' でパスの一部分として見えないのでしょうか?
元来のブリッジの意味合いから、``traceroute'' ではブリッジをパスの一部分として見せるべきではありません。ブリッジはネットワーク上の透過的な部品(ケーブルなど)と同様ですから。
kernel 再構築時に IP_FORWARD
を有効にする必要がありますか?
いいえ。ブリッジ機能を実現する kernel 内のコードはパケットを通しているだけです。IP_FORWARD
はそれぞれの NIC に IP アドレスを割り振ったゲートウエイとして動作させるためのものです。
なぜ brcfg
によって返されるポート 1 とポート 2 のイーサネット(MAC)アドレスは同じなのですか? 異なるはずではないのですか?
いいえ。ブリッジとして動作させているすべてのポートはブリッジプログラムによって同じイーサネットアドレスが割り振られます。
BRIDING
はカーネルコンフィグの際に出てこないようですが、どのように有効にすればよいのでしょうか?
``Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]'' に対して 'Y' を設定することにより表示されます。
(4 個以上の)多くのハブがカスケード接続されている場合、ethernet 上でタイミングの問題を引き起こしますが、ハブがそのように積み重なっているサブネット中にブリッジが存在する場合、どのような影響がありますか? (訳注:物理的な(電気信号的な)仕様により、ハブは 4 個以上カスケード接続できないことになっています。4 個までではなく、4 個以上です)
ブリッジはそのような 3/4/5 個のハブのルールを解決できます。ブリッジはハブと同じ方法でパケットを扱うわけではありませんので、ネットワーク上でのタイミングの問題は引き起こしません。 (訳注:ハブはレイヤ1(物理層)、ブリッジはレイヤ2(データリンク層)でパケットを扱います)
ブリッジは 10Mb と 100Mb の ethernet セグメントとの間で使用できるのでしょうか? そのような使い方をした場合、早い方(100Mb)の速度は低下してしまわないでしょうか? (訳注:b = bit です。ですから 10Mb = 10M bit となります)
始めの質問の答えは Yes です。ブリッジは 10Mb と 100Mb のセグメントとを結ぶことができます。(ブリッジの)早い方のネットワークの NIC が 100Mb で動作するものである限り、問題ありません。100Mb ネットワークのホストから 10Mb ネットワークのホストへ送られたパケットは 10Mb/s の速度しか出ませんが、100Mb ネットワークの他のトラフィックは 100Mb のまま動作しつづけます。
(訳注:つまり、100Mb から 10Mb へ投げられたパケットは、ブリッジで 10Mb へ送られる際に 10Mb で動作することになります。よって 100Mb のホスト→ブリッジの速度、及び 100Mb のホスト→ 100Mb のホストは 100Mb で動作するということです)
当文書は柴田(ひ)@福岡氏の翻訳した 1996/08/23 版を、早川が最新版(1998/09/07)の LDP で更新したものです。
日本語訳:柴田(ひ)@福岡 <shibata@opost1.netspace.or.jp> (1997/01/05) 日本語訳:早川 仁 <cz8cb01@linux.or.jp> (1999/06/26)