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/stam- pede/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-eth0 と ifcfg-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 o ``brcfg -ena''として、ブリッジ機能を有効にしましたか? (brcfg は``bridging is ENABLED'' と表示するはずです) o NIC を「無差別透過モード」にしましたか? (``ifconfig''で確認して 見てください。``PROMISC''フラグがそれぞれの NIC に表示されるはず です) o 複数のメディア(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 で更新したものです。 日本語訳:柴田(ひ)@福岡 (1997/01/05) 日本語訳:早川 仁 (1999/06/26)